Routing
通過 SOCKS 代理重定向來自 eth1 和 eth2 的所有數據包
有沒有辦法通過 SOCKS 代理 (Tor) 重定向所有進出 eth1 和 eth2 的流量,UDP 和 TCP,然後再通過 eth0?
eth0: Internet in - 連接到主路由器,然後是電纜調製解調器
eth1:將 USB 乙太網埠設置為調製解調器(我想這就是我要找的詞,對吧?)
eth2:將 USB WiFi 天線設置為 WiFi 熱點
我可以使用類似 iptables 的東西直接通過 Tor 路由它,還是需要像 Privoxy 這樣的適配器?
首先,您需要tun2socks(通常是“badvpn”包的一部分)。tun2socks 設置了一個虛擬介面,您可以通過該介面路由流量,並且該流量將通過目標 socks 代理髮送。
設置它有點棘手,因為您只想通過隧道路由某些流量。
這個腳本應該做你想做的事:
#!/bin/bash socks_server=127.0.0.1:8080 id="$RANDOM" tun="$(printf 'tun%04x' "$id")" ip tuntap add dev $tun mode tun ip link set $tun up ip addr add 169.254.1.1/30 dev $tun sysctl -w net.ipv4.conf.$tun.forwarding=1 ip rule add fwmark $id lookup $id ip route add default via 169.254.1.2 table $id iptables -t mangle -I PREROUTING -i eth1 -p tcp -j MARK --set-mark $id iptables -t mangle -I PREROUTING -i eth2 -p tcp -j MARK --set-mark $id badvpn-tun2socks --tundev $tun --netif-ipaddr 169.254.1.2 --netif-netmask 255.255.255.252 --socks-server-addr $socks_server iptables -t mangle -D PREROUTING -i eth2 -p tcp -j MARK --set-mark $id iptables -t mangle -D PREROUTING -i eth1 -p tcp -j MARK --set-mark $id ip route del default via 169.254.1.2 table $id ip rule del from fwmark $id lookup $id ip tuntap del dev $tun mode tun
解釋:
socks_server=127.0.0.1:8080
這是我們將使用的 socks 伺服器。
id="$RANDOM" tun="$(printf 'tun%04x' "$id")"
這些生成用於隧道的隨機 ID。由於系統上可能有其他隧道,我們不能只使用
tun0
ortun1
。99% 的時間這會正常工作。不過相應地調整。
ip tuntap add dev $tun mode tun ip link set $tun up ip addr add 169.254.1.1/30 dev $tun sysctl -w net.ipv4.conf.$tun.forwarding=1
這些設置隧道介面
tun2socks
都會用到。
ip rule add fwmark $id lookup $id ip route add default via 169.254.1.2 table $id
這些創建了一個帶有單個規則的路由表,該規則
$id
通過隧道發送帶有防火牆標記(接下來介紹)的任何流量。
iptables -t mangle -I PREROUTING -i eth1 -p tcp -j MARK --set-mark $id iptables -t mangle -I PREROUTING -i eth2 -p tcp -j MARK --set-mark $id
$id
這些在任何傳入的 TCP 數據包上設置防火牆標記eth1
或eth2
. 我們只想匹配 TCP。Socks 無法處理 UDP 或 ICMP(tun2socks 確實有轉發 UDP 的方法,但它更複雜,所以我將其排除在外)。
badvpn-tun2socks --tundev $tun --netif-ipaddr 169.254.1.2 --netif-netmask 255.255.255.252 --socks-server-addr $socks_server
這會啟動 tun2socks。它會一直處於前台,直到被終止。
iptables -t mangle -D PREROUTING -i eth2 -p tcp -j MARK --set-mark $id iptables -t mangle -D PREROUTING -i eth1 -p tcp -j MARK --set-mark $id ip route del default via 169.254.1.2 table $id ip rule del from fwmark $id lookup $id ip tuntap del dev $tun mode tun
這些會破壞我們在設置過程中創建的所有內容。它們只會在
badvpn-tun2socks
退出後執行。