ZW3B :-: API Client * Contents * Docs by LAB3W.ORJ

Translate this page

Name : BETA-TESTERS

Project name : ZW3B-API-BETA-TESTERS

Authorized. - 200 - Client API Name and Origin Wildcard OK

¿Comment? 'Ou' ¿Que faire?, OS GNU/Linux, SHells, VPN IPSec + XL2TP : IPv(4/6) Remount du client et des routes

Script client VPN : On vérifie que la connexion IPSEC + XL2TP est ESTABLISHED ou on la relance.

Author : O.Romain.Jaillet-ramey

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#--------------------------------------------------------------------------------
Retirer les numéros de lignes

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
Retirer les numéros de lignes

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+-----------------------------------
Retirer les numéros de lignes

Bon Virtual Private Network ;)

Cordialement,
Romain


<< VPN IPSec + XL2TP : Routage des sous réseaux clients

Comment-faire un réseau IPv6 ? >>