Name : BETA-TESTERS
Project name : ZW3B-API-BETA-TESTERS
Authorized. - 200 - Client API Name and Origin Wildcard OK
Script client VPN : On vérifie que la connexion IPSEC + XL2TP est ESTABLISHED ou on la relance.
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{ 074 IPv4="`/sbin/ip -4 address show dev $DEV | grep inet | awk '{print $2}'`" 075 IPv6="`/sbin/ip -6 address show dev $DEV | grep inet | awk '{print $2}'`" 076 077 echo "+-----------------------------------" 078 echo "|" 079 echo "+ VPN" 080 echo "|" 081 echo "+--+ Iface $DEV exist !" 082 echo "| |" 083 echo "| +--+ IPv4 -> $IPv4" 084 085 # IPv4 : Route 086 echo "| | |" 087 if [ "`/sbin/ip -4 route show dev $DEV | grep 10.101.0.0`" ]; then 088# if [ "`${SEARCH_ROUTE_IPv4_OK}`" ]; then 089 echo -n "| | +-- Route" 090 echo " -> `/sbin/ip -4 route show dev $DEV | grep 10.101.10.0`" 091 else 092 echo -n "| | +-- Route ADD" 093 ${CMD_ADD_ROUTE_IPv4_0} 094 #${CMD_ADD_ROUTE_IPv4_1} 095 echo " -> `/sbin/ip -4 route show dev $DEV | grep 10.101.10.0`" 096 fi 097 098 echo "| |" 099 # IPv6 : Address 100 if [ "`${SEARCH_ADDR_IPv6_OK}`" ]; then 101 echo "| +--+ IPv6 -> $IPv6" 102 else 103 echo -n "| +-- On ajoute l'address IPv6" 104 ${CMD_ADD_ADDR_IPv6} 105 echo " -> `/sbin/ip -6 address show dev $DEV | grep inet | awk '{print $2}'`" 106 fi 107 108 # IPv6 : Route 109 echo "| |" 110 if [ "`/sbin/ip -6 route show dev $DEV | grep "2000::/3"`" ]; then 111 echo -n "| +-- Route" 112 echo " -> `/sbin/ip -6 route show | grep "dev ${DEV}"`" 113 else 114 echo -n "| +-- Route ADD" 115 ${CMD_ADD_ROUTE_IPv6_0} 116 ${CMD_ADD_ROUTE_IPv6_1} 117 echo " -> `/sbin/ip -6 route show | grep "dev ${DEV}"`" 118 fi 119 120 echo "|" 121 echo "+-----------------------------------" 122 123} 124#####-----------------------------------------###### 125 126 127#-------------------------------------------------------------------------------- 128# Script 129 130vpn_reload() 131{ 132 133echo "" 134 135if [ "${SEARCH_DEV}" ] && [ "${SEARCH_IPSEC}" ]; 136then 137 138 vpn_check_config 139 140else 141 echo "+-----------------------------------" 142 echo "+ VPN" 143 echo "|" 144 echo "+--+ Iface $DEV nexist pas !" 145 echo " |" 146 echo " +-- On remonte le VPN...." 147 echo " |" 148 149 ipsec_l2tp restart && sleep 2 150 151 /usr/sbin/ipsec up sovh.lab3w.fr && sleep 2 152 153 echo "c sovh" >> /var/run/xl2tpd/l2tp-control && sleep 10 154 155 vpn_check_config 156 157 echo "|" 158 echo "+-----------------------------------" 159fi 160 161} 162 163# Script 164#-------------------------------------------------------------------------------- 165 166#-------------------------------------------------------------------------------- 167# command 168 169case "$1" in 170 171start|restart) 172#$0 stop 173 174 echo "$0 Starting" 175 176 vpn_reload 177;; 178stop) 179 echo "$0 Stop" 180 181 echo "d sovh" > /var/run/xl2tpd/l2tp-control && sleep 5 182 183 /usr/sbin/ipsec down sovh.lab3w.fr 184 185 ipsec_l2tp stop 186;; 187*) 188 echo "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