#!/bin/bash # Freifunk Community Pinneberg # Automatisierung Exit-VPN ip route replace 0.0.0.0/1 via $4 table freifunk ip route replace 128.0.0.0/1 via $4 table freifunk # Prüfe, ob Parameter angegeben sind. $1 ist der Provider. # Falls nicht, versuche den Provider aus der Konfiguration zu ermitteln if [ $# -eq 0 ]; then VPNCONF=$(grep -e "^AUTOSTART=" /etc/default/openvpn) PROVIDER=$(sed -e 's/^"//' -e 's/"$//' <<< ${VPNCONF#*=}) else PROVIDER=$1 fi # Masquerading Regel überprüfen und ggf. korrigieren FWRULE=$(iptables --line-numbers -t nat -vnL | grep MASQUERADE | head -n 1 | awk '{$1=$1};1') NATIF=$(echo "$FWRULE" | cut -d' ' -f 8) RULENO=$(echo "$FWRULE" | cut -d' ' -f 1) if [ "$NATIF" != "$PROVIDER" ]; then logger -t exitvpn[$$] "change firewall interface from '$NATIF' to '$PROVIDER' (rule #$RULENO)" iptables -t nat -D POSTROUTING $RULENO iptables -t nat -A POSTROUTING -o $PROVIDER -j MASQUERADE fi exit 0