Auteur Sujet: [Guide] ERLite-3 - IPv6 sans livebox (DHCP)  (Lu 14209 fois)

0 Membres et 1 Invité sur ce sujet

geoffreyc

  • Abonné Bbox fibre
  • *
  • Messages: 313
  • Orange (84)
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« le: 02 août 2017 à 16:03:52 »
Le sujet épinglé manquant de structure et cohésion, je vous propose ce guide simple et rapide pour activer l'IPv6 sur votre ERLite-3 (ou autre routeur edgeMax). Ce guide part du principe que vous avez déjà un routeur ubiquiti en état de fonctionnement et correctement paramétré pour se connecter au DHCP Orange.

Ce guide part aussi du principe que vos interfaces sont paramétrées de la sorte:

eth0 -> LAN
eth1 -> WAN

Il vous tiendra de changer ces références dans les configurations qui vont suivre.

1) Mis en place du dibbler-client

Connectez vous a votre routeur, puis passez en mode root:
sudo -iPuis telecharger dibbler-client (Merci zoc)
curl -L -k "https://lafibre.info/remplacer-livebox/en-cours-remplacer-sa-livebox-par-un-routeur-ubiquiti-edgemax/?action=dlattach;attach=24461" > dibbler.deb
dpkg -i dibbler.deb
Completer l'installation de dibbler (vos reponses pendant l'installation n'ont que tres peux d'importance, nous allons manuellement changer la config).

2)Paramétrer dibbler

ouvrez /etc/dibbler/client.conf et remplacez la configuration par celle-ci:

(N'oubliez pas de remplacer les "XX" par la valeur retourné par se script: https://jsfiddle.net/kgersen/45zudr15/embedded/result/ )

# Defaults for dibbler-client.
# installed at /etc/dibbler/client.conf by the maintainer scripts

# 8 (Debug) is most verbose. 7 (Info) is usually the best option
log-level 7

duid-type duid-ll
# To perform stateless (i.e. options only) configuration, uncomment
# this line below and remove any "ia" keywords from interface definitions
# stateless


downlink-prefix-ifaces "none"
script "/etc/dibbler/radvd.sh"

iface eth1.832 {
    pd
    option 16 hex 00:00:04:0e:00:05:73:61:67:65:6d
    option 15 hex 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
    option 11 hex 00:00:00:00:00:00:00:00:00:00:00:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
    option 11 hex 00:00:00:00:00:00:00:00:00:00:00:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
    option dns-server
}


Une fois sauvegardé, créez puis ouvrez le fichier /etc/dibbler/radvd.sh en y ajoutant la configuration suivante:

#!/bin/bash

if [ "$SRV_MESSAGE" != "REPLY" ]
then
                exit 1
fi

function fullPrefix () {
  local input=$1
  local o=""
  local z=""
                                   
  input=$(tr 'A-F' 'a-f' <<< $input )
                               
  while [ "$o" != "$input" ]; do
    o="$input"
                                                                 
    input="$( sed  's|:\([0-9a-f]\{3\}\):|:0\1:|g'  <<< "$input" )"
    input="$( sed  's|:\([0-9a-f]\{3\}\)$|:0\1|g'   <<< "$input" )"
    input="$( sed  's|^\([0-9a-f]\{3\}\):|0\1:|g'   <<< "$input" )"
                                                                 
    input="$( sed  's|:\([0-9a-f]\{2\}\):|:00\1:|g' <<< "$input" )"
    input="$( sed  's|:\([0-9a-f]\{2\}\)$|:00\1|g'  <<< "$input" )"
    input="$( sed  's|^\([0-9a-f]\{2\}\):|00\1:|g'  <<< "$input" )"
                                                               
    input="$( sed  's|:\([0-9a-f]\):|:000\1:|g'     <<< "$input" )"
    input="$( sed  's|:\([0-9a-f]\)$|:000\1|g'      <<< "$input" )"
    input="$( sed  's|^\([0-9a-f]\):|000\1:|g'      <<< "$input" )"
  done
                           
  grep -qs "::" <<< "$input"
  if [ "$?" -eq 0 ]; then                             
    GRPS="$( sed  's|[0-9a-f]||g' <<< "$input" | wc -m )"
    ((GRPS--)) # carriage return
    ((MISSING=8-GRPS))           
    for ((i=0;i<$MISSING;i++)); do
      z="$z:0000"
    done
                                                               
    input="$( sed  's|\(.\)::\(.\)|\1'$z':\2|g'          <<< "$input" )"
    input="$( sed  's|\(.\)::$|\1'$z':0000|g'            <<< "$input" )"         
    input="$( sed  's|^::\(.\)|'$z':0000:\1|g;s|^:||g'   <<< "$input" )"
  fi           
  echo "$input"
}

ETH0_SUFFIX="01::1"

STATUS_FILE=/run/dibbler.lease

if [ -f "$STATUS_FILE" ];
then
                source $STATUS_FILE
fi

TRIM_SIZE=17
FULLPREFIX=$( fullPrefix $PREFIX1 )
PREFIX1=${FULLPREFIX:0:TRIM_SIZE}

if [ "$PREFIX1" != "$CURRENT_PREFIX1" ]
then
                if [ "$CURRENT_PREFIX1" != "" ]
                then
                               ip addr delete "$CURRENT_PREFIX1$ETH0_SUFFIX/64" dev eth0
                fi

                echo "CURRENT_PREFIX1=$PREFIX1" > $STATUS_FILE

                ip addr add "$PREFIX1$ETH0_SUFFIX/64" dev eth0
                service radvd restart >/dev/null 2>&1
fi

Changez les permissions du fichier pour le rendre exécutable: chmod 755 /etc/dibbler/radvd.sh

Enfin, créez puis ouvrez le fichier /config/scripts/post-config.d/dibbler-client.sh puis y ajouter:

#!/bin/bash

service dibbler-client restart

Changez les permissions du fichier pour le rendre exécutable: chmod 755 /config/scripts/post-config.d/dibbler-client.sh

Vous voila fini avec la partie dibbler.

3) Paramétrer le routeur

