拥有多个 IP 地址,是否可以让任意网络应用程序在与外界建立连接时仅使用特定的 IP 地址?
系统范围内,可以使用路由。有些应用程序可以为此配置。但是有没有通用的方法呢?
比如,浏览器应该始终使用绑定到“eth0”的 IP,而 torrent 客户端应该使用绑定到“eth1”的 IP。
技术上,这应该bind(2)
在创建客户端套接字时明确传递一个特定的 IP 地址来调用。
答案1
答案2
我唯一的建议是利用 iptables 将流量从一个接口重定向到另一个接口。
以下是其他人做过类似事情的链接:http://straylink.wordpress.com/2006/08/16/using-iptables-to-redirect-packets/
本质上,命令是这样的:
iptables -t nat -A PREROUTING -p tcp -d 198.168.1.254 --dport 80 -j REDIRECT --to-ports 8080
为了彻底窃取内容(以防内容消失),
上述规则将 PREROUTING 命令添加到你的 nat 表中,规定任何发往 192.168.1.254 端口 80 的 TCP 数据包都应重定向到本地主机端口 8080。因此,将上述示例分解为模板格式,你有
iptables -t nat -A PREROUTING -p PROTO -d DEST_IP --dport DEST_PORT -j REDIRECT --to-ports LOCAL_PORTS