IP-адреса без статусу замість адреси DHCP


4

Ось інформація:

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 намагається призначити цей ІС хосту: 2601: aaaa: bbbb: cccc: 1000 :: fa8d

Хост повинен бути GENERIC: Хост не має спеціальної конфігурації мережі, як вимога. Передбачається, що всі хости є комп'ютерами, які кожен має, і вони підключаються, і вони повинні працювати без будь-яких налаштувань. Це означає, що dhclient НІКОЛИ не повинен бути використаний на клієнті IPv6: все повинно бути зроблено через SLAAC або stateful 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 neigh - & gt; успішно перераховує все

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 (відрізняється кожен раз) замість того, що було б чудово, якщо я не хочу, щоб це було stateful.

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

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

Відповіді:


5

хост здається присвоїти себе 2601: aaaa: bbbb: cccc: 1854: 46d6: c2f9: e727

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

Це застосовується, навіть якщо РА мають 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) вже запущено.

  • FreeBSD dhclient у базі не вистачає підтримки DHCPv6; подвійна версія знаходиться в портах.

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

  • Android взагалі не підтримує DHCPv6.

Ваш клієнт, здається, працює під керуванням NetworkManager, але навіть тоді не існує гарантії, що він не вимагатиме ручної конфігурації в залежності від версії, на якій він знаходиться, і від того, на яких зовнішніх DHCPv6 клієнтах встановлено. (Якщо dhcp=internal вибрано, поточні версії підтримують лише DHCPv4.)

Можливо також, що клієнти будуть намагатися DHCPv6, якщо автономна конфігурація вимкнено (див. першу частину відповіді), але потім ви отримаєте IPv6 непридатним для клієнтів, які не мають DHCPv6.


Якщо вашою метою є підзвітність, я б замість того, щоб вести протокол адреси IPv6 до асоціацій MAC-адрес. Це може бути реалізовано шляхом моніторингу оголошень сусідів або шляхом перегляду кеш-пам'яті ND маршрутизатора ( ip -6 neigh ), а перевага полягає в тому, що вона буде працювати незалежно від механізму - відслідковуватиметься SLAAC, privacy-extension, DHCPv6, DHCPv4, навіть статично налаштовані адреси.


Все, що ви говорите, має сенс. Встановлення AdvAutonomous на off призводить до того, що клієнт (принаймні клієнт Ubuntu) не отримує жодного IP-призначення (навіть якщо DHCP-сервер все ще вражається). Отже: чи це через іншу проблему на моїй стороні, чи це тільки природа звіра з тим, як різні клієнти поводяться без додаткової конфігурації? Якщо остання, я граю за вашою пропозицією зберегти асоціації MAC - було б приємно мати можливість динамічно застосовувати правила маршрутизації в ip6tables на основі цих асоціацій, що насправді є моєю метою намагатися бути державою.
ts90

Перегляньте системні журнали клієнта Ubuntu, щоб з'ясувати, що відбувається. Я вважаю, що ip6tables може збігатися за MAC-адресою джерела, хоча ви можете розділити мережу на кілька підмереж, кожен зі своїми правилами ...
grawity
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.