通过 SOCKS 代理重定向来自 eth1 和 eth2 的所有数据包

通过 SOCKS 代理重定向来自 eth1 和 eth2 的所有数据包

有没有办法通过 SOCKS 代理 (Tor) 重定向所有进出 eth1 和 eth2 的流量(UDP 和 TCP),然后再通过 eth0 传递?

eth0:互联网输入 - 通向主路由器,然后通向电缆调制解调器

eth1:USB 以太网端口设置为调制解调器(我想这就是我要找的词,对吧?)

eth2:USB WiFi 天线设置为 WiFi 热点

我可以使用 iptables 之类的东西直接通过 Tor 路由它,还是需要像 Privoxy 这样的适配器?

答案1

首先,你需要tun2socks(通常是“badvpn”包的一部分)。 tun2socks 设置一个虚拟接口,您可以通过该接口路由流量,并且该流量将通过目标袜子代理发送。

设置起来有点棘手,因为您只想通过隧道路由某些流量。

这个脚本应该做你想做的事:

#!/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

这是我们将使用的袜子服务器。
 

id="$RANDOM"
tun="$(printf 'tun%04x' "$id")"

它们会生成一个用于隧道的随机 ID。由于系统上可能有其他隧道,因此我们不能只使用tun0or tun1。 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这些在传入eth1或 的任何 TCP 数据包上设置防火墙标记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退出时运行。

答案2

$ badvpn-tun2socks --tundev $tun --netif-ipaddr 169.254.1.2 \
    --netif-netmask 255.255.255.252 --socks-server-addr $socks_server \
    --udpgw-transparent-dns

笔记:您必须添加--udpgw-transparent-dnsDNS 请求。

相关内容