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。
有没有我可以分析的日志以调试问题?
提前致谢。
因为您没有看到任何iptables规则,并不意味着firewalld不起作用。实际上firewalld转而使用nftables作为后端。所以你可以找到你的规则,例如:
nft list ruleset
Run Code Online (Sandbox Code Playgroud)
您为ssh和http添加的规则可能在链中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