指定SSH隧道的出接口

指定SSH隧道的出接口

我有一台机器,两个接口上有两个公共 IP 地址。这台机器正在运行sshd。在使用 SOCKS 接口(即 )创建隧道时,有没有办法指定-D使用哪个接口进行传出连接?

答案1

严格来说,您可以通过组合 ssh 中的 -b 选项(如 mgjk 所建议)和路由来解决您的问题。假设您正在尝试构建到站点 8.8.8.7 的隧道(只是一个虚构的示例),并且您希望连接通过 eth1,则命令

 sudo route add -host 8.8.8.7 dev eth1

将添加正确的路线,一切都应该很好。

不过,这也是“策略路由”应用的完美案例。它需要在设置隧道的机器上配置路由表(IE命令所在的那个ssh -D ...已发出)只是因为它是唯一存在两个接口的接口。

David Schwartz 给出了简洁而充分的解释在这个网站上。唯一重要的细节是:假设 eth0 是 192.168.1.2,eth1 是 10.0.0.2,那么你可能会说

 ip rule add from 10.0.0.2 table <NAME1>
 ip rule add from 192.168.1.2 table <NAME2>

此时,您可以通过 -b 将 ssh 连接绑定到 eth1 的地址,就完成了。

答案2

当你使用 -b 时会发生什么?

 -b bind_address
         Use bind_address on the local machine as the source address of
         the connection.  Only useful on systems with more than one
         address.

相关内容