Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Could someone tell me how to disable ipv6 auto-config on a specific network interface in CentOS?

The current situation is:

A PC has two network adapters eth0 and eth1 that are connecting to the same LAN, in which, IPv6 router is advertising an IPv6 prefix with NDRA (Neighbor Discovery Router Advertisements) packet. As a result, both eth0 and eth1 are configuring the IPv6 address with that prefix automatically.

But, I just want to enable ipv6 on eth1 and disable it on eth0. I've tried the following methods, but they don't work.

1. /etc/sysconfig/network


This will disable ipv6 on both eth0 and eth1.

2. /etc/sysconfig/network-scripts/ifcfg-eth0


Then, it doesn't work. I have restarted the network service already. I am a little confused about this issue. Thanks in advanced.

share|improve this question
up vote 29 down vote accepted

You can disable it from /etc/sysctl.conf with this line:

net.ipv6.conf.eth0.disable_ipv6 = 1

Take a look at /proc/sys/net/ipv6/conf/eth0. There are many options you can set in that directory, like leaving IPv6 enabled but disabling autoconf etc.

share|improve this answer
This should work, thank you very much! – Yves Messi Apr 1 '13 at 6:06
FYI for those looking to disable all, not just one interface, simply replace "eth0" with "all" – Peter Jan 20 '15 at 10:02
$ sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=1


# echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6

In order to ensure that this change persists across reboots, you'll want to add this line to your /etc/sysctl.conf file:


Note that using the /etc/sysconfig/network-scripts/ifcfg-eth0 file is non-portable.

share|improve this answer

The use of the following variables in ifcfg-eth0 or ifcfg-eth1:


Should do the trick. To reiterate:







Then make sure you restart the networking service:

% /etc/init.d/network restart

If you run ifconfig you should see inet6 on the ethernet device (either eth0 or eth1) that has ipv6 enabled.

% ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 01:26:BD:85:CA:30  
          inet addr:  Bcast:  Mask:
          inet6 addr: fe80::226:c7ff:fe85:a720/64 Scope:Link
          RX packets:2497072 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2253781 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2004576667 (1.8 GiB)  TX bytes:1296051472 (1.2 GiB)
share|improve this answer
Yes, it's a little weird. Setting "net.ipv6.conf.eth0.disable_ipv6 = 1 " is a good solution. Thanks for your answer. – Yves Messi Apr 1 '13 at 6:10
Hmmmm, didn't do squat on my system (RH 6.5 X86_64 on a virtualized environment.) Good to know those for those systems where it works, though. – luis.espinal Sep 17 '14 at 18:39

You should be root to set network parameter below:

echo 1 > /proc/sys/net/ipv6/conf/wlan0/disable_ipv6
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .