]> www.git.dmfe.net Git - dotfiles/commitdiff
Exclude VPN server ip from new default route.
authorDmitry Fedotov <dm.fe@yandex.ru>
Mon, 8 Mar 2021 20:21:25 +0000 (23:21 +0300)
committerDmitry Fedotov <dm.fe@yandex.ru>
Mon, 8 Mar 2021 20:21:25 +0000 (23:21 +0300)
scripts/vpn/l2tp

index 06f458ce5847eae9227a69e18e3782510db8cbe7..32217d052503608125fa50578a30980b58326255 100755 (executable)
@@ -7,6 +7,18 @@ print_help() {
     printf 'l2tp --vpn_name vpn-name [--connect|--disconnect|-c|-d]\n'
 }
 
+find_vpn_ip() {
+    local vpn_name=$1
+
+    ip=$(cat ~/.local/share/vpns | grep ${vpn_name} | awk '{print $3}')
+    echo $ip
+}
+
+find_gw_ip() {
+    ip=$(ip route | awk '/^default via/ {print $3; exit}')
+    echo $ip
+}
+
 connect() {
     local vpn_name=$1
     echo "connecting (VPN Name: $1)..."
@@ -14,6 +26,7 @@ connect() {
     sudo ipsec up ${vpn_name}
     echo "c ${vpn_name}" | sudo tee /var/run/xl2tpd/l2tp-control
     sleep 5
+    sudo route add "$(find_vpn_ip ${vpn_name})" gw "$(find_gw_ip)"
     sudo route add default dev ppp0
 }
 
@@ -22,6 +35,7 @@ disconnect() {
     echo "disconnecting (VPN Name: ${vpn_name})..."
 
     sudo route del default dev ppp0
+    sudo route del "$(find_vpn_ip ${vpn_name})" gw "$(find_gw_ip)"
     echo "d ${vpn_name}" | sudo tee /var/run/xl2tpd/l2tp-control
     sudo ipsec down ${vpn_name}
 }