IPv6 / Axione / Ubiquiti USG

Démarré par psm, 18 Novembre 2020 à 11:45:55

« précédent - suivant »

0 Membres et 1 Invité sur ce sujet

Bon je lance ce sujet, je sais pas si ça peut aider d'autres personnes mais bon au mois ça sera la pour la postérité.

Donc mon setup est le suivant:
- client dans le 27 donc "via" Axione
- routeur USG de chez Unifi/Ubiquiti

D'après le second post du thread sur l'IPv6 chez K-net, pour Axione c'est du "simple" DHCPv6. (et en plus c'est noté stable, c'est cool).

Donc dans le contrôleur je vais éditer les infos pour le WAN comme suit (USG-WAN.png).

Mais après, bah j'ai rien:

$ show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3,
       I - ISIS, B - BGP, * - FIB route.

C>* ::1/128 is directly connected, lo
C * fe80::/64 is directly connected, eth0
C * fe80::/64 is directly connected, eth1.10
C>* fe80::/64 is directly connected, eth1
$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface    IP Address                        S/L  Description
---------    ----------                        ---  -----------
eth0         83.243.XXX.XXX/24                  u/u  WAN
eth1         10.27.1.1/24                      u/u  LAN
eth1.10      10.27.8.1/22                      u/u
eth2         -                                 A/D
lo           127.0.0.1/8                       u/u
             ::1/128


Du coup je sais pas trop par où commencer :)

Comme Drywan l'a expliqué dans le topic à côté:

CitationL'unifi envoi un DUID-LLT au lieu d'un DUID-LL en v6, il faut lui ré-écrire avec en plus la MAC que tu as cloné, sinon le DHCPv6 va t'ignorer tout simplement.

Pour voir on DUID
/opt/vyatta/sbin/dhcpv6-pd-duid.pl --action=show

Pour le modifier
/opt/vyatta/sbin/dhcpv6-pd-duid.pl --action=set --duid=00030001MAC_ADDRESS

Et après tu dump ton WAN pour voir si le DHCPv6 répond à tes demande
sudo tcpdump -i eth0 -vv ip6 |grep TA_MAC_ADDRESS

#2
Quand je teste tout ça, voilà ce que ça me donne:

Je modifie le DUID:
# /opt/vyatta/sbin/dhcpv6-pd-duid.pl --action=set --duid=00030001001e809bxxxx
#


