Name : BETA-TESTERS
Project name : ZW3B-API-BETA-TESTERS
Authorized. - 200 - Client API Name and Origin Wildcard OK
Routage des sous réseaux clients pour le serveur VPN : IPSec + XL2TP.
J'écris un script pour ajouter des (ou les) routes possibles vers les réseaux clients VPN au serveur.
Ici c'est un peu différent, on fait plusieurs choses :
172.16.5.253
pour connaître l'interface réseau (ex: ppp0
, ppp1
),crontab
) sur ce script (vpn-add-routes-clients.sh
) toutes les minutes par exemple.
Script avec 106 lignes
001#!/bin/sh 002 003#####---------------------------- INFORMATIONS --------------------------------##### 004# 005# Name : vpn-add-routes-clients.sh 006# Desc : Script qui ajoute des routes vers les sous-reseaux des tunnels 007# Auteur : O.Romain Jaillet-ramey alias Kss* 008# Mail : orj AT lab3w DOT fr 009# Date-created : 2018-01-11 010# Date-modified : 2020-04-24 011# 012#####---------------------------- INFORMATIONS --------------------------------##### 013 014#####---------------------------- CONFIG VPN LOC ------------------------------##### 015 016HOSTNAME=`/bin/hostname` 017NOW=$(date +"%b %d %H:%M:%S") 018 019LOCAL_IPv4="172.16.5.199" 020LOCAL_IPv6="2001:0bc8:25bb:ff5e:5000:0000:0000:0199/128" 021 022SITE_A_LOCAL_IPv6="2001:0bc8:25bb:ff5e:8000:003a:0:0199/92" 023 024#####---------------------------- CONFIG VPN SITE_N ------------------------------##### 025 026#------------------------ 027SITE_A=true 028SITE_A_NAME="NOM DE CHEZ TOI" 029SITE_A_IP="172.16.5.253" 030#------------------------ 031declare -a SITE_A_NETWORKS 032SITE_A_NET_V4=('10.1.100.0' '10.100.10.0') 033declare -a SITE_A_BROADCAST 034SITE_A_CAST_V4=('24' '24') 035#------------------------ 036declare -a SITE_A_NET_V6 037SITE_A_NET_V6=('2001:0bc8:25bb:ff70::' '2001:bc8:25bb:ff71:0001:00A0::' '2001:bc8:25bb:ff74:0001:00AC:FF00::') 038declare -a SITE_A_CAST_V6 039SITE_A_CAST_V6=('64' '96' '104') 040#------------------------ 041 042SITE_A_SEARCH_IP=`/sbin/ifconfig |/bin/grep "${SITE_A_IP}"|/usr/bin/cut -d":" -f2|/usr/bin/cut -d" " -f1` 043SITE_A_SEARCH_IF=`/sbin/ifconfig |/bin/grep -B 1 "${SITE_A_IP}" |/usr/bin/cut -d" " -f1 |/bin/sed '/^$/d'` 044 045#####---------------------------- CONFIG VPN SITE_A ------------------------------##### 046 047#####---------------------------- SCRIPT VPN SITE_A ------------------------------##### 048 049if [ "${SITE_A}" = true ]; 050then 051if [ "${LOCAL_IPv4}" = "${SITE_A_SEARCH_IP}" ]; 052then 053 echo "$NOW $HOSTNAME VPN $SITE_A_NAME: Iface $SITE_A_SEARCH_IF + IPv4 ${LOCAL_IPv4} <> $SITE_A_IP OK"; 054 055 #----------------------------------------------------------------- 056 for i in "${!SITE_A_NET_V4[@]}" 057 do 058 SITE_A_SEARCH_ROUTE=`/sbin/ip -4 route show|/bin/grep "${SITE_A_SEARCH_IF}"|/usr/bin/cut -d" " -f1|/bin/grep "${SITE_A_NET_V4[$i]}"` 059 if [ "${SITE_A_SEARCH_ROUTE}" != "${SITE_A_NET_V4[$i]}/${SITE_A_CAST_V4[$i]}" ] 060 then 061# echo -n IPV4 $i 062# echo " "${SITE_A_NET_V4[$i]}/${SITE_A_CAST_V4[$i]} 063 064 /bin/echo "$NOW $HOSTNAME VPN $SITE_A_NAME: Iface $SITE_A_SEARCH_IF |+ Ajout de la route ${SITE_A_NET_V4[$i]}/${SITE_A_CAST_V4[$i]}"; 065 /sbin/ip -4 route add "${SITE_A_NET_V4[$i]}/${SITE_A_CAST_V4[$i]}" dev "${SITE_A_SEARCH_IF}" 066 else 067 /bin/echo "$NOW $HOSTNAME VPN $SITE_A_NAME: Iface $SITE_A_SEARCH_IF |+ Route ${SITE_A_NET_V4[$i]}/${SITE_A_CAST_V4[$i]} OK"; 068 fi 069 done 070 #----------------------------------------------------------------- 071 072 #----------------------------------------------------------------- 073 SITE_A_SEARCH_IPv6=`/sbin/ifconfig |/bin/grep "${SITE_A_LOCAL_IPv6}"` 074 if [ "${SITE_A_SEARCH_IPv6}" ] 075 then 076 echo "$NOW $HOSTNAME VPN $SITE_A_NAME: Iface $SITE_A_SEARCH_IF + IPv6 $SITE_A_LOCAL_IPv6 OK"; 077 else 078 /bin/echo "$NOW $HOSTNAME VPN $SITE_A_NAME: Ajout de laddress IPv6 $SITE_A_LOCAL_IPv6 sur $SITE_A_SEARCH_IF"; 079 CMD=`/sbin/ip -6 address add "${SITE_A_LOCAL_IPv6}" dev $SITE_A_SEARCH_IF` 080 fi 081 082 for i in "${!SITE_A_NET_V6[@]}" 083 do 084 SITE_A_SEARCH_ROUTE=`/sbin/ip -6 route show|/bin/grep "${SITE_A_SEARCH_IF}"|/usr/bin/cut -d" " -f1|/bin/grep "${SITE_A_NET_V6[$i]}"` 085 if [ "${SITE_A_SEARCH_ROUTE}" != "${SITE_A_NET_V6[$i]}/${SITE_A_CAST_V6[$i]}" ] 086 then 087# echo -n IPV6 $i 088# echo " "${SITE_A_NET_V6[$i]}/${SITE_A_CAST_V6[$i]} 089 090 /bin/echo "$NOW $HOSTNAME VPN $SITE_A_NAME: Iface $SITE_A_SEARCH_IF |+ Ajout de la route ${SITE_A_NET_V6[$i]}/${SITE_A_CAST_V6[$i]}"; 091 /sbin/ip -6 route add "${SITE_A_NET_V6[$i]}/${SITE_A_CAST_V6[$i]}" dev "${SITE_A_SEARCH_IF}" 092 else 093 /bin/echo "$NOW $HOSTNAME VPN $SITE_A_NAME: Iface $SITE_A_SEARCH_IF |+ Route ${SITE_A_NET_V6[$i]}/${SITE_A_CAST_V6[$i]} OK"; 094 fi 095 done 096 #----------------------------------------------------------------- 097 098 099else 100# exit 2; 101 echo "SITE : $SITE_A_NAME DOWN"; 102fi 103 104 105fi 106#####---------------------------- SCRIPT VPN SITE_A ------------------------------#####
Puis on met le script en crontab -e
.
Script avec 1 ligne
001*/1 * * * * /bin/sh /root/vpn-add-routes-clients.sh 1>>/var/log/syslog 2>/dev/null 2>&1