В 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
Также существует несколько виртуальных интерфейсов, например ifcfg-eth0: 29 определены для дополнительных адресов IPv4:
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
Дополнительные IPv6 на eth0 удалены!
# 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="..."
и так далее.