diff options
Diffstat (limited to 'sample-script.sh')
-rwxr-xr-x | sample-script.sh | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/sample-script.sh b/sample-script.sh new file mode 100755 index 0000000..35d6a2a --- /dev/null +++ b/sample-script.sh @@ -0,0 +1,38 @@ +#!/bin/sh +set -x + +# Inside of dnsmasq.conf we have: +# +# server=/c.youtube.com/127.0.0.1#39128 +# server=/netflix.com/127.0.0.1#39129 +# +# The devices tun11 and tun12 are OpenVPN tun network interfaces. +# +# This script routes youtube videos over tun12 and netflix over tun11. + +sets() { + iptables -t mangle -D PREROUTING -m set --set "$1" dst,src -j MARK --set-mark "$2" 2>/dev/null + ipset -X "$1" 2>/dev/null + ipset -N "$1" iphash + iptables -t mangle -A PREROUTING -m set --set "$1" dst,src -j MARK --set-mark "$2" +} + +sets youtube 1 +sets netflix 2 + +routes() { + echo 0 > /proc/sys/net/ipv4/conf/$2/rp_filter + ip route flush table $1 2>/dev/null + ip rule del table $1 2>/dev/null + ip rule add fwmark $1 table $1 priority 1000 + ip route add default via "$(ip route show dev $2 | head -n 1 | cut -d ' ' -f 1)" table $1 +} + +routes 1 tun12 +routes 2 tun11 + +killall ipset-dns 2>/dev/null +ipset-dns youtube 39128 8.8.8.8 +ipset-dns netflix 39129 8.8.8.8 + +killall -SIGHUP dnsmasq # Clear dnsmasq's cache |