IP stateless assegnato invece dell'indirizzo DHCP


4

Ecco le informazioni:

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

Il server ha instradato il blocco per 2601: aaaa: bbbb: cccc :: / 64

DHCP tenta di assegnare questo IP all'host: 2601: aaaa: bbbb: cccc: 1000 :: fa8d

L'host deve essere GENERICO: l' host non ha una configurazione di rete personalizzata come requisito. Si presume che tutti gli host siano computer che chiunque possiede e li collegano e dovrebbero funzionare senza personalizzazioni. Ciò significa che dhclient non dovrebbe MAI essere utilizzato su un client IPv6: tutto dovrebbe essere fatto tramite SLAAC o SLAAC con stato (cosa sto cercando di realizzare).

L'host funziona alla grande con il browser predefinito su IPv6 e non ha problemi a raggiungere tutti i siti sia IPv6 che IPv4.

Hosting Networking:

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

Configurazione radvd del server:

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;
    };
};

L'host e il server possono vedersi senza problemi prima dell'assegnazione IP globale:

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

Host e Server si vedono perfettamente vicini con i loro IP di collegamento e i loro IP globali:

Host / Server: ip -6 neigh -> elenca correttamente tutto

ip6tables: tutte le catene FORWARD e INPUT non sono limitate: nessun pacchetto eliminato

Server DHCP quando l'host passa fisicamente online:

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

... ma l'host sembra assegnarsi 2601: aaaa: bbbb: cccc: 1854: 46d6: c2f9: e727 (ogni volta diverso), il che sarebbe meraviglioso se non volessi che questo fosse stato.

Host su connessione fisica:

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

Risposte:


5

l'host sembra assegnarsi 2601: aaaa: bbbb: cccc: 1854: 46d6: c2f9: e727

Gli annunci del tuo router hanno AdvAutonomous on, che dice loro che la configurazione senza stato è supportata sulla rete. Se non si desidera la configurazione automatica dell'indirizzo autonomo, non abilitare la configurazione automatica dell'indirizzo autonomo.

Questo vale anche se le RA hanno AdvManaged on, e anche se gli host ricevono un annuncio DHCPv6. (RFC 4862: "Va notato che un host può utilizzare contemporaneamente sia la configurazione automatica dell'indirizzo stateless che DHCPv6.")

Ciò significa che dhclient non dovrebbe MAI essere utilizzato su un client IPv6: tutto dovrebbe essere fatto tramite SLAAC o SLAAC con stato (cosa sto cercando di realizzare).

Non esiste "SLAAC stateful" (in effetti "SL" sta per "apolide").

Al massimo, gli annunci SLAAC possono richiedere al client di utilizzare DHCPv6, ma non possono forzare il client a eseguire DHCPv6. Per esempio:

  • Per impostazione predefinita Linux esegue SLAAC nel kernel e il kernel non eseguirà automaticamente il fork di un client DHCP, dhclient -6dhcpcd -6né né né wide-dhcp6c. Ciò accade solo se lo spazio utente che potrebbe capire che flag (ad esempio NetworkManager o systemd-networkd) è già in esecuzione.

  • FreeBSD dhclientin base non ha il supporto DHCPv6; la versione doppia è nelle porte.

  • OpenBSD non ha client DHCPv6 in base (uno deve essere installato tramite le porte).

  • Android non supporta affatto DHCPv6.

Sembra che il tuo client stia eseguendo NetworkManager, ma anche in questo caso, non vi è alcuna garanzia che non richiederà la configurazione manuale a seconda della versione e dei client DHCPv6 esterni installati. (Se dhcp=internalselezionato, le versioni correnti supportano solo DHCPv4.)

È anche possibile che i client tentino DHCPv6 solo se la configurazione autonoma è disabilitata (vedere la prima parte della risposta), ma alla fine si otterrà IPv6 inutilizzabile dai client privi di DHCPv6.


Se il tuo obiettivo è quello di avere la responsabilità, terrei invece un registro degli indirizzi IPv6 alle associazioni di indirizzi MAC. Questo può essere implementato monitorando Neighbor Ads o guardando la cache ND del router ( ip -6 neigh), e il vantaggio è che funzionerà indipendentemente dal meccanismo: verranno monitorati SLAAC, estensione della privacy, DHCPv6, DHCPv4, anche indirizzi configurati staticamente.


Tutto ciò che stai dicendo ha un senso. Se si disattiva AdvAutonomous, il client (almeno il client Ubuntu) non ottiene alcuna assegnazione IP (anche se il server DHCP viene ancora colpito). Quindi: questo è dovuto a un altro problema del server dalla mia parte o è solo la natura della bestia con il comportamento dei vari client senza ulteriore configurazione? In quest'ultimo caso, sono d'accordo con il tuo suggerimento di mantenere le associazioni MAC: sarebbe bello poter applicare dinamicamente le regole di routing in ip6tables basate su queste associazioni, il che è davvero il mio punto di cercare di essere con stato.
ts90,

Guarda nei log di sistema del client Ubuntu per capire cosa sta succedendo. Credo che ip6tables possa corrispondere per indirizzo MAC di origine, o potresti voler dividere la rete in più sottoreti, ognuna con le sue regole ...
Grawity
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.