Je check le tcpdump:
# tcpdump -i eth0 -vv ip6 |grep 001e809bxxxx
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:08:57.974828 IP6 (hlim 1, next-header UDP (17) payload length: 60) fe80::21e:80ff:fe9b:9d70.dhcpv6-client > ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 solicit (xid=98e5be (client-ID hwaddr type 1 001e809bxxxx) (IA_NA IAID:0 T1:0 T2:0) (rapid-commit) (elapsed-time 0) (option-request DNS-server DNS-search-list))
21:08:57.985705 IP6 (class 0xc0, hlim 255, next-header UDP (17) payload length: 124) fe80::427c:7dff:fe5e:ba31.dhcpv6-server > fe80::21e:80ff:fe9b:9d70.dhcpv6-client: [udp sum ok] dhcp6 advertise (xid=98e5be (IA_NA IAID:0 T1:3600 T2:5400 (IA_ADDR 2a03:4980:xxx:xxx::dd pltime:7200 vltime:10800)) (client-ID hwaddr type 1 001e809bxxxx) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (DNS-server resolver1.k-net.fr resolver2.kwaoo.net))
21:08:58.978091 IP6 (hlim 1, next-header UDP (17) payload length: 102) fe80::21e:80ff:fe9b:9d70.dhcpv6-client > ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 request (xid=d869ff (client-ID hwaddr type 1 001e809bxxxx) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (IA_NA IAID:0 T1:0 T2:0 (IA_ADDR 2a03:4980:xxx:xxx::dd pltime:7200 vltime:10800)) (elapsed-time 0) (option-request DNS-server DNS-search-list))
21:08:58.989488 IP6 (class 0xc0, hlim 255, next-header UDP (17) payload length: 133) fe80::427c:7dff:fe5e:ba31.dhcpv6-server > fe80::21e:80ff:fe9b:9d70.dhcpv6-client: [udp sum ok] dhcp6 reply (xid=d869ff (IA_NA IAID:0 T1:0 T2:0 (status-code no addresses)) (client-ID hwaddr type 1 001e809bxxxx) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (DNS-server resolver1.k-net.fr resolver2.kwaoo.net))
21:09:00.791543 IP6 (hlim 1, next-header UDP (17) payload length: 60) fe80::21e:80ff:fe9b:9d70.dhcpv6-client > ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 solicit (xid=1ff530 (client-ID hwaddr type 1 001e809bxxxx) (IA_NA IAID:0 T1:0 T2:0) (rapid-commit) (elapsed-time 0) (option-request DNS-server DNS-search-list))
21:09:00.803304 IP6 (class 0xc0, hlim 255, next-header UDP (17) payload length: 124) fe80::427c:7dff:fe5e:ba31.dhcpv6-server > fe80::21e:80ff:fe9b:9d70.dhcpv6-client: [udp sum ok] dhcp6 advertise (xid=1ff530 (IA_NA IAID:0 T1:3600 T2:5400 (IA_ADDR 2a03:4980:xxx:xxx::dd pltime:7200 vltime:10800)) (client-ID hwaddr type 1 001e809bxxxx) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (DNS-server resolver1.k-net.fr resolver2.kwaoo.net))
21:09:01.794633 IP6 (hlim 1, next-header UDP (17) payload length: 102) fe80::21e:80ff:fe9b:9d70.dhcpv6-client > ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 request (xid=c36f2 (client-ID hwaddr type 1 001e809bxxxx) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (IA_NA IAID:0 T1:0 T2:0 (IA_ADDR 2a03:4980:xxx:xxx::dd pltime:7200 vltime:10800)) (elapsed-time 0) (option-request DNS-server DNS-search-list))
21:09:01.806258 IP6 (class 0xc0, hlim 255, next-header UDP (17) payload length: 133) fe80::427c:7dff:fe5e:ba31.dhcpv6-server > fe80::21e:80ff:fe9b:9d70.dhcpv6-client: [udp sum ok] dhcp6 reply (xid=c36f2 (IA_NA IAID:0 T1:0 T2:0 (status-code no addresses)) (client-ID hwaddr type 1 001e809bxxxx) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (DNS-server resolver1.k-net.fr resolver2.kwaoo.net))
21:09:03.479053 IP6 (hlim 1, next-header UDP (17) payload length: 60) fe80::21e:80ff:fe9b:9d70.dhcpv6-client > ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 solicit (xid=48680f (client-ID hwaddr type 1 001e809bxxxx) (IA_NA IAID:0 T1:0 T2:0) (rapid-commit) (elapsed-time 0) (option-request DNS-server DNS-search-list))
21:09:03.490146 IP6 (class 0xc0, hlim 255, next-header UDP (17) payload length: 124) fe80::427c:7dff:fe5e:ba31.dhcpv6-server > fe80::21e:80ff:fe9b:9d70.dhcpv6-client: [udp sum ok] dhcp6 advertise (xid=48680f (IA_NA IAID:0 T1:3600 T2:5400 (IA_ADDR 2a03:4980:xxx:xxx::dd pltime:7200 vltime:10800)) (client-ID hwaddr type 1 001e809bxxxx) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (DNS-server resolver1.k-net.fr resolver2.kwaoo.net))
^C14 packets captured
16 packets received by filter
0 packets dropped by kernel

#


IA_ADDR 2a03:4980:xxx:xxx::dd correspond bien à l'ip6 que j'ai dans les infos de ma connections sur clients.* mais le routeur ne semble rien chopper.

En tout cas ça communique :)

Question bête : ça marche avec la KBox ?

Oui c'est comme ça que j'ai su que ça marchait.

