Linux 防火墙的核心模块是 Netfilter,它是内核级别的框架,而用户态工具 iptables/nftables 用于配置规则。以下是详细解析:
bash
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH流量
filter
(默认)、nat
、mangle
、raw
。INPUT
、OUTPUT
、FORWARD
(filter 表);PREROUTING
、POSTROUTING
(nat 表)。ACCEPT
、DROP
、REJECT
、LOG
。bash
nft add rule ip filter INPUT tcp dport 22 accept # 同等规则
zones
和 services
抽象化规则。
bash
firewall-cmd --add-service=ssh --permanent
bash
ufw allow 22/tcp
nf_conntrack
:跟踪网络连接状态(如 ESTABLISHED、RELATED)。iptable_filter
:实现基础过滤功能。iptable_nat
:提供 NAT 功能(需加载模块 modprobe iptable_nat
)。lsmod | grep nf_conntrack
。systemctl status firewalld
。nf_conntrack
哈希表冲突:调整 /proc/sys/net/nf_conntrack_max
。nftables
替代 iptables
(更少开销)。bash
iptables -L -v -n # iptables
nft list ruleset # nftables
bash
dmesg | grep DROP # 查看内核丢弃的包
nf_conntrack
)。