C'est la partie la plus délicate, car chacun ici aura un fichier de configuration unique a lui même, il m'est donc impossible de vous donnez un fichier config.boot déjà tout prêt. Je vais en revanche vous indiquer les parties de configurations a rajouter, en essayant d’être le plus clair possible.
Je vous conseille je faire une copie de votre configuration existante (cp /config/config.boot /config/configipv6.boot) et de faire vos modifications sur ce fichier la.

3 - 1) Les regles firewall

Ces lignes sont a rajouter a la section "firewall" de votre configuration:

    ipv6-name WANv6_IN {
        default-action drop
        description "WANv6 inbound traffic forwarded to LAN"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
        rule 30 {
            action accept
            description "Allow ICMPv6"
            log disable
            protocol icmpv6
        }
    }
    ipv6-name WANv6_LOCAL {
        default-action drop
        description "WANv6 inbound traffic to the router"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
        rule 30 {
            action accept
            description "Allow ICMPv6"
            log disable
            protocol icmpv6
        }
        rule 40 {
            action accept
            description "Allow DHCPv6"
            destination {
                port 546
            }
            protocol udp
            source {
                port 547
            }
        }
    }
    ipv6-name WANv6_OUT {
        default-action accept
        description "WANv6 outbound traffic"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action reject
            description "Reject invalid state"
            state {
                invalid enable
            }
        }
    }

3 - 2) Configution de l'interface LAN eth0

Ces lignes sont a rajouter a la section "interfaces > ethernet eth0" de votre configuration:

ipv6 {
            dup-addr-detect-transmits 1
            router-advert {
                cur-hop-limit 64
                link-mtu 0
                managed-flag false
                max-interval 600
                other-config-flag false
                prefix ::/64 {
                    autonomous-flag true
                    on-link-flag true
                    preferred-lifetime 14400
                    valid-lifetime 18000
                }
                reachable-time 0
                retrans-timer 0
                send-advert true
            }
        }

3 - 3) Configution de l'interface WAN eth1.832

Ces lignes sont a rajouter a la section "interfaces > ethernet eth1 > vif 832" de votre configuration:

  ipv6 {
                address {
                    autoconf
                }
                dup-addr-detect-transmits 1
           }

Ces lignes sont a rajouter a la section "interfaces > ethernet eth1 > vif 832 > firewall > in" de votre configuration:
                    ipv6-name WANv6_IN

Ces lignes sont a rajouter a la section "interfaces > ethernet eth1 > vif 832 > firewall > local" de votre configuration:
    ipv6-name WANv6_LOCAL

Il ne vous reste maintenant plus qu'a appliquer votre configuration et a rebooter votre routeur. Vous devriez a present avoir de l'IPv6! :)

configure
load configipv6.boot
commit
save
exit
reboot
« Modifié: 03 août 2017 à 11:45:06 par geoffreyc »

mike78530

  • Abonné Orange Fibre
  • *
  • Messages: 232
  • Toussus-le-Noble (78)
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #1 le: 03 août 2017 à 10:16:16 »
beau tuto bravo!

pour ma part j'utilise le script de zoc pour radvd.sh dont voici le contenu :

#!/bin/bash

if [ "$SRV_MESSAGE" != "REPLY" ]
then
                exit 1
fi

