Auteur Sujet: TUTO - IPv6 avec un EdgeRouter 4  (Lu 2429 fois)

0 Membres et 1 Invité sur ce sujet

fttmeh

  • Abonné Orange Fibre
  • *
  • Messages: 261
  • Hauts-de-Seine
TUTO - IPv6 avec un EdgeRouter 4
« le: 24 mars 2023 à 15:26:57 »
Bonjour à tous,

Je vous partage les scripts que j'utilisais quand j'avais un EdgeRouter 4. Normalement ils doivent continuer à bien fonctionner.

L'ONT était connecté sur eth1, utilisant l'interface eth1.832.

Script /config/scripts/generate_dhcpv6_configfile.sh

Ce script va lire la configuration dans /config/config.boot et va reutiliser les mêmes informations d'authentification pour IPv6 (adresse MAC et chaine d'authentification).

#!/bin/bash

target_file="/var/run/dhclient6_eth1_832.conf"

interface="eth1"
vif="832"

auth_string=$(/bin/cli-shell-api showCfg interfaces ethernet $interface vif $vif dhcp-options client-option | grep "send rfc3118-auth" | awk '{ print $4 }' | awk -F ";" '{print $1}')
mac_livebox=$(/bin/cli-shell-api showCfg interfaces ethernet $interface vif $vif dhcp-options client-option | grep "dhcp-client-identifier" | awk '{ print $4 }' | awk -F ";" '{print $1}')


read -r -d '' conffile <<EOF
# $target_file\n
option dhcp6.auth code 11 = string;\n
option dhcp6.vendorclass code 16 = string;\n
option dhcp6.userclass code 15 = string;\n
option dhcp6.vendor-specific-info code 17 = string;\n
\n
#External interface (VLAN must be 832 for Orange)\n
interface "$interface.$vif" {\n
\t#Orange France specific options\n
\tsend dhcp6.vendor-specific-info 00:16:00:00:05:58:00:06:00:0e:49:50:56:36:5f:52:45:51:55:45:53:54:45:44;\n
\tsend dhcp6.vendorclass 00:00:04:0e:00:05:73:61:67:65:6d;\n
\tsend dhcp6.userclass 00:2b:46:53:56:44:53:4c:5f:6c:69:76:65:62:6f:78:2e:49:6e:74:65:72:6e:65:74:2e:73:6f:66:74:61:74:68:6f:6d:65:2e:6c:69:76:65:62:6f:78:34;\n
\tsend dhcp6.vendor-opts 00:00:05:58:00:06:00:0e:49:50:56:36:5f:52:45:51:55:45:53:54:45:44;\n
\n
\t#Authentication for Orange France DHCP server (same value as for DHCPv4)\n
\tsend dhcp6.auth $auth_string;\n
\n
\tsend dhcp6.client-id 00:03:00:$mac_livebox;\n
\n
\trequest dhcp6.name-servers, dhcp6.vendorclass, dhcp6.userclass, dhcp6.auth;\n
}\n
EOF

echo -e $conffile > $target_file


Script /config/scripts/install_extra_config_files.sh

Ce script va créer les fichiers de configuration nécessaires pour avoir IPv6 avec le dhclient par défaut. Il faut l'executer après chaque reinstallation de l'OS.

J'avais quelques VLAN avec des clients qui utilisent IPv6 (eth0.120, eth0.200, eth0.180, eth2.150). Il faut modifier la ligne "IPV6_INTERFACES=(eth0.120 eth0.200 eth0.180 eth2.150)" en conséquence.



#!/bin/bash

# DHCPv6
target_dhcphook="/etc/dhcp3/dhclient-exit-hooks.d/dhclient-ipv6-exit-hook"
target_servicefile="/etc/systemd/system/dhclient6.service"

cat >$target_dhcphook << 'EOF'
# /etc/dhcp3/dhclient-exit-hooks.d/dhclient-ipv6-exit-hook

