我在 Ubuntu 机器上有两个网络接口,它们通向两个不同的网络,但都有互联网网关。
我需要限制它,以便任何传出它发出的 http 请求(即通过 wget)仅通过eth0
,所有其他流量都通过eth1
。
我敢说解决方案可能与 iptables 有关,但我没有这方面的经验,因此非常感谢大家的帮助。
答案1
您可以使用 IPTables 来实现这一点。您需要指定一个预路由(或转发)规则,规定端口 80 上的任何内容都应路由到 eth0,然后在常规路由规则中默认路由到 eth1。
我构建 IPTables 规则已经有一段时间了,所以我无法想出确切的规则。
答案2
如果仅 wget 流量到达另一个接口就足够了,您可以执行以下操作:
首先,了解路由表和多条默认路由:http://lartc.org/howto/lartc.rpdb.multiple-links.html
设置您的网络,以便默认路由表通过 eth1 发送流量。然后添加一条规则,即来自 eth0 ip 地址的流量使用 eth0 的路由表。然后使用 wget 选项 --bind-address 绑定到 eth0 ip 地址。
如果您不使用可以指定绑定地址的 wget,另一种方法是设置 www 代理并将其(仅)绑定到 eth0 地址,然后使用该代理。
答案3
我想说编辑 Apache,以“监听”特定 IP 地址。默认情况下,Apache 监听全部您的机器可能具有的 IP 地址。
查看/etc/apache2/sites-enabled/xxx
并检查Listen
指令。恐怕我不使用 Ubunutu,所以看看
grep -r -i "listen" /etc/apache2/
找到该文件,并将其更改为:
# Listen <IP ADDRESS>:<PORT>
Listen 10.2.3.4:80
答案4
看看岸墙。 masq 文件的文档似乎满足了您的要求。您需要确保不在两个接口之间路由。