Informations :
Dates
- Publish : : Thursday 11 january 2018
- Modification : Thursday 11 january 2018
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 132 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 : 2018-01-11 010# 011#####---------------------------- INFORMATIONS --------------------------------##### 012 013#-------------------------------------------------------------------------------- 014# Declaration 015 016DEV="ppp0" 017 018SEARCH_DEV="`cat /proc/net/dev | grep $DEV`" 019 020LOC_IPv4="172.16.5.253" 021LOC_IPv6="2001:bc8:25bb:ff00:1ab3:3a:c10d:253" 022 023CMD_ADD_ADDR_IPv6="/sbin/ip -6 address add 2001:bc8:25bb:ff00:1ab3:3a:c10d:253/112 dev ppp0" 024 025CMD_ADD_ROUTE_IPv4="/sbin/route add -net 10.59.199.0 netmask 255.255.255.0 dev ppp0" 026CMD_ADD_ROUTE_IPv6="/sbin/ip -6 route add default dev ppp0" 027 028#SEARCH_IPSEC_OK="/usr/sbin/ipsec status | grep -i 'INSTALLED, TRANSPORT' -B1 -A1" 029 030SEARCH_ADDR_IPv6_OK="/sbin/ip -6 a show dev $DEV" 031SEARCH_ROUTE_IPv6_OK="/sbin/ip -6 route show | grep default" 032 033SEARCH_ROUTE_IPv4_OK="/sbin/ip -4 route show dev ppp0 | grep 10.59.199.0" 034 035# Declaration 036#-------------------------------------------------------------------------------- 037 038#-------------------------------------------------------------------------------- 039# Fonctions 040 041ipsec_l2tp() 042{ 043 /etc/init.d/ipsec 044 /etc/init.d/xl2tpd 045} 046 047vpn_check_config() 048{ 049 IPv4="`/sbin/ip -4 address show dev $DEV | grep inet | awk '{print }'`" 050 IPv6="`/sbin/ip -6 address show dev $DEV | grep inet | awk '{print }'`" 051 052 echo "+-----------------------------------" 053 echo "|" 054 echo "+ VPN" 055 echo "|" 056 echo "+--+ Iface $DEV exist !" 057 echo "| |" 058 echo "| +--+ IPv4 -> $IPv4" 059 060 # IPv4 : Route 061 echo "| | |" 062 if [ "`/sbin/ip -4 route show dev $DEV | grep 10.59.199.0`" ]; then 063 echo -n "| | +-- Route" 064 echo " -> `/sbin/ip -4 route show dev $DEV | grep 10.59.199.0`" 065 else 066 echo -n "| | +-- Route ADD" 067 ${CMD_ADD_ROUTE_IPv4} 068 echo " -> `/sbin/ip -4 route show dev $DEV | grep 10.59.199.0`" 069 fi 070 071 echo "| |" 072 # IPv6 : Address 073 if [ "`${SEARCH_ADDR_IPv6_OK}`" ]; then 074 echo "| +--+ IPv6 -> $IPv6" 075 else 076 echo -n "| +-- On ajoute l'address IPv6" 077 ${CMD_ADD_ADDR_IPv6} 078 echo " -> `/sbin/ip -6 address show dev $DEV | grep inet | awk '{print }'`" 079 fi 080 081 # IPv6 : Route 082 echo "| |" 083 if [ "`/sbin/ip -6 route show | grep "default dev $DEV"`" ]; then 084 echo -n "| +-- Route" 085 echo " -> `/sbin/ip -6 route show | grep "default dev ${DEV}"`" 086 else 087 echo -n "| +-- Route ADD" 088 ${CMD_ADD_ROUTE_IPv6} 089 echo " -> `/sbin/ip -6 route show | grep "default dev ${DEV}"`" 090 fi 091 092 echo "|" 093 echo "+-----------------------------------" 094 095} 096 097# Fonctions 098#-------------------------------------------------------------------------------- 099 100#-------------------------------------------------------------------------------- 101# Script 102 103echo "" 104 105if [ "${SEARCH_DEV}" ]; then 106 107 vpn_check_config 108 109else 110 echo "+-----------------------------------" 111 echo "+ VPN" 112 echo "|" 113 echo "+--+ Iface $DEV nexist pas !" 114 echo " |" 115 echo " +-- On remonte le VPN...." 116 echo " |" 117 118 ipsec_l2tp restart && sleep 2 119 120 /usr/sbin/ipsec up zw3b.fr && sleep 2 121 122 echo "c zw3b" >> /var/run/xl2tpd/l2tp-control && sleep 20 123 124 vpn_check_config 125 126 echo "|" 127 echo "+-----------------------------------" 128fi 129 130 131# Script 132#--------------------------------------------------------------------------------
Vous remarquerez que la route par default IPv6 passe par le VPN pour ressortir depuis une des adresse IPv6 de mon serveur LAB3W (ONLINE). Cela est un fait exprès vu que je n'ai pas d'IPv6 chez mon Fournisseur d'Accès InterNet (Orange (contrat non pro)).
Pour tester on lance le script de cette façon : sh vpn-remount.sh
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 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 15 lignes
001+----------------------------------- 002| 003+ VPN 004| 005+--+ Iface ppp0 exist ! 006| | 007| +--+ IPv4 -> 172.16.5.199/32 008| | | 009| | +-- Route -> 10.59.199.0/24 scope link 010| | 011| +--+ IPv6 -> 2001:bc8:25bb:ff00:1ab3:3a:c10d:253/112 012| | 013| +-- Route -> default dev ppp0 metric 1024 pref medium 014| 015+-----------------------------------
Bon Virtual Private Network ;)
Cordialement,
Romain