CentOS,虚拟接口ifdown删除物理接口上的IPv6地址

在CentOS 6.4中,在虚拟接口上使用“ifdown”时,物理接口上configuration的IPv6地址也会被删除。 我希望只有虚拟接口被改变。

如何防止虚拟接口上的“ifdown”影响物理接口上的IPv6地址?

我们使用一个物理网卡和多个虚拟接口运行CentOS 6.4服务器。 同样,我们有多个IPv6地址绑定到物理接口。

例如,/ etc / sysconfig / network-scripts / ifcfg-eth0是:

DEVICE=eth0 IPV6_DEFAULTGW="AAAA:BBBB:CCCC:D::1" IPV6INIT="yes" USERCTL="no" DNS2="8.8.4.4" DNS1="8.8.8.8" IPADDR="xx.x.xxx.201" PRIMARY="yes" NETMASK="255.255.255.192" BOOTPROTO="static" IPV6ADDR_SECONDARIES="AAAA:BBBB:CCCC:D::202 AAAA:BBBB:CCCC:D::203" IPV6ADDR="AAAA:BBBB:CCCC:D::201" ONBOOT="yes" 

并从ifconfig输出:

 # ifconfig eth0 eth0 Link encap:Ethernet HWaddr D4:AE:52:B4:AF:8C inet addr:xx.x.xxx.201 Bcast:xx.x.xxx.255 Mask:255.255.255.192 inet6 addr: AAAA:BBBB:CCCC:D::201/64 Scope:Global inet6 addr: AAAA:BBBB:CCCC:D::202/64 Scope:Global inet6 addr: AAAA:BBBB:CCCC:D::203/64 Scope:Global inet6 addr: fe80::d6ae:52ff:feb4:af8c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:607986 errors:0 dropped:0 overruns:0 frame:0 TX packets:244764 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:99225727 (94.6 MiB) TX bytes:40528574 (38.6 MiB) Interrupt:36 Memory:da000000-da012800 

还有多个虚拟接口,例如为额外的IPv4地址定义ifcfg-eth0:29:

 DEVICE=eth0:29 USERCTL="no" IPADDR="xx.x.xxx.202" NETMASK="255.255.255.192" BOOTPROTO="static" ONBOOT="yes" 

和ifconfig输出:

 # ifconfig eth0:29 eth0:29 Link encap:Ethernet HWaddr D4:AE:52:B4:AF:8C inet addr:xx.x.xxx.202 Bcast:xx.x.xxx.255 Mask:255.255.255.192 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:36 Memory:da000000-da012800 

当所有接口都启动时,configuration工作正常。 但是,当我打倒一个虚拟接口时:

 /sbin/ifdown eth0:29 

eth0上的IPv6 seconaries被删除了!

 # ifconfig eth0 eth0 Link encap:Ethernet HWaddr D4:AE:52:B4:AF:8C inet addr:xx.x.xxx.201 Bcast:xx.x.xxx.255 Mask:255.255.255.192 inet6 addr: fe80::d6ae:52ff:feb4:af8c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:617867 errors:0 dropped:0 overruns:0 frame:0 TX packets:249076 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:100506865 (95.8 MiB) TX bytes:41031979 (39.1 MiB) Interrupt:36 Memory:da000000-da012800 

经过一番调查,我发现在/ etc / sysconfig / network-scripts / ifdown-ipv6中,给定的设备名称(eth0:29)被缩短了(对eth0),在脚本“ipv6_cleanup_device”的末尾被调用从物理接口中删除所有的ipv6地址,而不是虚拟的(没有的)。

如何防止“ifdown eth0:29”在物理接口上修改IPv6地址?

不要使用这些旧的不推荐使用的别名界面。 相反,将所有IP地址添加到eth0

编辑/etc/sysconfig/network-scripts/ifcfg-eth0并添加地址:

 IPADDR2="xx.x.xxx.202" NETMASK2="255.255.255.192" IPADDR3="..." 

等等。