我正在尝试弄清楚为什么防火墙没有按照我要求的方式运行,因此试图找出如何以firewalld
某种类似于配置文件的格式显示其完整的规则集iptables
。或者其他格式——我不太在意——只要它至少与iptables
或pf
配置一样可读(也就是说,这是一个相当低的门槛!)。
- 命令如
firewall-cmd --list-all
“列出区域中添加或启用的所有内容”。但这仅列出接口、服务等,没有进一步的详细信息。我看不到选项--list-all-no-really-everything
。 - 当我阅读规则时,我以为我已经找到了它
direct
,但我发现它仅适用于作为额外的“直接”规则添加的规则,而不是它首次出现的进入引擎室的活板门。 - 我看到了配置文件
/etc/firewalld
和默认值/usr/lib/firewalld
。但尽管乍一看很有希望,而且注释得很漂亮,但它似乎并没有真正告诉我太多有关当前状态的信息。类似这样的问题这个是关于导出规则(用于移动到其他地方),并表明这就是全部(我猜测在公共区域中提到的服务中提到的端口被阻止传入......?)。
我的理解(如果我错了请纠正我)是它firewalld
里面有一些类似 iptables 的东西,它负责做所有实际的工作,并且它有一些--reload
可以找到并重新加载的状态。这就是我希望找到的状态。
也许我有点愚钝,但我发现间接性和帮助性的整体水平firewall-cmd
完全令人费解。是的,众所周知,“计算机科学中的每个问题都可以通过添加另一层间接性来解决”,但有时这可能会走向极端。
我可能根本没有防火墙问题,但我无法充分了解防火墙的状态以排除这种可能性。是否有理由切换到 iptables(我绝望地想知道)?设置起来更麻烦,而且很容易出错,但至少我知道发生了什么。
我非常乐意接受挑战,或者接受别人告诉我我找错了方向。
答案1
我通常建议查看 Linux 内核正在运行的实际防火墙规则集,而不是尝试从以下方面诊断更复杂的防火墙问题:“方便使用的” 防火墙工具(例如 UFW 等)以及此类工具提供的抽象层。通常,一旦您了解了潜在问题,您就可以通过这些工具轻松解决这些问题。
虽然有些人觉得[sudo] iptables-save
这个命令[sudo] iptables -L -v -n
更好。讨论配置时,使用该选项查看行号
通常很有用。提及规则会使讨论变得更容易一些。但请记住,默认情况下仅显示 FILTER 表,您需要使用开关指定其他表。--line-numbers
#X
iptables
-t [ nat | mangle | raw]
当firewalld使用nftables后端时,请改用nft list ruleset
。
(对我来说,firewalld 实际上是另一个创建规则集的前端,这些规则集将加载到 Linux网络过滤器内核模块。您仍然可以使用其原生和更低级别的工具(例如 iptables
或更现代的nftables
后续工具)来操纵这些后端。下图显示了防火墙可以使用和整合的其他后端。)
答案2
接受的答案是正确的,我只是想为其他人补充一下,这个答案可以firewall-cmd --list-all-zones
很好地概述所有区域及其规则(与的输出相同--list-all
,但同时针对所有区域)。
IE
[root@sso-staging-01 ~]# firewall-cmd --list-all-zones
[root@sso-staging-01 ~]# firewall-cmd --list-all-zones
block
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
dmz (active)
target: default
icmp-block-inversion: no
interfaces:
sources: 172.18.16.0/20
services:
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
drop
target: DROP
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
forward: no
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client mdns samba-client ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
internal (active)
target: default
icmp-block-inversion: no
interfaces:
sources: 172.15.232.0/23
services: VRRP https
ports: 6556/tcp 443/tcp
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
legacy (active)
target: default
icmp-block-inversion: no
interfaces:
sources: 128.0.0.0/24
services: https
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
nm-shared
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources:
services: dhcp dns ssh
ports:
protocols: icmp ipv6-icmp
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule priority="32767" reject
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services:
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: 172.10.1.0/24 172.10.3.0/24
services: http https ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
work (active)
target: default
icmp-block-inversion: no
interfaces:
sources: 172.10.0.0/16
services: http https
ports: 80/tcp 443/tcp
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules: