IP-адрес без сохранения состояния назначается вместо адреса DHCP

654
ts90

Вот информация:

Host link IP: fe80::9eec:b32d:855c:5589 Server link IP: fe80::f03c:91ff:fe11:96c4  Host global IP: 2601:aaaa:bbbb:cccc:1854:46d6:c2f9:e727 (Ugh!) Server global IP: 2601:aaaa:bbbb:cccc::1 

Сервер направил блок на 2601: aaaa: bbbb: cccc :: / 64

DHCP пытается назначить этот IP-адрес узлу: 2601: aaaa: bbbb: cccc: 1000 :: fa8d

Хост должен быть ОБЩИМ: на хосте НЕТ пользовательской конфигурации сети в качестве требования. Предполагается, что все хосты являются компьютерами, которые есть у всех, и они подключают их, и они должны работать без каких-либо настроек. Это означает, что dhclient НИКОГДА не должен использоваться на клиенте IPv6: все должно быть сделано через SLAAC или SLAAC с состоянием (что я пытаюсь выполнить).

Хост отлично работает с браузером по умолчанию IPv6 и не имеет проблем с охватом всех сайтов, будь то IPv6 или IPv4.

Хост Сеть:

2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 28:d2:44:6b:bf:9f brd ff:ff:ff:ff:ff:ff inet 172.21.0.102/24 brd 172.21.0.255 scope global dynamic noprefixroute enp0s25 valid_lft 39535sec preferred_lft 39535sec inet6 2601:aaaa:bbbb:cccc:ec25:e54d:4255:6c76/64 scope global temporary dynamic  valid_lft 86199sec preferred_lft 14199sec inet6 2601:aaaa:bbbb:cccc:1854:46d6:c2f9:e727/64 scope global dynamic mngtmpaddr noprefixroute  valid_lft 86199sec preferred_lft 14199sec inet6 fe80::9eec:b32d:855c:5589/64 scope link noprefixroute  valid_lft forever preferred_lft forever 

Конфигурация сервера radvd:

root@li336-239:/var# cat /etc/radvd.conf interface tap0 { AdvSendAdvert on; AdvManagedFlag on; AdvOtherConfigFlag on; prefix 2601:aaaa:bbbb:cccc::/64 { AdvOnLink on; AdvAutonomous on; }; }; 

Хост и сервер могут видеть друг друга без проблем перед глобальным назначением IP:

Server: ping6 -c2 fe80::9eec:b32d:855c:5589%tap0 --> Success Host: ping6 -c2 fe80::f03c:91ff:fe11:96c4%enp0s25 --> Success 

Хост и Сервер прекрасно видят друг друга как соседей с их ссылочными IP-адресами и глобальными IP-адресами:

Хост / Сервер: ip -6 lie -> успешно выводит все

ip6tables: все цепочки FORWARD и INPUT не ограничены: пакеты не отброшены

DHCP-сервер, когда хост физически подключен к сети:

10:16:39 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700 10:16:39 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds 10:16:39 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546 10:16:40 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700 10:16:40 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds 10:16:40 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546 10:16:42 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700 10:16:42 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds 10:16:42 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546 10:16:46 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700 10:16:46 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds 10:16:46 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546 10:16:55 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700 10:16:55 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds 10:16:55 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546 10:17:13 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700 10:17:13 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds 10:17:13 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546 

... но хост, кажется, назначает себя 2601: aaaa: bbbb: cccc: 1854: 46d6: c2f9: e727 (каждый раз отличается), что было бы замечательно, если бы я не хотел, чтобы это было с состоянием.

Хост при физическом подключении:

