iptables -A PREROUTING -i usb0 -t mangle -p tcp --dport 8080 -j MARK --set-mark 1
iptables -L
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
//将标记1的stream量路由到myusb0表
ip rule add fwmark 1 table myusb0
IP路由LS
192.168.0.0/24 dev usb1 proto kernel scope link src 192.168.0.136 metric 1 192.168.3.0/24 dev usb0 proto kernel scope link src 192.168.3.182 metric 1
ip规则ls
0: from all lookup local 32762: from all fwmark 0x1 lookup myusb0 32763: from 192.168.3.0/24 lookup myusb0 32764: from 192.168.0.1/24 lookup myusb1 32766: from all lookup main 32767: from all lookup default
ip路由ls表myusb0
default via 192.168.3.2 dev usb0
ip route ls table myusb1
default via 192.168.0.1 dev usb1
//在8080端口打开袜子
ssh -f -N -D 0.0.0.0:8080 [email protected]
/ /检查是否有效
curl –socks5 192.168.3.182:8080 ip.appspot.com
channel 1: open failed: administratively prohibited: open failed curl: (7) Failed to receive SOCKS5 connect request ack.
我有两个不同的互联网服务提供商的互联网连接,我想打开每个代理/袜子5。 我认为将每个接口与一个端口号相关联以便我们可以pipe理这些连接是有意义的。
我为每个设备( usb1和usb0 )创build了两个路由表( myusb0和myusb1 ),然后根据端口号(例如,在端口8080标记为1)标记stream量,并将该标记上的stream量路由到特定表( myusb0 )。 然后我试图打开一个关于该IP的socks5,并在本地尝试,但由于某些原因,它不起作用。
一旦我在本地工作,我想我应该以相反的方式打开袜子,这样我就可以将它提供给需要使用它的远程服务器。
任何想法,为什么它目前不工作,我应该如何解决它? 由于某些原因,我认为袜子连接试图从主表默认网关,而不是设置,而是遵循端口8080标记规则,并尝试myusb0表。 我正在使用Ubuntu(最新版本)。
应该提到的是,两个ISP都提供dynamic的IP
编辑
正如我怀疑,似乎8080港口的stream量没有被路由(从来不是袜子问题),但我不知道为什么
curl portquiz.net:8080 curl: (7) Couldn't connect to server
其实,当你这样做的时候:
$ ssh -f -N -D 0.0.0.0:8080 [email protected] $ curl --socks5 192.168.3.182:8080 ip.appspot.com
发生以下事件:
SSHD无法打开一个新的连接,因为在路由器框中正在生成ip.appspot.com:80的 IP数据包,而不是通过它路由。 因此,数据包不会收到标记,内核会跳过myusb0和myusb1表,并且主表中缺less匹配的路由条目会导致networking不可达错误。 如果你想pipe理本地生成的数据包, mangle表下的右链将是OUTPUT而不是PREROUTING 。
关于端口testing问题:
$ curl portquiz.net:8080 curl: (7) Couldn't connect to server
请检查路由器configuration:
在“主”表中是否有默认网关?
$ ip route show
数据包转发是否启用?
$ cat /proc/sys/net/ipv4/ip_forward
数据包是NAT吗?
$ iptables -t nat -nvL # iptables -t nat -A POSTROUTING -o myusb0 -j MASQUERADE # iptables -t nat -A POSTROUTING -o myusb1 -j MASQUERADE