From 5595e098937476f535353eb5e2459c9954474e59 Mon Sep 17 00:00:00 2001 From: Zhuoyun Wei Date: Sun, 7 Feb 2016 21:02:46 +0800 Subject: [PATCH] Simple script to handle default routing --- utils/addroute.sh | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 utils/addroute.sh diff --git a/utils/addroute.sh b/utils/addroute.sh new file mode 100755 index 0000000..743bbd5 --- /dev/null +++ b/utils/addroute.sh @@ -0,0 +1,50 @@ +#!/bin/bash -x + +# A simple script handling default routing for GoVPN, +# inspired by vpnc-script, but much simpler. + +# List of parameters passed through environment +# - reason -- why this script is called: +# pre-init, connect, disconnect +# - VPNGATEWAY -- public address of vpn gateway +# - TAPDEV -- tap device +# - INTERNAL_IP4_ADDRESS -- e.g. 172.0.0.2/24 +# - INTERNAL_IP4_GATEWAY -- e.g. 172.0.0.1 + + +set_up_dev() { + ip tuntap add dev $TAPDEV mode tap +} + + +tear_down_dev() { + ip tuntap del dev $TAPDEV mode tap +} + + +do_connect() { + OLDGW=$(ip route show 0/0 | sed -e 's/^default//') + ip link set dev $TAPDEV up + ip addr add $INTERNAL_IP4_ADDRESS dev $TAPDEV + ip route add $VPNGATEWAY $OLDGW + ip route add 0/1 via $INTERNAL_IP4_GATEWAY dev $TAPDEV + ip route add 128/1 via $INTERNAL_IP4_GATEWAY dev $TAPDEV +} + + +do_disconnect() { + ip route del $VPNGATEWAY +} + + +case $reason in + pre-init) + set_up_dev + ;; + connect) + do_connect + ;; + disconnect) + do_disconnect + ;; +esac -- 2.44.0