|
@@ -1,23 +1,36 @@
|
|
|
#!/bin/sh
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
-set -e
|
|
|
|
|
|
|
+set -eu
|
|
|
|
|
|
|
|
umask 002
|
|
umask 002
|
|
|
|
|
|
|
|
-VPN_GW=$(/sbin/ip route | awk '/default/ { print $3 }')
|
|
|
|
|
-echo Saving gate $VPN_GW
|
|
|
|
|
-echo DELETING DEFAULT GW
|
|
|
|
|
|
|
+: "${VPN_IP:?VPN_IP must be set to the VPN server address}"
|
|
|
|
|
+LOCAL_NET="${LOCAL_NET:-192.168.0.0/16}"
|
|
|
|
|
+DNS_SERVER="${DNS_SERVER:-8.8.8.8}"
|
|
|
|
|
+
|
|
|
|
|
+VPN_GW=$(ip route | awk '/^default/ { print $3; exit }')
|
|
|
|
|
+if [ -z "$VPN_GW" ]; then
|
|
|
|
|
+ echo "No default gateway found" >&2
|
|
|
|
|
+ exit 1
|
|
|
|
|
+fi
|
|
|
|
|
+echo "Saving gateway $VPN_GW"
|
|
|
|
|
+
|
|
|
|
|
+echo "Deleting default gateway"
|
|
|
ip route del default
|
|
ip route del default
|
|
|
-echo SETTING $VPN_IP as the only ip to get routed through $VPN_GW
|
|
|
|
|
-ip route add $VPN_IP via $VPN_GW
|
|
|
|
|
-echo Adding 192.168.0.0/16 to the route
|
|
|
|
|
-ip route add 192.168.0.0/16 via $VPN_GW
|
|
|
|
|
-echo "nameserver 8.8.8.8" > /etc/resolv.conf
|
|
|
|
|
-echo Starting openvpn
|
|
|
|
|
|
|
+
|
|
|
|
|
+echo "Routing only $VPN_IP through $VPN_GW"
|
|
|
|
|
+ip route replace "$VPN_IP" via "$VPN_GW"
|
|
|
|
|
+
|
|
|
|
|
+echo "Routing $LOCAL_NET through $VPN_GW"
|
|
|
|
|
+ip route replace "$LOCAL_NET" via "$VPN_GW"
|
|
|
|
|
+
|
|
|
|
|
+echo "nameserver $DNS_SERVER" > /etc/resolv.conf
|
|
|
|
|
+
|
|
|
ip route
|
|
ip route
|
|
|
|
|
+echo "Starting openvpn"
|
|
|
cd /vpn
|
|
cd /vpn
|
|
|
|
|
|
|
|
-until openvpn vpn; do
|
|
|
|
|
|
|
+until openvpn --config vpn; do
|
|
|
echo "Openvpn crashed, respawning"
|
|
echo "Openvpn crashed, respawning"
|
|
|
sleep 10
|
|
sleep 10
|
|
|
-done
|
|
|
|
|
|
|
+done
|