diff options
author | Parménides GV <parmegv@sdf.org> | 2014-08-02 10:52:28 +0200 |
---|---|---|
committer | Parménides GV <parmegv@sdf.org> | 2014-08-02 10:52:28 +0200 |
commit | 4aedacdf92ab2fc08a1e39618761bc1eb96427d6 (patch) | |
tree | f000311e97598ab3fc42e2bea23e6cb342ad166c /ics-openvpn-stripped/main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up | |
parent | b28eeb08e8ec3baafdd9388cc5b70c6c84db9cf1 (diff) | |
parent | 0393ba6656ce6cf679a2c4663275b3ed0f1a34b9 (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-x | ics-openvpn-stripped/main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up | 49 |
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 |