function fullPrefix () {
  local input=$1
  local o=""
  local z=""
                                   
  input=$(tr 'A-F' 'a-f' <<< $input )
                               
  while [ "$o" != "$input" ]; do
    o="$input"
                                                                 
    input="$( sed  's|:\([0-9a-f]\{3\}\):|:0\1:|g'  <<< "$input" )"
    input="$( sed  's|:\([0-9a-f]\{3\}\)$|:0\1|g'   <<< "$input" )"
    input="$( sed  's|^\([0-9a-f]\{3\}\):|0\1:|g'   <<< "$input" )"
                                                                 
    input="$( sed  's|:\([0-9a-f]\{2\}\):|:00\1:|g' <<< "$input" )"
    input="$( sed  's|:\([0-9a-f]\{2\}\)$|:00\1|g'  <<< "$input" )"
    input="$( sed  's|^\([0-9a-f]\{2\}\):|00\1:|g'  <<< "$input" )"
                                                               
    input="$( sed  's|:\([0-9a-f]\):|:000\1:|g'     <<< "$input" )"
    input="$( sed  's|:\([0-9a-f]\)$|:000\1|g'      <<< "$input" )"
    input="$( sed  's|^\([0-9a-f]\):|000\1:|g'      <<< "$input" )"
  done
                           
  grep -qs "::" <<< "$input"
  if [ "$?" -eq 0 ]; then                             
    GRPS="$( sed  's|[0-9a-f]||g' <<< "$input" | wc -m )"
    ((GRPS--)) # carriage return
    ((MISSING=8-GRPS))           
    for ((i=0;i<$MISSING;i++)); do
      z="$z:0000"
    done
                                                               
    input="$( sed  's|\(.\)::\(.\)|\1'$z':\2|g'          <<< "$input" )"
    input="$( sed  's|\(.\)::$|\1'$z':0000|g'            <<< "$input" )"         
    input="$( sed  's|^::\(.\)|'$z':0000:\1|g;s|^:||g'   <<< "$input" )"
  fi           
  echo "$input"
}

ETH0_SUFFIX="01::1"

STATUS_FILE=/run/dibbler.lease

if [ -f "$STATUS_FILE" ];
then
                source $STATUS_FILE
fi

TRIM_SIZE=17
FULLPREFIX=$( fullPrefix $PREFIX1 ) 
PREFIX1=${FULLPREFIX:0:TRIM_SIZE}

if [ "$PREFIX1" != "$CURRENT_PREFIX1" ]
then
                if [ "$CURRENT_PREFIX1" != "" ]
                then
                               ip addr delete "$CURRENT_PREFIX1$ETH0_SUFFIX/64" dev eth0
                fi

                echo "CURRENT_PREFIX1=$PREFIX1" > $STATUS_FILE

                ip addr add "$PREFIX1$ETH0_SUFFIX/64" dev eth0
                service radvd restart >/dev/null 2>&1
fi

A voir s'il y a qqch de plus récent

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 256
  • Antibes (06) / Mercury (73)
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #2 le: 03 août 2017 à 11:30:07 »
C'est bien le script que je recommande d'utiliser, le précédent fonctionnant mal avec certains préfixes. Il aurait pu être beaucoup plus simple si la commande bc était disponible nativement sur l'ERL, ce qui n'est pas le cas.

geoffreyc

  • Abonné Bbox fibre
  • *
  • Messages: 313
  • Orange (84)
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #3 le: 03 août 2017 à 11:44:20 »
C'est bien le script que je recommande d'utiliser, le précédent fonctionnant mal avec certains préfixes. Il aurait pu être beaucoup plus simple si la commande bc était disponible nativement sur l'ERL, ce qui n'est pas le cas.

Super merci, je vais donc changé ca dessuite (aussi bien dans le guide que chez moi :D).

D'ailleurs Zoc, as tu déjà eu des soucis avec le script dans "scripts/post-config.d" ? Il se trouve que chez moi, le script ne se lance jamais une fois l'ERL booté, je dois le lancer manuellement. Des idées?

hoyohoyo

  • Abonné Free fibre
  • *
  • Messages: 352
  • Fibre Free
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #4 le: 07 août 2017 à 16:51:56 »
Super merci, je vais donc changé ca dessuite (aussi bien dans le guide que chez moi :D).

D'ailleurs Zoc, as tu déjà eu des soucis avec le script dans "scripts/post-config.d" ? Il se trouve que chez moi, le script ne se lance jamais une fois l'ERL booté, je dois le lancer manuellement. Des idées?

Bonjour, j'ai exactement le même problème
si je mets le fichier /config/scripts/post-config.d/dibbler-client.sh    Ben là pas de boot, je peux pas aller sur l'interface (EdgeOS Retry later (system is still booting)
au bout de 30 min toujours rien pas d'internet

