#!/bin/sh set -eu umask 002 : "${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 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 echo "Starting openvpn" cd /vpn until openvpn --config vpn; do echo "Openvpn crashed, respawning" sleep 10 done