如何通过 ssh 将流量隧道传输到某些目的地?

如何通过 ssh 将流量隧道传输到某些目的地?

我想通过一个 ssh socks5 发送发往特定 ip/子网的流量,同时通过另一个 socks5 隧道路由其他流量。

我尝试使用以下配置的 tsocks:

path {
        server = 127.0.0.1
        server_port = 3001
        server_type = 5
        reaches = 1.2.3.4/32
}

但是当我尝试“tsocks wget 1.2.3.4”时,它没有通过该代理并给出错误 IP (0.0.0.0) & 18:32:14 libtsocks(16065): SUBNET (0.0.0.0) != IP on line 33 in configuration file, ignored

我不明白这个错误。

我也在想是否可以使用 iptables 来做到这一点。

关于如何做到这一点有什么建议吗?

答案1

您可以sshuttle按照说明使用如何通过 SSH 隧道路由我的互联网?

答案2

我也偶然发现了 redsocks 对此的解决方案http://darkk.net.ru/redsocks/

本质上,在您运行 ssh 隧道并配置 redsocks 以连接到这些隧道后,您可以添加 iptables:

# Create new chain
iptables -t nat -N REDSOCKS

# Do not route the following through redsocks
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
#exclude your ssh tunnels from being routed through redsocks...and themselves
iptables -t nat -I REDSOCKS -d tunnel_address1 -j RETURN 
iptables -t nat -I REDSOCKS -d tunnel_address2 -j RETURN 

#redirect set of addresses to one socks proxy running on port 30000
iptables -t nat -A REDSOCKS -p tcp -d 1.2.3.4 -j REDIRECT --to-ports 30000
#redirect another set of addresses to a different proxy
iptables -t nat -A REDSOCKS -p tcp -d 4.3.2.1 -j REDIRECT --to-ports 30001

#connect output to redsocks chain
iptables -t nat -A OUTPUT -p tcp -j REDSOCKS

这似乎有效。我也会尝试 sshuttle 解决方案,因为它看起来更简单一些。

相关内容