阻止网络接口上除 http 之外的所有流量

阻止网络接口上除 http 之外的所有流量

我在 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 文件的文档似乎满足了您的要求。您需要确保不在两个接口之间路由。

相关内容