Dans le tcpdump je vois aussi le /56 attribué:

21:57:15.242664 IP6 (class 0xc0, hlim 255, next-header UDP (17) payload length: 178) fe80::427c:7dff:fe5e:ba31.dhcpv6-server > fe80::21e:80ff:fe9b:9d70.dhcpv6-client: [udp sum ok] dhcp6 reply (xid=e58f3b (IA_NA IAID:0 T1:0 T2:0 (status-code no addresses)) (IA_PD IAID:0 T1:3600 T2:5400 (IA_PD-prefix 2a03:4980:xxx:xxxx::/56 pltime:7200 vltime:10800)) (client-ID hwaddr type 1 001e809bxxxx) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (DNS-server resolver1.k-net.fr resolver2.kwaoo.net))


#7
Du coup j'ai testé ça:
# cat /var/run/dhcp6c-eth0-pd.conf
# This file was auto-generated by /opt/vyatta/sbin/dhcpv6-pd-client.pl
# configuration sub-system.  Do not edit it.

interface eth0 {
send ia-na 1;
request domain-name-servers, domain-name;
send rapid-commit;
send ia-pd 1;
script "/opt/vyatta/sbin/ubnt-dhcp6c-script";
};

id-assoc na 1 {};

id-assoc pd 1 {
prefix ::/64 infinity;
};


Mais pas mieux
# show dhcpv6-pd log
Nov/18/2020 22:31:49: client6_recvadvert: unexpected advertise
Nov/18/2020 22:31:50: update_ia: status code for NA-1: no addresses

#8
t'as découpé le /56 reçu en plusieurs bouts pour prendre que le /64 dans ta conf DHCP ?



...
.. na 1 {};
.. pd 1 {
       prefix ::/64 infinity; <= y a deux écoles. Une avec ::64 ici pour le prefixe final, et l'autre école avec ::/56 le prefixe reçu à découper

       prefix-interface WAN {
               sla-id 0; <= la première
               sla-len 8; <= 56+8=64
       };
       prefix-interface LAN {
               sla-id 1; <= la seconde
               sla-len 8; <= 56+8=64
       };
};

Attention les routes sont pas apprises par DHCPv6 Du coup le show ipv6 route sera vide. (et les fe80::/64 bizarre) Faudra dire au routeur d'accepter les annonces RA, c'est ignoré par défaut sur les routeurs.

Mon problème là tout de suite c'est de savoir si je dois vraiment modifier des scripts dans l'OS et pas uniquement faire une config "perso" via le json.

Modifier le DUID ok, mais si je dois modifier d'autres choses, c'est le coup que chaque màj du firmware casse le truc.

Je suis pas mega calé en IPv6, donc y'a aussi des p'tites choses que je vais pas capter :)

J'aimerai bien voir une config même d'un EdgeMax pour me rendre compte déjà d'une config qui marche.

#10
Bonjour,

Donc tu devrais avoir maintenant quelques chose comme ça ?

Drywan@ubnt:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface    IP Address                        S/L  Description
---------    ----------                        ---  -----------
eth0         45.83.xxx.xxx/22                  u/u  WAN
             2a03:4980:xxx:xxxx::1/128
eth1         192.168.1.1/24                    u/u  LAN
             2a03:4980:xxx:xxxxx:xxxx:xxxx:xxxx:xxxx/64


Et vérifie bien ton DUID après avoir fait ton"set"

Drywan@ubnt:~$ /opt/vyatta/sbin/dhcpv6-pd-duid.pl --action=show
DUID 00:03:00:01:xx:xx:xx:xx:xx:xx

Alors bingo ça marche par contre, il me donne rien sur eth0:

$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface    IP Address                        S/L  Description
---------    ----------                        ---  -----------
eth0         83.243.XXX.XXX/24                  u/u  WAN
eth1         10.27.1.1/24                      u/u  LAN
eth1.10      10.27.8.1/22                      u/u
             2a03:4980:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64
eth2         -                                 A/D
lo           127.0.0.1/8                       u/u
             ::1/128


