Вопрос или проблема
Я пытаюсь установить сервер IPv6 с CentOS 7.
Я просто хочу добавить статический IP 1000::206/64 на этот интерфейс.
Вот конфигурация /etc/sysconfig/network-scripts/ifcfg-enp0s3
:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=0bfd1001-00e4-4aca-8738-789626fe649a
DEVICE=enp0s3
ONBOOT=yes
IPV6ADDR=1000::206/64
IPV6_PEERROUTES=no
После перезагрузки и проверки журналов с помощью journalctl
, он сообщает:
устройство (enp0s3): linklocal6: не удалось сгенерировать адрес: Слишком много коллизий DAD
Запустите команду:
ip -6 a
Кажется, что все адреса IPv6 находятся в состоянии “tentative”:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 1000::206/64 scope global tentative dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::67a3:6066:8dd:128f/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::79f7:2dc9:2a7e:1f81/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::389b:a8f:3d5a:8f46/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
Есть 3 локальных адреса с префиксом fe80
. journalctl
показывает журнал:
устройство (enp0s3): ipv6: проверка дублирования адреса не удалась для fe80::389b:a8f:3d5a:8f46/64 lft forever pref forever lifetime 2-0[4294967295,4294967295] dev 2 flags tentative,permanent,0x8 src kernel address
устройство (enp0s3): ipv6: проверка дублирования адреса не удалась для fe80::79f7:2dc9:2a7e:1f81/64 lft forever pref forever lifetime 3-0[4294967295,4294967295] dev 2 flags tentative,permanent,0x8 src kernel address
устройство (enp0s3): ipv6: проверка дублирования адреса не удалась для fe80::67a3:6066:8dd:128f/64 lft forever pref forever lifetime 3-0[4294967295,4294967295] dev 2 flags tentative,permanent,0x8 src kernel address
Таким образом, NetworkManager пытался 3 раза получить новый локальный адрес, но неудачно.
В этой сети только 2 элемента. Один из них это CentOS7, а другой это хостовая машина виртуальной машины. Хостовая машина на Windows 7 и подключена к коммутатору Cisco с помощью кабеля. Больше никаких компьютеров к этому коммутатору не подключено.
Я пытался установить Ubuntu или Arch Linux или CentOS 6 с помощью Virtual Box, проблем не было.
Я также пытался CentOS 7 и VMware, также все работало.
Проблемы только с CentOS 7 и VirtualBox.
Я ничего не делал, кроме изменения конфигурации ifcfg-enp0s3
.
Кстати, IPv4 с DHCP или фиксированным IP на enp0s3 работает хорошо.
Заменил Virtual Box на старую версию 4.30, проблема исчезла.
Последняя версия CentOS 7 выпущена в августе 2017 года, Virtual Box v5.2 выпущен в январе 2018 года. Возможно, есть некоторые проблемы с совместимостью, я предполагаю.
Ответ или решение
Вопрос о "слишком большом количестве столкновений DAD" (Duplicate Address Detection) при использовании CentOS 7 в VirtualBox требует детального рассмотрения проблемы, связанной с конфигурацией IPv6.
Теория
Когда устройство подключается к сети, оно должно убедиться, что используемый им IPv6-адрес уникален, и для этой цели проводится процесс, называемый обнаружением дубликатов адресов (DAD). Реализуя DAD, система проверяет наличие на сети других устройств с таким же адресом. Если обнаруживается дубликат, система пытается сгенерировать новый адрес.
Пример
В данном случае наблюдается, что сеть не может пройти процесс DAD, инициализируемый для IPv6 на интерфейсе enp0s3
, и в результате IP-адреса находятся в состоянии "tentative" с пометкой "dadfailed". Это указывает на то, что система не смогла доказать уникальность адреса в сети или столкнулась с ошибкой в процессе проверки.
Замечено также, что это происходит только в сочетании CentOS 7 и более новой версии VirtualBox, так как при использовании более ранней версии VirtualBox или других систем (Ubuntu, Arch Linux, CentOS 6) проблема не возникает. Это указывает на вероятность проблем совместимости.
Применение
Решение проблемы может быть связано с несколькими аспектами:
-
Совместимость программного обеспечения: Указано, что возврат к более ранней версии VirtualBox снял проблему. Это может означать, что в более новой версии VirtualBox реализованы изменения или баги, которые вызывают проблемы с сетевой конфигурацией CentOS 7. Рассмотрите возможность использования надежной версии VirtualBox (например, 4.30) для гарантии стабильности сети.
-
Конфигурация сети: Несмотря на указанную конфигурацию, убедитесь в её правильности и целостности. Измените или протестируйте другие конфигурационные параметры, такие как
IPV6_ADDR_GEN_MODE
,BOOTPROTO
, или отключите IPv6 для проверки, не возникает ли конфликтов. -
Обновление и исправление системы: Убедитесь, что использована самая последняя и стабильная версия CentOS 7 с применением всех обновлений и исправлений безопасности, так как они могут содержать патчи для коррекции известных багов.
-
Изоляция проблемы: Попробуйте проверить конфигурацию на альтернативном гипервизоре или физической машине, чтобы больше понять природу проблемы. Это поможет выявить, в чем именно заключается несовместимость или ошибка.
Исследуя эти аспекты, вы сможете лучше раскрыть и решить проблему столкновения DAD. Определение взаимосвязи между версией VirtualBox и корректной работой CentOS 7 остается критически важным шагом в решении этой специфической сетевой проблемы.