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

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

在 CentOS 6.4 中,在虚拟接口上使用“ifdown”时,物理接口上配置的 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 

当所有接口都处于开启状态时,配置工作正常。但是,当我关闭其中一个虚拟接口时:

/sbin/ifdown eth0:29

eth0 上的 IPv6 次要设备已被删除!

# 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 地址?

答案1

不要使用这些旧的已弃用的别名接口。相反,将所有 IP 地址添加到eth0

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

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

等等。

相关内容