绕过传出连接的默认路由

时间:2011-11-03 08:08:03

标签: sockets

我正在编写一个小应用程序,需要通过机器上的多个网络接口之一进行连接。该接口不是“默认”接口(具有默认路由的接口)。是否可以将出站TCP套接字直接绑定到特定接口?

以下是一个例子:

eth0: 192.168.1.10, gateway 192.168.1.1
eth1: 192.168.2.10, gateway 192.168.2.1
default gateway: 192.168.1.1
(both interfaces can reach the Internet through different external IPs)

现在,我希望我的应用程序使用eth1连接到外部服务器,即使系统配置为使用eth0进行外部流量。

(问题可能是微不足道的,但我只是想知道是否有可能在花时间之前完成它)

目前,我正在使用带有Twisted的Python,但是如果我必须使用BSD套接字那么就可以了。

1 个答案:

答案 0 :(得分:0)

来自:http://linux.about.com/od/commands/l/blcmdl7_socket.htm

SO_DONTROUTE - 不要通过网关发送,只发送给直接连接的主机。通过在套接字MSG_DONTROUTE操作上设置send(2)标志,可以实现相同的效果。期待一个整数布尔标志。