Firewalld CentOS 7伪装

我试图在firewalld做这个iptables规则的等价物

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

我怎样才能做到这一点?

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

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

外部 :用于特别针对路由器启用伪装的外部networking。 您不相信networking上的其他计算机不会损害您的计算机。 只有选定的传入连接才被接受。

内部 :用于内部networking。 您大多相信networking上的其他计算机不会损害您的计算机。 只有选定的传入连接才被接受。

以供参考:

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

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

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

要么

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

这是你所需要做的。 要仅为特定子网或范围启用NAT,您需要Rich Rule或Direct规则。 这有点复杂 您也可以简单地拒绝其他人的数据包,这似乎也是一种select。

或者,您可以将规则添加到: /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