aboutsummaryrefslogtreecommitdiffstats
path: root/sample-script.sh
diff options
context:
space:
mode:
Diffstat (limited to 'sample-script.sh')
-rwxr-xr-xsample-script.sh38
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