root@some-computer:~# ip monitor 2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default  link/ether 28:d2:44:6b:bf:9f brd ff:ff:ff:ff:ff:ff 2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default  link/ether 28:d2:44:6b:bf:9f brd ff:ff:ff:ff:ff:ff Deleted ff02::1:ff5c:5589 dev enp0s25 lladdr 33:33:ff:5c:55:89 NOARP Deleted ff02::2 dev enp0s25 lladdr 33:33:00:00:00:02 NOARP Deleted fe80::f03c:91ff:fe11:96c4 dev enp0s25 lladdr f2:3c:91:11:96:c4 router STALE Deleted ff02::fb dev enp0s25 lladdr 33:33:00:00:00:fb NOARP Deleted ff02::1:2 dev enp0s25 lladdr 33:33:00:01:00:02 NOARP Deleted ff02::16 dev enp0s25 lladdr 33:33:00:00:00:16 NOARP Deleted ff02::1:ff55:6c76 dev enp0s25 lladdr 33:33:ff:55:6c:76 NOARP Deleted ff02::1:fff9:e727 dev enp0s25 lladdr 33:33:ff:f9:e7:27 NOARP ff00::/8 dev enp0s25 table local metric 256 pref medium 2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default  link/ether 28:d2:44:6b:bf:9f brd ff:ff:ff:ff:ff:ff Deleted ff00::/8 dev enp0s25 table local metric 256 pref medium ff00::/8 dev enp0s25 table local metric 256 pref medium fe80::/64 dev enp0s25 proto kernel metric 256 pref medium 2: enp0s25 inet 172.21.0.102/24 brd 172.21.0.255 scope global dynamic noprefixroute enp0s25 valid_lft 39738sec preferred_lft 39738sec local 172.21.0.102 dev enp0s25 table local proto kernel scope host src 172.21.0.102  broadcast 172.21.0.255 dev enp0s25 table local proto kernel scope link src 172.21.0.102  broadcast 172.21.0.0 dev enp0s25 table local proto kernel scope link src 172.21.0.102  172.21.0.0/24 dev enp0s25 proto kernel scope link src 172.21.0.102 metric 100  default via 172.21.0.1 dev enp0s25 proto dhcp metric 20100  ipv4 dev enp0s25 rp_filter loose  172.21.0.1 dev enp0s25 lladdr 00:e0:4c:68:3b:72 REACHABLE 169.254.0.0/16 dev enp0s25 scope link metric 1000  10.16.0.1 dev enp0s25 lladdr f2:3c:91:11:96:c4 REACHABLE 2: enp0s25 inet6 fe80::9eec:b32d:855c:5589/64 scope link  valid_lft forever preferred_lft forever local fe80::9eec:b32d:855c:5589 dev enp0s25 table local proto kernel metric 0 pref medium 2: enp0s25 inet6 fe80::9eec:b32d:855c:5589/64 scope link noprefixroute  valid_lft forever preferred_lft forever Deleted fe80::/64 dev enp0s25 proto kernel metric 256 pref medium fe80::/64 dev enp0s25 proto kernel metric 256 pref medium fe80::/64 dev enp0s25 proto kernel metric 100 pref medium 2: enp0s25 inet 172.21.0.102/24 brd 172.21.0.255 scope global dynamic noprefixroute enp0s25 valid_lft 39736sec preferred_lft 39736sec default via 172.21.0.1 dev enp0s25 proto dhcp metric 100  Deleted default via 172.21.0.1 dev enp0s25 proto dhcp metric 20100  fe80::f03c:91ff:fe11:96c4 dev enp0s25 lladdr f2:3c:91:11:96:c4 router STALE 2: enp0s25 inet6 fe80::9eec:b32d:855c:5589/64 scope link noprefixroute  valid_lft forever preferred_lft forever 2601:aaaa:bbbb:cccc::/64 dev enp0s25 proto ra metric 100 pref medium default via fe80::f03c:91ff:fe11:96c4 dev enp0s25 proto ra metric 100 pref medium [!!HERE--->] 2: enp0s25 inet6 2601:aaaa:bbbb:cccc:ec25:e54d:4255:6c76/64 scope global temporary dynamic  valid_lft 86399sec preferred_lft 14399sec local 2601:aaaa:bbbb:cccc:ec25:e54d:4255:6c76 dev enp0s25 table local proto kernel metric 0 pref medium [!!HERE--->] 2: enp0s25 inet6 2601:aaaa:bbbb:cccc:1854:46d6:c2f9:e727/64 scope global dynamic mngtmpaddr noprefixroute  valid_lft 86399sec preferred_lft 14399sec [!!HERE--->] local 2601:aaaa:bbbb:cccc:1854:46d6:c2f9:e727 dev enp0s25 table local proto kernel metric 0 pref medium 
4

