Auteur Sujet: IPV6 avec Dibbler, assigner une ip a l'interface automatiqement  (Lu 1477 fois)

0 Membres et 1 Invité sur ce sujet

jeremyp3

  • Abonné Orange Fibre
  • *
  • Messages: 718
  • Pau (64)
Bonjour à tous,

depuis quelques temps, je me sers de Dibbler pour récupérer mon /56. une fois le préfixe obtenu, j'assigne manuellement une ip a mon interface, afin de pouvoir sortir en IPV6. jusqu'ici, ça fonctionne très bien, rien à dire.
Par contre, j'aimerai savoir si la seconde étape ne peu pas être faite de façon automatique, soit par dibler lui même, soit par un autre daemon.
Il doit probablement me manquer des termes techniques lié à IPV6 et du coup je passe à coté d'un truc évident. si j'ai bien compris, radvd n'est pas une option vu que je ne souhaite pas que mon réseau local est IPV6 mais seulement le serveur tournant sur une debian jesssie pour l'instant.

En tous cas, j'avance tranquillement, il y a 1 an, je ne voulais pas entendre parler d'IPV6 :-)

merci à vous d'aider un N00b en IPV6 :)

Jerem

P.S: la migration vers une debian plus récente est prévu ... un jour ;)

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 310
  • Antibes (06) / Mercury (73)
IPV6 avec Dibbler, assigner une ip a l'interface automatiqement
« Réponse #1 le: 22 février 2019 à 06:38:40 »
Le "serveur" c'est la machine qui fait tourner dibbler ou pas ?

Si oui, dibbler peut exécuter un script automatiquement à chaque fois qu'un préfixe est assigné (ou change). Donc un script dans le genre de celui ci-dessous devrait faire l'affaire (il attribue une IPv6 à l'interface eth0, à adapter selon le besoin):
#!/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"
}

INTERFACE=eth0
INTERFACE_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$INTERFACE_SUFFIX/64" dev $INTERFACE
fi

echo "CURRENT_PREFIX1=$PREFIX1" > $STATUS_FILE

ip addr add "$PREFIX1$INTERFACE_SUFFIX/64" dev $INTERFACE
fi

Si le serveur est une autre machine et que tu ne veux vraiment pas utiliser radvd, alors il doit sans doute être possible de déclencher l'exécution d'un script distant dans le script de dibbler (en utilisant ssh et une authentification par clé asymétriques par exemple). Ou alors mettre le serveur dans un VLAN dédié et ne faire tourner radvd que sur ce VLAN...

jeremyp3

  • Abonné Orange Fibre
  • *
  • Messages: 718
  • Pau (64)
IPV6 avec Dibbler, assigner une ip a l'interface automatiqement
« Réponse #2 le: 22 février 2019 à 06:59:01 »
Le "serveur" c'est la machine qui fait tourner dibbler ou pas ?
Oui.

je vais regarder pour le script, merci :)