openvpn_init.sh 744 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/bin/sh
  2. set -eu
  3. umask 002
  4. : "${VPN_IP:?VPN_IP must be set to the VPN server address}"
  5. LOCAL_NET="${LOCAL_NET:-192.168.0.0/16}"
  6. DNS_SERVER="${DNS_SERVER:-8.8.8.8}"
  7. VPN_GW=$(ip route | awk '/^default/ { print $3; exit }')
  8. if [ -z "$VPN_GW" ]; then
  9. echo "No default gateway found" >&2
  10. exit 1
  11. fi
  12. echo "Saving gateway $VPN_GW"
  13. echo "Deleting default gateway"
  14. ip route del default
  15. echo "Routing only $VPN_IP through $VPN_GW"
  16. ip route replace "$VPN_IP" via "$VPN_GW"
  17. echo "Routing $LOCAL_NET through $VPN_GW"
  18. ip route replace "$LOCAL_NET" via "$VPN_GW"
  19. echo "nameserver $DNS_SERVER" > /etc/resolv.conf
  20. ip route
  21. echo "Starting openvpn"
  22. cd /vpn
  23. until openvpn --config vpn; do
  24. echo "Openvpn crashed, respawning"
  25. sleep 10
  26. done