summaryrefslogtreecommitdiff
path: root/ics-openvpn-stripped/main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up
diff options
context:
space:
mode:
authorParménides GV <parmegv@sdf.org>2014-08-02 10:52:28 +0200
committerParménides GV <parmegv@sdf.org>2014-08-02 10:52:28 +0200
commit4aedacdf92ab2fc08a1e39618761bc1eb96427d6 (patch)
treef000311e97598ab3fc42e2bea23e6cb342ad166c /ics-openvpn-stripped/main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up
parentb28eeb08e8ec3baafdd9388cc5b70c6c84db9cf1 (diff)
parent0393ba6656ce6cf679a2c4663275b3ed0f1a34b9 (diff)
Merge branch 'bug/There-are-two-different-notifications-#5794' into develop
Diffstat (limited to 'ics-openvpn-stripped/main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up')
-rwxr-xr-xics-openvpn-stripped/main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up49
1 files changed, 49 insertions, 0 deletions
diff --git a/ics-openvpn-stripped/main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up b/ics-openvpn-stripped/main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up
new file mode 100755
index 00000000..661ec313
--- /dev/null
+++ b/ics-openvpn-stripped/main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# Bring up vpn routing.
+
+# calculate the network address
+remote_network=`ipcalc -n "$remote"/"$remote_netmask_bits"`
+remote_network="${remote_network#*=}"
+
+# add the stuff that doesn't change if it's not already there
+grep -q '^202 ' /etc/iproute2/rt_tables
+if [ "$?" -ne 0 ]
+then
+ echo 202 vpn.out >> /etc/iproute2/rt_tables
+fi
+grep -q '^203 ' /etc/iproute2/rt_tables
+if [ "$?" -ne 0 ]
+then
+ echo 203 vpnonly.out >> /etc/iproute2/rt_tables
+fi
+ip rule ls | grep -q 'lookup vpn.out *$'
+if [ "$?" -ne 0 ]
+then
+ ip rule add fwmark 2 table vpn.out
+fi
+ip rule ls | grep -q 'lookup vpnonly.out *$'
+if [ "$?" -ne 0 ]
+then
+ ip rule add fwmark 3 table vpnonly.out
+fi
+
+# route VPN traffic using the normal table
+iptables -A OUTPUT -t mangle -p "$proto" -d "$remote" --dport "$remote_port" \
+ -j ACCEPT
+
+# route all other traffic to that host via VPN
+iptables -A OUTPUT -t mangle -d "$remote_network"/"$remote_netmask_bits" \
+ -j MARK --set-mark 2
+
+# route all ICMP pings over the VPN
+iptables -A OUTPUT -t mangle --protocol icmp --icmp-type echo-request \
+ -j MARK --set-mark 3
+
+# NAT traffic going over the VPN, so it doesn't have an unknown address
+iptables -t nat -A POSTROUTING -o "$1" -j SNAT --to-source "$4"
+
+# add routing commands
+ip route add "$remote_network"/"$remote_netmask_bits" via "$5" table vpn.out
+ip route add table vpnonly.out via "$5"
+ip route flush cache