CentOS 防火墙性能优化实战
一 规则与策略优化
sudo firewall-cmd --set-default-zone=worksudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" ct state established,related accept'sudo ipset create whitelist hash:net;sudo ipset add whitelist 203.0.113.0/24;sudo firewall-cmd --permanent --zone=work --add-rich-rule='rule family="ipv4" source ipset=whitelist accept';sudo firewall-cmd --reloadsudo firewall-cmd --set-log-denied=all二 连接跟踪与内核网络参数
net.netfilter.nf_conntrack_max(如 2,000,000 起步,按内存与业务评估)net.netfilter.nf_conntrack_tcp_timeout_established(如 600–1200 秒)net.ipv4.tcp_fin_timeout=2、net.ipv4.tcp_max_tw_buckets=36000net.ipv4.tcp_max_syn_backlog=16384、net.core.somaxconn=16384net.ipv4.ip_local_port_range="40000 65000"net.ipv4.tcp_syncookies=1三 系统资源与文件描述符
ulimit -n 65536/etc/security/limits.conf 增加 * soft nofile 65536、* hard nofile 65536,重新登录生效。net.core.netdev_max_backlog、net.core.wmem_max 等),以匹配业务峰值与网卡队列能力。四 架构与运维优化
五 快速检查清单
| 优化项 | 关键动作 | 验证方式 |
|---|---|---|
| 规则顺序与默认策略 | 先放行已建立连接;合并重复规则;默认拒绝 | sudo firewall-cmd --list-all;连接压测 |
| 使用 ipset | 将大量 IP/网段收敛为 ipset | ipset list;规则命中统计 |
| 连接跟踪 | 调整 nf_conntrack_max/timeout | `conntrack -L |
| 文件描述符 | limits.conf 提升至 65536 | ulimit -n;服务重启后复核 |
| 日志策略 | 仅记录被拒绝或关键事件 | journalctl -u firewalld;日志量监控 |
| 以上清单配合压测工具(如 wrk、ab、iperf3)与监控(如 sar、ss、conntrack)进行前后对比,可量化性能收益。 |