#!/usr/bin/env bash set -eu DESC="Nouvelle configuration IPv6 du réseau + tests" SYSTEMS="bigboss societe web" # Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée # $1 : host # $2 : interface # Exemple : getIPv6 bigboss eth0 getIPv6() { echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' } testIPv6() { echo echo "test link between web and bigboss (Unique local address)" echo # réinitialise les interfaces vdn-ssh root@bigboss "ifconfig eth0 down ; ifconfig eth0 up" vdn-ssh root@web "ifconfig eth0 down ; ifconfig eth0 up" vdn-ssh root@societe " ifconfig eth0 down ; ifconfig eth0 up ifconfig eth1 down ; ifconfig eth1 up ifconfig eth2 down ; ifconfig eth2 up echo 1 >/proc/sys/net/ipv6/conf/all/forwarding " # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe # de l'adresse "lien local" # # * la DMZ (web) aura le préfixe fc01 # * le réseau interne (bigboss) aura le préfixe fc00 # # La fonction routage IPv6 est activé sur société # et les route par défaut sont fixées sur web et bigboss # # un ping6 de bigboss vers web valide la config. ipSocieteWeb=$(getIPv6 societe eth1) ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" ipSocieteBigboss=$(getIPv6 societe eth2) ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" ipWeb=$(getIPv6 web eth0) ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" ipBigboss=$(getIPv6 bigboss eth0) ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" vdn-ssh root@web " ip -6 route del ::/0 &> /dev/null ip -6 route add ::/0 via $ipSocieteWeb" vdn-ssh root@bigboss " ip -6 route del ::/0 &> /dev/null ip -6 route add ::/0 via $ipSocieteBigboss" vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" } run() { setErrorHandler echoStart requireSshGuests $SYSTEMS waitSsh $SYSTEMS testIPv6 unsetErrorHandler echoDone }