Mais ça marche bien sur mes postes sur le LAN.
J'imagine qu'il faut maintenant que j'adapte mes règles de FW, qui par défaut bloquent tout.

Ah alors en fait non, j'ai une machine qui a chopé du v6, mais après un off/on y'a plus rien, et une autre machine en fait ne chope rien.
Je retourne voir ce qu'il ne va pas.

Nettoie bien tes règles FW pour commencer et regarde si tu récupères une /128 sur ton WAN.

Normalement tu dois recevoir une /128 pour ton WAN et ensuite un préfixe /56 pour tes LAN(s).
Le routeur va attribuer une /64 par eth(x) LAN.

#14
Déterrage et hijack de topic pour ceux que ça intéresse, qui se trouvent comme moi sur Axione (27) avec un routeur OpenWRT:

Ça marche, une fois qu'on a bien tout réglé ;)

le DHCP upstream a une configuration un peu "étrange": il renvoie un prefix /56 (c'est bien) et une IP en dehors de ce prefix (jusque là pas de problème), mais ensuite il refuse d'allouer cette même addresse, ce qui perturbe beaucoup le client DHCP d'OpenWRT:

advertise:

[udp sum ok] dhcp6 advertise (xid=b435d6 (IA_NA IAID:1 T1:3600 T2:5400 (IA_ADDR 2a03:4980:120:8e4::47 pltime:7200 vltime:10800)) (IA_PD IAID:1 T1:3600 T2:5400 (IA_PD-prefix 2a03:4980:117:e500::/56 pltime:7200 vltime:10800)) (client-ID hwaddr type 1 <MACADDRESS>) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (reconfigure-accept) (DNS-server 2a03:4980::10:0:17 2a03:4980::f:0:6))


le client répond alors avec un request qui est refusé:

[udp sum ok] dhcp6 request (xid=47d8b5 (elapsed-time 0) (option-request SIP-servers-domain SIP-servers-address DNS-server DNS-search-list SNTP-servers NTP-server AFTR-Name opt_67 opt_94 opt_95 opt_96) (client-ID hwaddr type 1 <MACADDRESS>) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (reconfigure-accept) (Client-FQDN) (IA_NA IAID:1 T1:0 T2:0 (IA_ADDR 2a03:4980:120:8e4::47 pltime:7200 vltime:10800)) (IA_PD IAID:1 T1:0 T2:0 (IA_PD-prefix 2a03:4980:117:e500::/56 pltime:7200 vltime:10800)))
[udp sum ok] dhcp6 reply (xid=47d8b5 (IA_NA IAID:1 T1:0 T2:0 (status-code NoAddrsAvail)) (IA_PD IAID:1 T1:3600 T2:5400 (IA_PD-prefix 2a03:4980:117:e500::/56 pltime:7200 vltime:10800)) (client-ID hwaddr type 1 <MACADDRESS>) (server-ID hwaddr/time type 1 time 565959855 aa00005c8993) (reconfigure-accept) (DNS-server 2a03:4980::10:0:17 2a03:4980::f:0:6))


La solution consiste donc à ne pas demander d'IP pour le WAN, mais uniquement le PD. Ensuite, on délègue un /64 sur le LAN, et tout "tombe en marche".

Les bouts de config qui vont bien:

/etc/config/network:

config interface 'lan'
        [la config v4 qui va bien]
option ip6assign '64'

config interface 'wan6'
option ifname '@wan'
option proto 'dhcpv6'
option reqaddress 'none'
option reqprefix 'auto'


/etc/config/dhcp:

config dhcp 'lan'
option interface 'lan'
option start '20'
option limit '50'
option leasetime '6h'
option ra 'server'
option dhcpv6 'server'
option ra_management '1'


Dans cette situation, l'interface WAN n'a pas d'ipv6 publique, uniquement du link local, c'est normal et ça fonctionne très bien. Le routeur et les postes sur le LAN peuvent communiquer en v6 (le routeur utilise l'IP assignée à l'interface LAN).

Et voila!