Informations :
Dates
- Publish : : Thursday 11 january 2018
- Modification : Monday 01 november 2021
- 789 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/bash
002 003#####---------------------------- INFORMATIONS --------------------------------#####
004#
005# Name : vpn-remount.sh
006# 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 fr
009# Date-created : 2018-01-11
010# Date-modified : 2021-11-01
011#
012#####---------------------------- INFORMATIONS --------------------------------###
013 014#--------------------------------------------------------------------------------
015# Declaration
016 017# -------------------------
018# OVH CONN SERVER
019 020# Search IPv4 Point-2-Point server on client
021SITE_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# OVH
033CMD_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_IP
038#echo "INT" $SITE_OVH_SEARCH_IF
039 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# NET
048CMD_ADD_ROUTE_IPv6_0="/bin/ip -6 route add 2000::/3 dev $DEV" # WAN
049 050# OVH
051CMD_ADD_ROUTE_IPv6_1="/bin/ip -6 route add 2607:5300:0060:9389:0000:0000:0000:0000/64 dev $DEV" # LAC
052 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# Declaration
062#--------------------------------------------------------------------------------
063 064#####-----------------------------------------######
065 066ipsec_l2tp()
067{
068/etc/init.d/ipsec $1
069/etc/init.d/xl2tpd $1
070}
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 : Route
086echo "| | |"
087if [ "`/sbin/ip -4 route show dev $DEV | grep 10.101.0.0`" ]; then
088# if [ "`${SEARCH_ROUTE_IPv4_OK}`" ]; then
089echo -n "| | +-- Route"
090echo " → `/sbin/ip -4 route show dev $DEV | grep 10.101.10.0`"
091else
092echo -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`"
096fi
097 098echo "| |"
099# IPv6 : Address
100if [ "`${SEARCH_ADDR_IPv6_OK}`" ]; then
101echo "| +--+ IPv6 → $IPv6"
102else
103echo -n "| +-- On ajoute l'address IPv6"
104${CMD_ADD_ADDR_IPv6}
105echo " → `/sbin/ip -6 address show dev $DEV | grep inet | awk '{print $2}'`"
106fi
107 108# IPv6 : Route
109echo "| |"
110if [ "`/sbin/ip -6 route show dev $DEV | grep "2000::/3"`" ]; then
111echo -n "| +-- Route"
112echo " → `/sbin/ip -6 route show | grep "dev ${DEV}"`"
113else
114echo -n "| +-- Route ADD"
115${CMD_ADD_ROUTE_IPv6_0}
116${CMD_ADD_ROUTE_IPv6_1}
117echo " → `/sbin/ip -6 route show | grep "dev ${DEV}"`"
118fi
119 120echo "|"
121echo "+-----------------------------------"
122 123}
124#####-----------------------------------------######
125 126 127#--------------------------------------------------------------------------------
128# Script
129 130vpn_reload()
131{
132 133echo ""
134 135if [ "${SEARCH_DEV}" ] && [ "${SEARCH_IPSEC}" ];
136then
137 138vpn_check_config
139 140else
141echo "+-----------------------------------"
142echo "+ VPN"
143echo "|"
144echo "+--+ Iface $DEV nexist pas !"
145echo " |"
146echo " +-- On remonte le VPN...."
147echo " |"
148 149ipsec_l2tp restart && sleep 2
150 151/usr/sbin/ipsec up sovh.lab3w.fr && sleep 2
152 153echo "c sovh" >> /var/run/xl2tpd/l2tp-control && sleep 10
154 155vpn_check_config
156 157echo "|"
158echo "+-----------------------------------"
159fi
160 161}
162 163# Script
164#--------------------------------------------------------------------------------
165 166#--------------------------------------------------------------------------------
167# command
168 169case "$1" in
170 171start|restart)
172#$0 stop
173 174echo "$0 Starting"
175 176vpn_reload
177;;
178stop)
179echo "$0 Stop"
180 181echo "d sovh" > /var/run/xl2tpd/l2tp-control && sleep 5
182 183/usr/sbin/ipsec down sovh.lab3w.fr
184 185ipsec_l2tp stop
186;;
187*)
188echo "usage : $0 (start|stop|restart)"
189;;
190 191esac
192 193 194# command
195#--------------------------------------------------------------------------------
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+ VPN
004|
005+--+ Iface ppp0 exist !
006| |
007| +--+ IPv4 → 172.16.5.253
008| | |
009| | +-- Route → 10.101.10.0/24 scope link
010| |
011| +--+ IPv6 → 2607:5300:60:9389:58:1:0:1/104
012| |
013| +-- Route → 2607:5300:60:9389::/64 dev ppp0 metric 1024 pref medium
0142000::/3 dev ppp0 metric 1024 pref medium
015|
016+-----------------------------------
Bon Virtual Private Network ;)
Cordialement,
Romain