Auteur Sujet: SFR IPv6 sur NB6v / Edgerouter  (Lu 38556 fois)

0 Membres et 1 Invité sur ce sujet

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
SFR IPv6 sur NB6v / Edgerouter
« Réponse #24 le: 01 juillet 2014 à 19:22:27 »
Comment tu règles le routage de retour ?  ca semble coincé sur le flux de retour on dirait du moins.
c-a-d comment la NB6v sait que pour atteindre (en v6) une des machines sur ton LAN elle doit passer par l'ERL ? ( un ping passe dans le sens lan->ERL->NB6v->Internet mais les paquets de retour doivent coincer : internet->NB6v->"heu comment je sais que pour atteindre X je dois envoyer sur l'ERL"):
en V4 ce genre de truc est impossible avec les box des FAI si on a pas moyen d'ajouter une route de retour dans la box (je parle pas de NAT, juste de cascader 1 routeur derriere une box vers un autre LAN privé par exemple).
Donc soit la NB6v permet d'ajouter des routes , soit il faut lui dire peut-etre avec un RA v6: il faut que l'ERL annonce sur sa patte WAN qu'il est la route pour le subnet de ton LAN de son autre patte. Si et seulement la NB6v accepte ces messages alors ca peut marcher. Pas sur que ca marche donc.

enfin c'est mon avis rapide comme ca, j'ai pas encore v6 qui marche chez moi et mon ERL est encore dans le carton :p



kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
SFR IPv6 sur NB6v / Edgerouter
« Réponse #25 le: 01 juillet 2014 à 19:55:01 »
on me signale et autant pour moi concernant v4, la NB6v permet d'ajouter des routes . c'est bien la seule non ?

effectivement sur http://192.168.1.1/network/route

n'ayant pas v6 sur ma NB6v je ne vois si ca permet aussi d'ajouter des routes pour v6. si c'est le cas ca résoudra ton probleme.


yrousse

  • Expert
  • Abonné Bbox fibre
  • *
  • Messages: 181
  • FTTH Bouygues Telecom 1Gbps sur Paris 18ème
SFR IPv6 sur NB6v / Edgerouter
« Réponse #26 le: 01 juillet 2014 à 23:38:58 »
L'ajout des routes sur la NB6v: en IPv4 seulement. Et en IPv6, on a un mécanisme sur ICMPv6 et Neighbors Discovery qui est censé faire le job de manière "automatique".

Il semblerait que le "problème" provienne du fait que la Static route de la NB6v vers ses clients LAN soit sur /64 au lieu du /56, du coup un subnet propre à ton EdgeRouter ne sera pas pris en compte. Ou bien c'est le paramètre on-link dans le router-advert de la box. Même punition.
J'avoue que je suis à la limite de ma compréhension des mécanismes propres à IPv6.

J'attend d'en savoir plus pour tirer des conclusions...
Au pire, il y a peut-être une solution avec un Proxy NDP mais encore faut-il que je comprenne comment je peux le faire fonctionner...

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
SFR IPv6 sur NB6v / Edgerouter
« Réponse #27 le: 03 juillet 2014 à 00:40:01 »
J'ai toujours pas v6 chez moi mais je continu a 'analyser' comment marche la NB6.

J"ai trouvé ca dans le fichier /etc/dhcp/ipv6.script du firmware de la NB6v:

        # SFR provide ::/56
        # first  ::/64 is allocated to lan. (private lan)
        #        advertise by radvd and protected by firewall
        # second ::/64 is allocated to lan. (dmz)
        #        NOT advertise and NOT protected by firewall
        local lan_net=$(ipv6_local_subnet ${prefix_iapd} 0)
        local dmz_net=$(ipv6_local_subnet ${prefix_iapd} 1)

J'ai pas encore analyser ce ficher en détail pour comprendre ce qu'il fait mais cette partie peut peut-etre t'aider: essais en te mettant en dmz (:2::/64 du /56).

Voila le fichier complet :
#!/bin/sh

ipv6_local_subnet() {
local prefix=$1
local subnet=$2
local subnet_prefix=$(echo $prefix | awk -F\: '{print $4}')

subnet_prefix=0x${subnet_prefix}
subnet_prefix=$((${subnet_prefix} + ${subnet}))
subnet_prefix=$(printf %x ${subnet_prefix})

echo ${prefix} | awk -F\: -v i=${subnet_prefix} '{print $1":"$2":"$3":"i"::1/64"}'
}

