Informations :
Dates
- Publish : : Thursday 11 january 2018
- Modification : Monday 01 november 2021
- 1418 views
Share :
Je souhaite relancer mon VPN (IPSEC + XL2TP) si la connexion cliente se coupe. Puis je vérifie que l'adresse IPv6 et que les routes sont actives.
Le script vpn-remount.sh :
Script avec 195 lignes
001#!/bin/bash002 003#####---------------------------- INFORMATIONS --------------------------------#####004#005# Name : vpn-remount.sh006# Desc : Script qui remount les address IPv(4/6) et ajoute des routes IPv(4/6)007# Auteur : O.Romain JAILLET-RAMEY alias Kss*008# Mail : orj AT lab3w DOT fr009# Date-created : 2018-01-11010# Date-modified : 2021-11-01011#012#####---------------------------- INFORMATIONS --------------------------------###013 014#--------------------------------------------------------------------------------015# Declaration016 017# -------------------------018# OVH CONN SERVER019 020# Search IPv4 Point-2-Point server on client021SITE_OVH_LOC_IPv4="172.16.5.254"022 023SITE_OVH_SEARCH_IP=`/sbin/ifconfig |/bin/grep "${SITE_OVH_LOC_IPv4}"|/usr/bin/cut -d" " -f10`024SITE_OVH_SEARCH_IF=`/sbin/ifconfig |/bin/grep -B 1 "${SITE_OVH_LOC_IPv4}" |/usr/bin/cut -d" " -f1 |/usr/bin/cut -d":" -f1 |/bin/sed '/^$/d'`025 026DEV=$SITE_OVH_SEARCH_IF;027SEARCH_DEV="`cat /proc/net/dev | grep $DEV | cut -d":" -f1 | sed 's/^[[:space:]]*//g'`"028SEARCH_IPSEC="`/usr/sbin/ipsec status | grep 'ESTABLISHED' | cut -d" " -f2 | sed 's/^[[:space:]]*//g'`"029 030SEARCH_ROUTE_IPv4_OK="/sbin/ip -4 route show dev $DEV | grep 10.101.10.0"031 032# OVH033CMD_ADD_ROUTE_IPv4_0="/sbin/ip -4 route add 10.101.10.0/24 dev $DEV"034CMD_ADD_ROUTE_IPv4_1="/sbin/ip -4 route add 10.102.10.0/24 dev $DEV"035 036 037#echo "IPv4" $SITE_OVH_SEARCH_IP038#echo "INT" $SITE_OVH_SEARCH_IF039 040#exit;041 042# -------------------------043 044LOC_IPv6="2607:5300:60:9389:0058:1:0:1"045CMD_ADD_ADDR_IPv6="/sbin/ip -6 address add 2607:5300:60:9389:0:1:0:1/104 dev $DEV"046 047# NET048CMD_ADD_ROUTE_IPv6_0="/bin/ip -6 route add 2000::/3 dev $DEV" # WAN049 050# OVH051CMD_ADD_ROUTE_IPv6_1="/bin/ip -6 route add 2607:5300:0060:9389:0000:0000:0000:0000/64 dev $DEV" # LAC052 053#echo $CMD_ADD_ROUTE_IPv6; exit;054 055#SEARCH_IPSEC_OK="/usr/sbin/ipsec status | grep -i 'INSTALLED, TRANSPORT' -B1 -A1"056 057SEARCH_ADDR_IPv6_OK="/sbin/ip -6 a show dev $DEV"058 059SEARCH_ROUTE_IPv6_OK="/sbin/ip -6 route show dev $DEV | grep 2000::/3"060 061# Declaration062#--------------------------------------------------------------------------------063 064#####-----------------------------------------######065 066ipsec_l2tp()067{068/etc/init.d/ipsec $1069/etc/init.d/xl2tpd $1070}071 072vpn_check_config()073{074IPv4="`/sbin/ip -4 address show dev $DEV | grep inet | awk '{print $2}'`"075IPv6="`/sbin/ip -6 address show dev $DEV | grep inet | awk '{print $2}'`"076 077echo "+-----------------------------------"078echo "|"079echo "+ VPN"080echo "|"081echo "+--+ Iface $DEV exist !"082echo "| |"083echo "| +--+ IPv4 → $IPv4"084 085# IPv4 : Route086echo "| | |"087if [ "`/sbin/ip -4 route show dev $DEV | grep 10.101.0.0`" ]; then088# if [ "`${SEARCH_ROUTE_IPv4_OK}`" ]; then089echo -n "| | +-- Route"090echo " → `/sbin/ip -4 route show dev $DEV | grep 10.101.10.0`"091else092echo -n "| | +-- Route ADD"093${CMD_ADD_ROUTE_IPv4_0}094#${CMD_ADD_ROUTE_IPv4_1}095echo " → `/sbin/ip -4 route show dev $DEV | grep 10.101.10.0`"096fi097 098echo "| |"099# IPv6 : Address100if [ "`${SEARCH_ADDR_IPv6_OK}`" ]; then101echo "| +--+ IPv6 → $IPv6"102else103echo -n "| +-- On ajoute l'address IPv6"104${CMD_ADD_ADDR_IPv6}105echo " → `/sbin/ip -6 address show dev $DEV | grep inet | awk '{print $2}'`"106fi107 108# IPv6 : Route109echo "| |"110if [ "`/sbin/ip -6 route show dev $DEV | grep "2000::/3"`" ]; then111echo -n "| +-- Route"112echo " → `/sbin/ip -6 route show | grep "dev ${DEV}"`"113else114echo -n "| +-- Route ADD"115${CMD_ADD_ROUTE_IPv6_0}116${CMD_ADD_ROUTE_IPv6_1}117echo " → `/sbin/ip -6 route show | grep "dev ${DEV}"`"118fi119 120echo "|"121echo "+-----------------------------------"122 123}124#####-----------------------------------------######125 126 127#--------------------------------------------------------------------------------128# Script129 130vpn_reload()131{132 133echo ""134 135if [ "${SEARCH_DEV}" ] && [ "${SEARCH_IPSEC}" ];136then137 138vpn_check_config139 140else141echo "+-----------------------------------"142echo "+ VPN"143echo "|"144echo "+--+ Iface $DEV nexist pas !"145echo " |"146echo " +-- On remonte le VPN...."147echo " |"148 149ipsec_l2tp restart && sleep 2150 151/usr/sbin/ipsec up sovh.lab3w.fr && sleep 2152 153echo "c sovh" >> /var/run/xl2tpd/l2tp-control && sleep 10154 155vpn_check_config156 157echo "|"158echo "+-----------------------------------"159fi160 161}162 163# Script164#--------------------------------------------------------------------------------165 166#--------------------------------------------------------------------------------167# command168 169case "$1" in170 171start|restart)172#$0 stop173 174echo "$0 Starting"175 176vpn_reload177;;178stop)179echo "$0 Stop"180 181echo "d sovh" > /var/run/xl2tpd/l2tp-control && sleep 5182 183/usr/sbin/ipsec down sovh.lab3w.fr184 185ipsec_l2tp stop186;;187*)188echo "usage : $0 (start|stop|restart)"189;;190 191esac192 193 194# command195#--------------------------------------------------------------------------------
Vous remarquerez que la route par default IPv6 passe par le VPN pour ressortir depuis une des adresse IPv6 de mon serveur LAB3W (OVH). Cela est un fait exprès vu que je n'ai pas d'IPv6 chez mon Fournisseur d'Accès InterNet (Orange non-dégroupé (contrat non pro)).
Pour tester on lance le script de cette façon : sh vpn-remount.sh restart ou on le met en tâche planifiée toutes les N minutes.
Par exemple :
Script avec 1 ligne
001*/3 * * * * sh /root/vpn-remount.sh restart 1>>/var/log/syslog 2>/dev/null 2>&1
La sortie du script va dans syslog et les erreurs ne sont pas affichées ;)
Sortie du script :
Script avec 16 lignes
001+-----------------------------------002|003+ VPN004|005+--+ Iface ppp0 exist !006| |007| +--+ IPv4 → 172.16.5.253008| | |009| | +-- Route → 10.101.10.0/24 scope link010| |011| +--+ IPv6 → 2607:5300:60:9389:58:1:0:1/104012| |013| +-- Route → 2607:5300:60:9389::/64 dev ppp0 metric 1024 pref medium0142000::/3 dev ppp0 metric 1024 pref medium015|016+-----------------------------------
Bon Virtual Private Network ;)
Cordialement,
Romain