Heureusement sur ssh fonctionne, je supprime le fichier, je reboot,

L'ipv4 nikel , pas de v6

je fais : service dibbler-client restart   et tout fonctionne, mais impossible de mettre ce fichier sinon plus rien ne fonctionne


edit: ce qui est bizzare après le restart dibbler, l'ip v6 fonctionne 20 min après avoir restart dibbler

en attendant les 20 min :
ping6 google.com
PING google.com(par21s05-in-x0e.1e100.net) 56 data bytes
From par21s05-in-x0e.1e100.net icmp_seq=1 Destination unreachable: No route
From par21s05-in-x0e.1e100.net icmp_seq=2 Destination unreachable: No route
From par21s05-in-x0e.1e100.net icmp_seq=3 Destination unreachable: No route
From par21s05-in-x0e.1e100.net icmp_seq=4 Destination unreachable: No route
From par21s05-in-x0e.1e100.net icmp_seq=5 Destination unreachable: No route
From par21s05-in-x0e.1e100.net icmp_seq=6 Destination unreachable: No route
From par21s05-in-x0e.1e100.net icmp_seq=7 Destination unreachable: No route
^C
--- google.com ping statistics ---
7 packets transmitted, 0 received, +7 errors, 100% packet loss, time 6040ms

« Modifié: 07 août 2017 à 19:55:11 par hoyohoyo »

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 256
  • Antibes (06) / Mercury (73)
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #5 le: 07 août 2017 à 20:43:48 »
D'ailleurs Zoc, as tu déjà eu des soucis avec le script dans "scripts/post-config.d" ?
Je ne me souviens pas très bien (mon ERL n'a pas été rebooté depuis 150 jours, et à ce moment là il avait plus de 300 jours d'uptime), mais il me semble que chez moi ça marche. Le script n'est pas lancé du tout ou il ne démarre pas dibbler correctement ? Pour debugger il faudrait rajouter une commande genre "touch /tmp/dibbler" à la fin du script et voir si le fichier /tmp/dibbler est bien créé...

Je me souviens par contre avoir eu des problèmes lors de mes tests sans ONT branché: Dans ce cas l'interface eth1 est vue comme down par le système, ce qui a pour conséquence que dibbler-client s'arrête immédiatement...

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #6 le: 07 août 2017 à 22:21:17 »
épinglé!  ;D

mike78530

  • Abonné Orange Fibre
  • *
  • Messages: 232
  • Toussus-le-Noble (78)
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #7 le: 07 août 2017 à 22:27:47 »
Enfin, créez puis ouvrez le fichier /config/scripts/post-config.d/dibbler-client.sh puis y ajouter:

#!/bin/bash

service dibbler-client restart

c'est obligatoire d'avoir ça ?

dmfr

  • Abonné Orange adsl
  • *
  • Messages: 275
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #8 le: 08 août 2017 à 17:56:02 »
c'est obligatoire d'avoir ça ?

Il est possible également de lancer dibbler-client en tant que service.

Commandes à exécuter après un SU (switch root).

Pour créer les fichier rcX.d
update-rc.d dibbler-client defaults
Pour activer le service
update-rc.d dibbler-client enable

Pour désactiver totalement le service
update-rc.d dibbler-client disable
update-rc.d -f dibbler-client remove

Pour contrôler les services en cours
service --status-all

Nh3xus

  • Réseau Deux Sarres (57)
  • Abonné MilkyWan
  • *
  • Messages: 3 247
  • Sarrebourg (57)
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #9 le: 08 août 2017 à 18:13:08 »
Lorsque EdgeOS va migrer vers Debian 9 + systemd ça va être cool...

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 256
  • Antibes (06) / Mercury (73)
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #10 le: 08 août 2017 à 18:15:32 »
Je pense que ça n'arrivera pas.

mike78530

  • Abonné Orange Fibre
  • *
  • Messages: 232
  • Toussus-le-Noble (78)
[Guide] ERLite-3 - IPv6 sans livebox (DHCP)
« Réponse #11 le: 08 août 2017 à 19:04:49 »
Il est possible également de lancer dibbler-client en tant que service.

Commandes à exécuter après un SU (switch root).

Pour créer les fichier rcX.d
update-rc.d dibbler-client defaults
Pour activer le service
update-rc.d dibbler-client enable

Pour désactiver totalement le service
update-rc.d dibbler-client disable
update-rc.d -f dibbler-client remove

Pour contrôler les services en cours
service --status-all

merci pour ces infos

pour ma part j'ai dit que je voulais de que dibbler se lance en service quand il me l'a demandé durant l'installation, donc c'est bon pour moi :)