firewalld 在 CentOS 8 中不起作用:在 iptables 中根本没有创建任何规则

Rod*_*nie 6 iptables centos firewalld centos8

我最近使用本教程将全新安装的 CentOS 7 升级到 CentOS 8:

https://www.tecmint.com/upgrade-centos-7-to-centos-8/

我没有安装额外的软件,只有基本安装。升级后,我尝试做的第一件事就是只打开 SSH 和 HTTP 的大门,所以我启用并启动了 firewalld:

systemctl enable firewalld
systemctl start firewalld
systemctl status firewalld
? firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-12-24 11:05:50 -02; 10min ago
     Docs: man:firewalld(1)
 Main PID: 7620 (firewalld)
    Tasks: 2 (limit: 17886)
   Memory: 22.1M
   CGroup: /system.slice/firewalld.service
           ??7620 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

dez 24 11:05:49 renie.cc systemd[1]: Stopped firewalld - dynamic firewall daemon.
dez 24 11:05:49 renie.cc systemd[1]: Starting firewalld - dynamic firewall daemon...
dez 24 11:05:50 renie.cc systemd[1]: Started firewalld - dynamic firewall daemon.
Run Code Online (Sandbox Code Playgroud)

然后添加 ssh 和 http 服务:

firewall-cmd --add-service http
firewall-cmd --add-service http --permanent
firewall-cmd --add-service ssh
firewall-cmd --add-service ssh --permanent
firewall-cmd --add-service ssh
firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: http ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
Run Code Online (Sandbox Code Playgroud)

但我在 IPTables 中根本看不到任何规则:

iptables -nvL
Chain INPUT (policy ACCEPT 143 packets, 13998 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 114 packets, 13295 bytes)
 pkts bytes target     prot opt in     out     source               destination         
Run Code Online (Sandbox Code Playgroud)

即使在重新启动服务器后,也不会创建任何规则。这可能是由 CentOS 7 引起的吗?CentOS 8 升级?

在升级这台服务器之前,我没有测试或使用 firewalld,但我有其他 CentOS 7 服务器,它们有可用的 firewalld。

有没有我可以分析的日志以调试问题?

提前致谢。

A.B*_*A.B 7

因为您没有看到任何iptables规则,并不意味着firewalld不起作用。实际上firewalld转而使用nftables作为后端。所以你可以找到你的规则,例如:

nft list ruleset
Run Code Online (Sandbox Code Playgroud)

您为sshhttp添加的规则可能在链中filter_IN_public_allow

        chain filter_IN_public_allow {
                tcp dport ssh ct state new,untracked accept
                tcp dport http ct state new,untracked accept
        }
Run Code Online (Sandbox Code Playgroud)

您可能还会在 的输出中找到空的iptables规则(但被视为nftables规则)nft list ruleset,因为iptables使用的是nftables兼容内核 API:

# iptables -V
iptables v1.8.2 (nf_tables)
Run Code Online (Sandbox Code Playgroud)

有用的链接:Redhat - Firewalld:未来是 nftables