Firewalld CentOS 7 伪装

Firewalld CentOS 7 伪装

我正在尝试在firewalld中执行与此iptables规则等效的操作

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

我怎样才能做到这一点?

答案1

要在外部区域设置伪装,请输入:

# firewall-cmd --zone=external --add-masquerade

外部的:用于启用伪装的外部网络,尤其是路由器。您不相信网络上的其他计算机不会损害您的计算机。仅接受选定的传入连接。

内部的:用于内部网络。您基本相信网络上的其他计算机不会损害您的计算机。仅接受选定的传入连接。

以供参考:

http://www.certdepot.net/rhel7-get-started-firewalld/

答案2

或者,您可以将规则添加到:/etc/firewalld/direct.xml文件例如

<?xml version="1.0" encoding="utf-8"?>
<direct>
...
  <rule priority="0" table="filter" ipv="ipv4" chain="POSTROUTING">-table nat -jump MASQUERADE --source 10.8.0.0/24 --out-interface eth0</rule>  
</direct>

然后:

firewall-cmd --reload

答案3

您不需要直接使用这样的规则。您只需将您的接口(eth0)放入外部的区域,该区域已在 RHEL7/CentOS7 中预配置,并且已打开伪装,或者您可以在接口所在的区域上启用伪装。默认情况下,它是公共的。因此,正确的答案可能是:

# firewall-cmd --zone=public --add-masquerade

或者

# firewall-cmd --change-zone=eth0 --zone=external

这确实是您需要做的全部。要仅为特定子网或范围启用 NAT,您需要 Rich Rule 或 Direct Rule。这有点复杂。您也可以简单地拒绝其他数据包,这似乎也是一个选择。

相关内容