Informations :
Dates
- Publish : : Thursday 18 september 2014
- Modification : Friday 24 april 2020
- 3227 views
Share :
J'écris un script pour ajouter des (ou les) routes possibles vers les réseaux clients VPN au serveur.
Script qui ajoute des routes vers les sous-reseaux des tunnels
Ici c'est un peu différent, on fait plusieurs choses :
- On cherche une adresse IP particulière ici la
172.16.5.253pour connaître l'interface réseau (ex:ppp0,ppp1), - et on assigne les routes du client (du réseau chez le client) au serveur (pour qu'ils puissent communiquer).
- Ensuite on ajoute une tache planifiée (
crontab) sur ce script (vpn-add-routes-clients.sh) toutes les minutes par exemple.
Script avec 106 lignes
001#!/bin/sh002 003#####---------------------------- INFORMATIONS --------------------------------#####004#005# Name : vpn-add-routes-clients.sh006# Desc : Script qui ajoute des routes vers les sous-reseaux des tunnels007# Auteur : O.Romain Jaillet-ramey alias Kss*008# Mail : orj AT lab3w DOT fr009# Date-created : 2018-01-11010# Date-modified : 2020-04-24011#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=true028SITE_A_NAME="NOM DE CHEZ TOI"029SITE_A_IP="172.16.5.253"030#------------------------031declare -a SITE_A_NETWORKS032SITE_A_NET_V4=('10.1.100.0' '10.100.10.0')033declare -a SITE_A_BROADCAST034SITE_A_CAST_V4=('24' '24')035#------------------------036declare -a SITE_A_NET_V6037SITE_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_V6039SITE_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 ];050then051if [ "${LOCAL_IPv4}" = "${SITE_A_SEARCH_IP}" ];052then053echo "$NOW $HOSTNAME VPN $SITE_A_NAME: Iface $SITE_A_SEARCH_IF + IPv4 ${LOCAL_IPv4} <> $SITE_A_IP OK";054 055#-----------------------------------------------------------------056for i in "${!SITE_A_NET_V4[@]}"057do058SITE_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]}"`059if [ "${SITE_A_SEARCH_ROUTE}" != "${SITE_A_NET_V4[$i]}/${SITE_A_CAST_V4[$i]}" ]060then061# echo -n IPV4 $i062# 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}"066else067/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";068fi069done070#-----------------------------------------------------------------071 072#-----------------------------------------------------------------073SITE_A_SEARCH_IPv6=`/sbin/ifconfig |/bin/grep "${SITE_A_LOCAL_IPv6}"`074if [ "${SITE_A_SEARCH_IPv6}" ]075then076echo "$NOW $HOSTNAME VPN $SITE_A_NAME: Iface $SITE_A_SEARCH_IF + IPv6 $SITE_A_LOCAL_IPv6 OK";077else078/bin/echo "$NOW $HOSTNAME VPN $SITE_A_NAME: Ajout de laddress IPv6 $SITE_A_LOCAL_IPv6 sur $SITE_A_SEARCH_IF";079CMD=`/sbin/ip -6 address add "${SITE_A_LOCAL_IPv6}" dev $SITE_A_SEARCH_IF`080fi081 082for i in "${!SITE_A_NET_V6[@]}"083do084SITE_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]}"`085if [ "${SITE_A_SEARCH_ROUTE}" != "${SITE_A_NET_V6[$i]}/${SITE_A_CAST_V6[$i]}" ]086then087# echo -n IPV6 $i088# 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}"092else093/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";094fi095done096#-----------------------------------------------------------------097 098 099else100# exit 2;101echo "SITE : $SITE_A_NAME DOWN";102fi103 104 105fi106#####---------------------------- 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


