我试图在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上的其他计算机不会损害您的计算机。 只有选定的传入连接才被接受。
以供参考:
你不要直接使用这样的规则。 您只需将您的接口(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