在我的服务器上,我设置了 2 个网络(eth1:172.16.1.0/24 和 eth2:172.16.2.0/24),它们都应该与互联网(接口 eth0)通信。因此,服务器使用 ufw 进行伪装。/etc/ufw/before.rule 因此包含以下规则:
-A POSTROUTING -s 172.16.1.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 172.16.2.0/24 -o eth0 -j MASQUERADE
一切正常,我可以从两个子网毫无问题地访问互联网。
现在我希望限制两个子网之间的通信。例如,我尝试过:
ufw deny from 172.16.2.0/24 to 172.16.1.0/24
或者
ufw deny from 172.16.2.0/24
所有这些都没有效果。它不会阻止 172.16.2.0/24 中的机器访问 172.16.1.0/24 中的计算机。那么我该如何过滤两个网络之间的流量呢?
答案1
您正在设置对作为路由器的机器的过滤,但没有设置它应该或不应该如何通过路由器转发流量。为此,您需要在防火墙中设置转发规则。我相信 ufw 现在支持这一点,使用 forward 关键字。请阅读 ufw 的文档,如手册页、/usr/share/docs/ufw 中的文档或程序网页以获取更多信息。我目前无法使用计算机,所以我无法为您提供一些示例。
简而言之,防火墙中有三条不同的路径需要处理。进入路由器的数据包/流量。从路由器发出的数据包/流量。通过路由器的数据包/流量,由路由器转发。它们彼此独立过滤。
您的示例全部是关于过滤进入路由器的流量。