dhcp6_setup() {
local prefix_iapd=$(echo "${new_prefix}"|awk -F/ '{print $1}')
local lan_ifname=$(status get lan_ifname)
local net_ipv6_ifname=$(status get net_ipv6_ifname)
local net_ipv6_ipaddr=$(echo ${prefix_iapd} | awk -F :: '{print $1"::1/56"}')

if [ -z "${new_prefix}" ]; then
logger -s -t "dhcp6c[$$]" "${REASON} no prefix"
exit 1;
fi

# router
sysctl -w net.ipv6.conf.${net_ipv6_ifname}.accept_ra=2

# SFR provide ::/56
# first  ::/64 is allocated to lan. (private lan)
#        advertise by radvd and protected by firewall
# second ::/64 is allocated to lan. (dmz)
#        NOT advertise and NOT protected by firewall
local lan_net=$(ipv6_local_subnet ${prefix_iapd} 0)
local dmz_net=$(ipv6_local_subnet ${prefix_iapd} 1)
ip6tables -A FORWARD -j LAN_FORWARD -o ${lan_ifname} -d ${lan_net}
ip -6 addr flush dev ${lan_ifname} scope global
ip -6 addr add ${lan_net} dev ${lan_ifname}
ip -6 route add ${dmz_net} dev ${lan_ifname}

status set net_ipv6_ipaddr "${net_ipv6_ipaddr}"
status set net_ipv6_prefix "${new_prefix}"

# status set net_ipv6_dns ""

/etc/init.d/hosts restart
/etc/init.d/radvd restart

if [ "$(status get net_ipv6_status)" != "up" ]; then
logger -s -t "IPv6" -p local1.info "DHCP ANSWER [${REASON} ${new_prefix}]"
status set net_ipv6_status "up"
event notify "ipv6-up"
fi
}

dhcp6_deconfig() {
local lan_ifname=$(status get lan_ifname)
local net_ipv6_ifname=$(status get net_ipv6_ifname)
local old_prefix=$(status get net_ipv6_prefix)
local prefix_iapd=$(echo "${old_prefix}"|awk -F/ '{print $1}')
local lan_net=$(ipv6_local_subnet ${prefix_iapd} 0)
local dmz_net=$(ipv6_local_subnet ${prefix_iapd} 1)

/etc/init.d/radvd stop

if [ "$(status get net_ipv6_status)" != "down" ]; then
logger -s -t "IPv6" -p local1.info "DHCP ANSWER [${REASON} ${old_prefix}]"
status set net_ipv6_status "down"
event notify "ipv6-down"
fi

# router
sysctl -w net.ipv6.conf.${net_ipv6_ifname}.accept_ra=0

ip -6 addr flush dev ${lan_ifname} scope global
ip -6 route del ${dmz_net} dev ${lan_ifname}
ip -6 route del default
ip6tables -D FORWARD -j LAN_FORWARD -o ${lan_ifname} -d ${lan_net}

status set net_ipv6_uptime ""
status set net_ipv6_ipaddr ""
status set net_ipv6_prefix ""
status set net_ipv6_dns ""
}

case "$REASON" in
"REQUEST")
dhcp6_setup
;;
"RENEW")
;;
"REBIND"|"RELEASE")
dhcp6_deconfig
;;
*)
exit 1
esac

exit 0

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
SFR IPv6 sur NB6v / Edgerouter
« Réponse #28 le: 03 juillet 2014 à 05:14:14 »
Plus d'infos:

La NB6v ne fait pas serveur DHCPv6. Coté LAN, elle ne fait que du RA (avec radvd).

Coté WAN elle a un client DHCPv6 et c'est comme ca qu'elle reçoit sa config IPv6.

A noter le "net.ipv6.conf.${net_ipv6_ifname}.accept_ra=2" (voir la doc la https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ):

"local forwarding" est activé sur la NB6v.
Donc la NB6v, avec accept_ra a 2, 'devrait' accepter et traiter les Router Advertisements si l'ERL en envoi (ca c'est confirmable avec une capture).

mon conseil:

