我的 CentOS 7.3.1611 系统中有四个接口,位于三个区域:
# firewall-cmd --get-active-zones
dmz
interfaces: ens192
internal
interfaces: ens256 ens161
external
interfaces: ens224
Run Code Online (Sandbox Code Playgroud)
我希望两个内部区域上的系统能够相互通信。
我尝试添加双向直接规则:
# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o ens256 -i ens161 -j ACCEPT
# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens256 -o ens161 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
...因为这就是我允许内部网络之一与 dmz 网络通信的方式,但是 A) 这似乎在区域内情况下不起作用;B)由于该命令不接受该--permanent标志,我怀疑这样的命令能否在重新启动后继续存在。
两个内部接口可以与外部(互联网)区域正确通信。
如何允许同一区域中两个接口之间的流量流动?
小智 3
在谷歌搜索有关 Firewalld 的类似多接口防火墙主题时发现了您的问题。大约一年后,您的问题仍未得到解答,我想知道您遇到的 --permanent 问题是否与参数顺序有关。
在 Enterprise Linux 7.5 的 0.4.4.4 版本中,firewall-cmd 的手册页清楚地表明您需要在 --direct 之前添加 --permanent。这可能是因为 --direct 之后的任何参数都是 direct 的子参数,而不是firewall-cmd。所以像这样运行你的命令:
# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -o ens256 -i ens161 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
关于两个内部接口的问题......一方面,您需要查看输出# iptables -L并绘制出链的流动方式。您在那里放置的命令会在链顶部的转发链中插入一条规则,优先级为 0。我猜测还有另一个具有更高优先级的链,例如“FORWARD_IN_ZONES”,最终会丢弃您的数据包。
此外,在最新版本的firewalld中,您可以运行# firewall-cmd --set-log-denied=all以查看有关丢弃数据包的信息。日志应包含创建 drop 的链名称。
| 归档时间: |
|
| 查看次数: |
15846 次 |
| 最近记录: |