1 ответ на вопрос

5
grawity

хост, кажется, назначает себя 2601: aaaa: bbbb: cccc: 1854: 46d6: c2f9: e727

Ваша реклама маршрутизатора имеет AdvAutonomous on, что говорит им, что конфигурация без сохранения состояния поддерживается в сети. Если вы не хотите использовать автоконфигурирование автономного адреса, не включайте автоконфигурирование автономного адреса.

Это применяется, даже если RA имеют AdvManaged on, и даже если хосты получают объявление DHCPv6. (RFC 4862: «Следует отметить, что хост может использовать как автоконфигурацию адреса без сохранения состояния, так и DHCPv6 одновременно».)

Это означает, что dhclient НИКОГДА не должен использоваться на клиенте IPv6: все должно быть сделано через SLAAC или SLAAC с состоянием (что я пытаюсь выполнить).

Не существует такой вещи, как «SLAAC с состоянием» (на самом деле «SL» означает «без гражданства»).

Самое большее, объявления SLAAC могут побудить клиента использовать DHCPv6, но они не могут заставить клиента использовать DHCPv6. Например:

  • Linux по умолчанию выполняет SLAAC в ядре, и ядро не будет автоматически разветвляться DHCP-клиентом, ни, dhclient -6ни, dhcpcd -6ни wide-dhcp6c. Это происходит только в том случае, если пользовательское пространство, которое понимает этот флаг (например, NetworkManager или systemd-networkd), уже запущено.

  • В dhclientбазе FreeBSD отсутствует поддержка DHCPv6; двойная версия в портах.

  • OpenBSD не имеет клиента DHCPv6 в базе (он должен быть установлен через порты).

  • Android вообще не поддерживает DHCPv6.

Кажется, ваш клиент работает под управлением NetworkManager, но даже в этом случае нет никакой гарантии, что он не потребует ручной настройки в зависимости от того, какая у него версия и на каких внешних клиентах DHCPv6 установлены. (Если dhcp=internalвыбрано, текущие версии поддерживают только DHCPv4.)

Также возможно, что клиенты будут пытаться использовать DHCPv6 только в том случае, если автономная настройка отключена (см. 1-ю часть ответа), но в результате IPv6 будет недоступен для клиентов, у которых отсутствует DHCPv6.


Если ваша цель состоит в том, чтобы иметь подотчетность, я бы вместо этого вел журнал IPv6-адресов для ассоциаций MAC-адресов. Это может быть реализовано с помощью мониторинга Neighbor Advertisements или отслеживания ND-кэша маршрутизатора ( ip -6 neigh), и преимущество заключается в том, что он будет работать независимо от механизма - SLAAC, расширение конфиденциальности, DHCPv6, DHCPv4, даже статически настроенные адреса будут отслеживаться.

Все, что вы говорите, имеет смысл. При отключении AdvAutidual клиент (по крайней мере, клиент Ubuntu) не получает назначения IP (даже если сервер DHCP все еще получает удар). Итак, это: из-за другой проблемы с сервером на моей стороне или это просто характер зверя с тем, как различные клиенты ведут себя без дополнительной настройки? Если последнее, я подхожу к вашему предложению о сохранении ассоциаций MAC - было бы неплохо иметь возможность динамически применять правила маршрутизации в ip6tables, основанные на этих ассоциациях, что на самом деле является моей целью попытаться сохранить состояние. ts90 5 лет назад 0
Просмотрите системные журналы клиента Ubuntu, чтобы выяснить, что происходит. Я полагаю, что ip6tables могут совпадать по MAC-адресу источника, или вы можете разделить сеть на несколько подсетей, каждая со своими правилами ... grawity 5 лет назад 0

Похожие вопросы