mettre ton 'lan' (derrière l'ERL donc son eth0) en :2::/64 car :0::/64 et :1::/64 sont routés en dur dans la NB6 (lan et dmz).
mettre l'ERL WAN (son eth1) en :1::/64 s'il fait firewall v6 ou :0::/64 si tu preferes le firewall v6 de la NB6 .
le point a controler: que l'ERL envoi bien des RA sur eth1 comme quoi c'est lui le next hop pour :2::/64

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 804
  • 73
SFR IPv6 sur NB6v / Edgerouter
« Réponse #29 le: 03 juillet 2014 à 05:21:36 »
La NB6v ne fait pas serveur DHCPv6. Coté LAN, elle ne fait que du RA (avec radvd).

Je crois que tu te trompes : en plus des paquets ICMPv6 Router Advertisement, je reçois régulièrement des paquets DHCPv6 Solicit venant de ma box (depuis son adresse locale en fe80::xxxx:xxxx:xxxx:xxxx vers l'adresse multicast ff02::1:2, et elle renseigne son modèle et son firmware dans le champ « Vendor Class » donc difficile de douter que ça vient d'elle).
« Modifié: 03 juillet 2014 à 05:48:18 par Marin »

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 804
  • 73
SFR IPv6 sur NB6v / Edgerouter
« Réponse #30 le: 03 juillet 2014 à 05:46:36 »
En fait si, désolé, je crois que tu as raison... mais qu'elle envoie sa demande d'attribution d'IPv6 sur le WAN et sur le LAN (pour en obtenir une sur le WAN) ???

Pas très logique comme comportement.

yrousse

  • Expert
  • Abonné Bbox fibre
  • *
  • Messages: 181
  • FTTH Bouygues Telecom 1Gbps sur Paris 18ème
SFR IPv6 sur NB6v / Edgerouter
« Réponse #31 le: 03 juillet 2014 à 06:10:56 »
En effet, Martin... jamais réussi à obtenir que wide-dhcp6 client fonctionne.
Pas de Stateful d'après rdisc6 :
Soliciting ff02::2 (ff02::2) on eth1...

Hop limit                 :           64 (      0x40)
Stateful address conf.    :           No
Stateful other conf.      :           No
Router preference         :       medium
Router lifetime           :         1800 (0x00000708) seconds
Reachable time            :  unspecified (0x00000000)
Retransmit time           :  unspecified (0x00000000)
 Prefix                   : 2a02:abcd:ac:ab00::/64
  Valid time              :       604800 (0x00093a80) seconds
  Pref. time              :       604800 (0x00093a80) seconds
 MTU                      :         1453 bytes (valid)
 Source link-layer address: 24:xx:xx:xx:xx:xx
 from fe80::xxxx:xxx:xxxx:xxxx

Sinon, oui, un WAN (eth1) en autoconf (et ra=2) va bien recevoir des RA. Et pinger depuis l'ERL se passe bien dans ce cas. Mais j'imagine que le firewall de la NB6v n'apprécie pas les paquets venant de mes clients LAN... car là, au mieux j'arrive sur l'interface WAN, pas plus loin (ça ne revient pas, si je comprend bien).

Donc la suggestion de Kgersen me parait très intéressante: mettre l'ERL en subnet DMZ.
En revanche, en bon noob que je suis, je ne sais pas trop quoi faire ensuite. Je suis perdu avec ces histoires de subnet (ou alors, c'est parce qu'il est 6h du mat' et je ne suis pas encore couché...).
Si j'ai bien compris: SFR me donne un abcd:abcd:abcd:ab00::/56, ce qui me donne 256 subnets /64 que je peux égrener de abcd:abcd:abcd:ab00::/64 à abcd:abcd:abcd:abff::/64. J'ai bon?
D'après le post de Kgersen, On sait à présent qu'on en a 2 qui sont traités spécifiquement: l'un est Advertisé par radvd au sein de la NB6v et Firewallé, l'autre est planqué et en DMZ.
Mais... je ne vois pas très bien à quoi correspond les notations de Kgersen (":1::/64")...
Alors je tente ce qui suit: Je viens de mettre mon WAN en EUI64 abcd:abcd:abcd:ab01::/64 et mon LAN en EUI64 abcd:abcd:abcd:ab02::/64
C'est bien l'intention?
Et oui, mon LAN (eth0) a bien radvd qui tourne, les clients le voient, prenne leur addresse et leur GW (eth0) et récupèrent les DNS par RDNSS.

Bon, je poste ce message et je reboote l'ERL pour faire propre...

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
SFR IPv6 sur NB6v / Edgerouter
« Réponse #32 le: 03 juillet 2014 à 06:12:52 »
Oui les "DHCPv6 Solicit" sont émis par les clients DHCP pas les serveurs.
C'est le client DHCPv6 qui 'parle' sur le LAN donc.

DHCPv6 peut servir a 2 choses: distribué des addresses comme en V4 ou faire de la délégation de prefix.
Dans le cas de la NB6, le client DHCPv6 sert à faire de la délégation:

En regardant la config du client dhcpv6:
(/etc/init.d/dhcp6c)
#!/bin/sh /etc/rc.common

logger -t "dhcp6c[$$]" "$action"

config() {
local net_ipv6_ifname=$1
local lan_ifname=$2

echo "interface ${net_ipv6_ifname} {
        send ia-pd 0;
script \"/etc/dhcp/ipv6.script\";
};

id-assoc pd {
        prefix-interface ${lan_ifname} {
               sla-id 0;
               sla-len 8;
        };
};
" > /run/dhcp6c.conf
}

start() {
local net_ipv6_ifname=$(status get net_ipv6_ifname)
local lan_ifname=$(status get lan_ifname)
local vendorid="neufbox_$(cat /proc/productid)_$(cat /etc/efixo_release)"
test -d /etc/adsl && local vendorid="${vendorid}_$(status get version_dsldriver)"

config ${net_ipv6_ifname} ${lan_ifname}

[ "$(nvram get ipv6_debug)" = "on" ] && opd_D="-D"
exec dhcp6c -f -d ${opd_D} -V ${vendorid} -c /run/dhcp6c.conf ${net_ipv6_ifname} ${lan_ifname}

logger -t "dhcp6c[$$]" "start failed"
stop
exit 1
}

stop() {
test -e /run/dhcp6c.pid && pid=$(cat /run/dhcp6c.pid)
test -z ${pid} && return

kill ${pid}

# remove prefix::1/64 from lan_ifname
REASON=RELEASE /etc/dhcp/ipv6.script
}


id-assoc pd {
        prefix-interface ${lan_ifname} {
               sla-id 0;
               sla-len 8;
        };

on constate un "Prefix interface statement": ca permet d'attribué l'ip a l'interface en question (lan_ifname donc surement le lan de la nb6):
 sla-id: valeur attribué a cette interface dans le prefix donc 0 -> ::0:/64
 sla-len: longueur du prefix délégué a ce routeur: 64-8 = 56 donc c'est bien /56

Une bonne explication ici: http://manpages.ubuntu.com/manpages/hardy/man5/dhcp6c.conf.5.html

Le daemon est bien lancé sur les 2 interfaces:
exec dhcp6c -f -d ${opd_D} -V ${vendorid} -c /run/dhcp6c.conf ${net_ipv6_ifname} ${lan_ifname}
Pourquoi sur le coté lan aussi...

Tu peux dumper ici un des messages " DHCPv6 Solicit " en entier pour voir ce qu'il "solicite" ?

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 804
  • 73
SFR IPv6 sur NB6v / Edgerouter
« Réponse #33 le: 03 juillet 2014 à 06:20:31 »
Tu peux dumper ici un des messages " DHCPv6 Solicit " en entier pour voir ce qu'il "solicite" ?

Tu en as un dans ma capture du démarrage de la box en fait, il suffit de taper le filtre « dhcpv6 » dans Wireshark pour l'isoler (ainsi que la réponse reçue du serveur de SFR).

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
SFR IPv6 sur NB6v / Edgerouter
« Réponse #34 le: 03 juillet 2014 à 06:21:13 »
Mais... je ne vois pas très bien à quoi correspond les notations de Kgersen (":1::/64")...
c'est les subnet du /56.

:0::/64 c'est le 1er subnet (celui firewallé par la box et advertisé).
:1::/64 le dmz
:2::/64 et les suivants jusqu'a 255 (ou FF) car un /56 te donne 256 subnet /64.

donc
Citer
Alors je tente ce qui suit: Je viens de mettre mon WAN en EUI64 abcd:abcd:abcd:ab01::/64 et mon LAN en EUI64 abcd:abcd:abcd:ab02::/64

C'est bien l'intention?
oui c'est ca.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
SFR IPv6 sur NB6v / Edgerouter
« Réponse #35 le: 03 juillet 2014 à 06:30:35 »
Tu en as un dans ma capture du démarrage de la box en fait, il suffit de taper le filtre « dhcpv6 » dans Wireshark pour l'isoler (ainsi que la réponse reçue du serveur de SFR).

ah oui exact.

C'est donc bien du DHCPv6 pour faire de l'"Identity Association for Prefix Delegation".

Mais coté LAN c'est les mêmes Solicit ?