# Interfaces that should obtain a /64 prefix
IPV6_INTERFACES=(eth0.120 eth0.200 eth0.180 eth2.150)
INT_ADDRESS="::cafe"

###

ipv6_prefix_setup() {
# $1 is the ethernet interface
# $2 is the suffix to use
ethiface=$1
suffix=$2

current_ip=$(ip -6 addr show dev $ethiface scope global | awk '/inet6/ {print $2}' | grep -v '^fd' )
current_prefix=$(echo $current_ip | sed -e 's@::.*/64@::/64@')
 
# To generate new IP, need to take new prefix, add 8 bits
new_ip=$( echo $new_ip6_prefix | sed -e 's/00::\/.*//g' )
new_ip="$new_ip$suffix"

if [ "$new_ip" != "$current_ip" ]
then
if [ "$current_ip" != "" ]
then
/sbin/ip -6 addr delete "$current_ip" dev $ethiface
fi
/sbin/ip -6 addr add "$new_ip" dev $ethiface
 
fi
}

case "$reason" in
  BOUND6|REBIND6)
    # We will get called twice here - once for the temp address
    # and once for the prefix. We only care about the prefix.
if [ ! -z "$new_ip6_prefix" ] ; then
offset=$(( $RANDOM % (255 - ${#IPV6_INTERFACES[@]}) ))

for interface in "${IPV6_INTERFACES[@]}"
do
index=1
for i in "${!IPV6_INTERFACES[@]}"
do
if [[ "${IPV6_INTERFACES[i]}" = "${interface}" ]]
then
index="${i}"
break
fi
done

index=$(( $index + $offset ))
suffix=$(printf "%0*x" 2 $index )
suffix="$suffix$INT_ADDRESS/64"
               
ipv6_prefix_setup ${interface} $suffix
done

/bin/systemctl restart radvd.service >/dev/null 2>&1

fi
;;
esac

EOF

cat >$target_servicefile << 'EOF'
#/etc/systemd/system/dhclient6.service
[Unit]
Description=dhclient for sending IPv6 DUID
After=network.target auditd.service vyatta-router.service netplug.service

[Service]
Type=forking
ExecStartPre=/config/scripts/generate_dhcpv6_configfile.sh
ExecStart=/sbin/dhclient -6 -P -nw -cf /var/run/dhclient6_eth1_832.conf -pf /var/run/dhclient6_eth1_832.pid -lf /var/run/dhclient6_eth1_832.leases eth1.832
NonBlocking=yes                               
Restart=always
RestartSec=60

[Install]
WantedBy=multi-user.target
EOF

# Reload systemd configuration files and start dhclient6
/bin/systemctl daemon-reload
/bin/systemctl enable dhclient6



Enfin, la configuration de eth1.832 (extrait de /config/config.boot) :

    ethernet eth1 {
        description "WAN (Internet)"
        duplex auto
        speed auto
        vif 832 {
            address dhcp
            description "VLAN Internet"
            dhcp-options {
                client-option "send vendor-class-identifier &quot;sagem&quot;;"
                client-option "send user-class &quot;\053FSVDSL_livebox.Internet.softathome.Livebox4&quot;;"
                client-option "send dhcp-client-identifier 01:XX:XX:XX:XX:XX:XX;"
                client-option "request subnet-mask, routers, domain-name-servers, domain-name, broadcast-address, dhcp-lease-time, dhcp-renewal-time, dhcp-rebinding-time, rfc3118-authentication, domain-search, Vendor-Specific-Information;"
                client-option "send rfc3118-authentication 00:00:00:00:00:00:00:00:00:00:00:1a:09:00:00:05:58:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX;"
                default-route update
                default-route-distance 210
                global-option "option rfc3118-authentication code 90 = string;"
                global-option "option Vendor-Specific-Information code 125 = string;"
                name-server no-update
            }
            egress-qos "0:0 1:0 2:0 3:0 4:0 5:0 6:6 7:0"
            ipv6 {
                address {
                    autoconf
                }
                dup-addr-detect-transmits 1
            }
        }
    }
« Modifié: 27 mars 2023 à 18:04:42 par fttmeh »

ade05fr

  • Abonné Orange Fibre
  • *
  • Messages: 84
  • Metz 57070
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #1 le: 27 mars 2023 à 16:04:12 »
Salut et merci pour ton tuto ca va m'obliger à me mettre à la page en ipv6

Une question : est ce que cette config fonctionne avec le renforcement protocolaire DCHP ?

Thanks

fttmeh

  • Abonné Orange Fibre
  • *
  • Messages: 261
  • Hauts-de-Seine
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #2 le: 27 mars 2023 à 18:05:08 »
Normalement oui mais je n’ai pas pu tester.

fyme

  • Abonné Orange Fibre
  • *
  • Messages: 28
  • Toulouse 31
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #3 le: 21 novembre 2023 à 17:49:56 »
Bonjour à tous,


Je tente depuis quelques jours la mise en place de cet IPV6 sur mon EdgeRouter 6P v2.0.9-hotfix.7 avec en amont un switch CISCO SG350-10P en version 2.5.9.16 (celui-ci est configuré afin de marquer les paquets en COS6 pour la data vlan832 et COS5 pour le vlan 840 )


Ma liaison est stable depuis un moment en IPV4, mais l'IPV6 ne fonctionne pour moi en appliquant ce tuto.


PI j'ai bien adapté la conf, je suis sur l'interface eth5.832

J'ai mis dans dhcp-client-identifier l'adresse mac d'origine du routeur et pas celle de la livebox et j'ai mis l'adresse mac de la livebox sur l'interface eth5.832

J'ai en place un FW par zone (j'ai plusieurs vlans) et dans l'immédiat je cherche à le faire fonctionner que sur un vlan le 10 (bond0.10)

J'ai rebooté switch et routeur, dès que je changeais un paramètre, mais rien n'y fait.

Voici ce que donne le systemctl status dhclient6:

* dhclient6.service - dhclient for sending IPv6 DUID
   Loaded: loaded (/etc/systemd/system/dhclient6.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-11-21 15:56:05 CET; 1h 16min ago
 Main PID: 25121 (dhclient)
   CGroup: /system.slice/dhclient6.service
           `-25121 /sbin/dhclient -6 -P -nw -cf /var/run/dhclient6_eth5_832.conf -pf /var/run/dhclient6_eth5_832.pid -lf /var/run/dhclient6_eth5_832.leases eth5.832


ip -6 route:

fe80::/64 dev bond0 proto kernel metric 256  pref medium
fe80::/64 dev bond0.7 proto kernel metric 256  pref medium
fe80::/64 dev bond0.40 proto kernel metric 256  pref medium
fe80::/64 dev bond0.30 proto kernel metric 256  pref medium
fe80::/64 dev bond0.10 proto kernel metric 256  pref medium
fe80::/64 dev bond0.20 proto kernel metric 256  pref medium
fe80::/64 dev bond0.50 proto kernel metric 256  pref medium
fe80::/64 dev eth5.832 proto kernel metric 256  pref medium
default via fe80::ba0:bab dev eth5.832 proto zebra metric 1024  pref medium

le tcpdump -n -i eth5.832 ip6 and udp port 546 or udp port 547:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth5.832, link-type EN10MB (Ethernet), capture size 262144 bytes

ne va pas plus loin.

en pièce jointe un extrait de ma conf (conf_IPV6_ER6.txt)


Je précise également qu'avant de tester cet IPV6, j'ai reset le routeur et suis reparti sur une conf "saine"


Je vous remercie pour vos retours



fyme

  • Abonné Orange Fibre
  • *
  • Messages: 28
  • Toulouse 31
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #4 le: 21 novembre 2023 à 18:16:53 »
Une autre info, voici le retour de la commande suivante

 dhclient -6 -P -d -v eth5.832

Internet Systems Consortium DHCP Client 4.1-ESV-R15-P1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on Socket/eth5.832
Sending on   Socket/eth5.832
PRC: Soliciting for leases (INIT).
XMT: Forming Solicit, 0 ms elapsed.
XMT:  X-- IA_PD XX:XX:XX:XX
XMT:  | X-- Request renew in  +3600
XMT:  | X-- Request rebind in +5400
XMT: Solicit on eth5.832, interval 1090ms.
send_packet6: Operation not permitted
dhc6: send_packet6() sent -1 of 52 bytes
XMT: Forming Solicit, 1090 ms elapsed.
XMT:  X-- IA_PD XX:XX:XX:XX
XMT:  | X-- Request renew in  +3600
XMT:  | X-- Request rebind in +5400
XMT: Solicit on eth5.832, interval 2100ms.
send_packet6: Operation not permitted

hj67

  • Abonné Orange Fibre
  • *
  • Messages: 379
  • 67
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #5 le: 21 novembre 2023 à 23:41:34 »
[...]
J'ai mis dans dhcp-client-identifier l'adresse mac d'origine du routeur et pas celle de la livebox et j'ai mis l'adresse mac de la livebox sur l'interface eth5.832
[...]
Dans le sujet "Orange DHCP conformité protocolaire 2023", il me semble que c'est indiqué que tout ce qui est envoyé dans la requête DHCP doit être concordant à présent.
C'est soit l'un soit l'autre (adresse mac de la LB dans dhcp-client-identifier + adresse mac LB sur l'interface wan ou adresse mac du routeur dans dhcp-client-identifier + adresse mac du routeur sur l'interface wan). Honnêtement, la 2ème solution est bien plus simple, je ne vois pas l’intérêt de modifier la mac de l'interface wan en reprenant celle de la LB.

levieuxatorange

  • Expert Orange
  • Expert
  • *
  • Messages: 192
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #6 le: 22 novembre 2023 à 09:51:15 »
Dans le sujet "Orange DHCP conformité protocolaire 2023", il me semble que c'est indiqué que tout ce qui est envoyé dans la requête DHCP doit être concordant à présent.
Bonjour

Je confirme, la concordance est plus que recommandée.
C'est supposé être comme cela dans les normes. Et suivant les implémentations dans les équipements ou version des équipements, un contrôle peut être mise en place en dehors de nos demandes.
Comme coté LB c'est cohérent, nous on ne fera pas obligatoirement attention à cela dans les validations.

=> cohérence si vous voulez un bon fonctionnement dans la durée

LeVieux

fyme

  • Abonné Orange Fibre
  • *
  • Messages: 28
  • Toulouse 31
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #7 le: 22 novembre 2023 à 12:42:19 »
Merci de vous intéresser à mon cas.

J'ai donc corrigé cette partie et rebootés mes équipements mais cela ne change mon problème

Mais une question de moins à se poser  ;)

hj67

  • Abonné Orange Fibre
  • *
  • Messages: 379
  • 67
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #8 le: 22 novembre 2023 à 21:15:00 »
Les points à vérifier:
- les options envoyées par le client DHCPv6: DUID type 3, option 11, 15, 16 et 17
- la COS6 s'applique bien au paquet DHCPv6 (tu peux vérifier cela dans le log de ton switch)

L'étape d'après, c'est le tcpdump/wireshark pour vérifier ce qui est envoyé (et reçu en retour)

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 230
  • Paris (75)
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #9 le: 23 novembre 2023 à 08:37:42 »
quel est le contenu de /etc/systemd/system/dhclient6.service ?

et de /var/run/dhclient6_eth5_832.conf



fyme

  • Abonné Orange Fibre
  • *
  • Messages: 28
  • Toulouse 31
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #10 le: 23 novembre 2023 à 11:56:25 »
Merci hj67, on va commencer par le plus simple

quel est le contenu de /etc/systemd/system/dhclient6.service ?

et de /var/run/dhclient6_eth5_832.conf


Merci kgersen,

Voici les infos des deux fichiers


/etc/systemd/system/dhclient6.service

#/etc/systemd/system/dhclient6.service
[Unit]
Description=dhclient for sending IPv6 DUID
After=network.target auditd.service vyatta-router.service netplug.service

[Service]
Type=forking
ExecStartPre=/config/scripts/generate_dhcpv6_configfile.sh
ExecStart=/sbin/dhclient -6 -P -nw -cf /var/run/dhclient6_eth5_832.conf -pf /var/run/dhclient6_eth5_832.pid -lf /var/run/dhclient6_eth5_832.leases eth5.832
NonBlocking=yes                               
Restart=always
RestartSec=60

[Install]
WantedBy=multi-user.target


/var/run/dhclient6_eth5_832.conf


# /var/run/dhclient6_eth5_832.conf
 option dhcp6.auth code 11 = string;
 option dhcp6.vendorclass code 16 = string;
 option dhcp6.userclass code 15 = string;
 option dhcp6.vendor-specific-info code 17 = string;
 
 #External interface (VLAN must be 832 for Orange)
 interface "eth5.832" {
        #Orange France specific options
        send dhcp6.vendor-specific-info 00:16:00:00:05:58:00:06:00:0e:49:50:56:36:5f:52:45:51:55:45:53:54:45:44;
        send dhcp6.vendorclass 00:00:04:0e:00:05:73:61:67:65:6d;
        send dhcp6.userclass 00:2b:46:53:56:44:53:4c:5f:6c:69:76:65:62:6f:78:2e:49:6e:74:65:72:6e:65:74:2e:73:6f:66:74:61:74:68:6f:6d:65:2e:6c:69:76:65:62:6f:78:34;
        send dhcp6.vendor-opts 00:00:05:58:00:06:00:0e:49:50:56:36:5f:52:45:51:55:45:53:54:45:44;
 
        #Authentication for Orange France DHCP server (same value as for DHCPv4)
send dhcp6.auth 00:00:00:00:00:00:00:00:00:00:00:1a:09:XX:XX:XX:XX:XX:XX:XX:XX:Xd:XX:XX:XX:Xf:Xa:XX:XX:XX:XX:XX:XX:Xc:XX:XX:XX:Xf:Xb:Xc:XX:XX:XX:XX:Xc:Xf:XX:Xb:XX:Xc:XX:XX:XX:XX:XX:cd:Xa:aX:XX:XX:cX:XX:XX:XX:Xe:XX:XX:XX:fX:XX;
send dhcp6.client-id 00:03:00:01:XX:XX:XX:XX:XX:XX;  <<== Adresse MAC de l'ER6 eth5.832
 
        request dhcp6.name-servers, dhcp6.vendorclass, dhcp6.userclass, dhcp6.auth;
 }


La valeur de "dhcp6.client-id" est bien celle reprise de la conf "rfc3118-auth", j'ai vérifié

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 230
  • Paris (75)
TUTO - IPv6 avec un EdgeRouter 4
« Réponse #11 le: 23 novembre 2023 à 13:17:36 »
curieux que les journaux soit vides.

y'a networkctl ?
networkctl status eth5.832
tu peux eventuellement copier le fichier de config (/var/run/dhclient6_eth5_832.conf) quelque part puis arreter le service dhclient6 (systemctl stop dhclient6).

puis lancer manuellement avec affichage détaillé pour voir ce qui se passe:

/sbin/dhclient -6 -P -d -v -cf /chemin/vers/copie_de_dhclient6_eth5_832.conf eth5.832
(ctrl-c pour arreter)