多网卡服务器防火墙应按网络角色分层管理:将网卡依用途绑定至public、internal、trusted区域,按区域配置最小必要策略,设默认drop策略并保障状态连接与lo放行,最后验证与备份规则。

多网卡服务器的防火墙规则不是“写一堆 iptables”,而是按网络角色分层管理。核心是把每块网卡归入合适的信任区域,再针对区域设定最小必要策略。
明确网卡用途与对应区域
不同网卡承载不同流量类型,必须先分类:
- 面向互联网的网卡(如 enp0s3、eth0)→ 绑定到
public区域 - 内部服务通信网卡(如 enp0s8、eth1)→ 绑定到
internal区域 - 带外管理网卡(如 mgmt0、eno2)→ 绑定到
trusted区域
执行命令示例(以 CentOS/RHEL 为例):
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
firewall-cmd --permanent --zone=public --add-interface=enp0s3 firewall-cmd --permanent --zone=internal --add-interface=enp0s8 firewall-cmd --permanent --zone=trusted --add-interface=eno2 firewall-cmd --reload
按区域配置差异化放行策略
每个区域只开业务必需的端口,且限制来源:
-
public区:仅开放 HTTPS(443)、SSH(22),并严格限源 IPfirewall-cmd --permanent --zone=public --add-service=https firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.50" port port="22" protocol="tcp" accept'
-
internal区:允许数据库(3306)、API(8080)、ICMP,不限源(因属可信内网)firewall-cmd --permanent --zone=internal --add-port=3306/tcp firewall-cmd --permanent --zone=internal --add-port=8080/tcp firewall-cmd --permanent --zone=internal --add-icmp-block-inversion
-
trusted区:默认全通,但建议显式限定管理网段访问 SSH 和监控端口firewall-cmd --permanent --zone=trusted --add-rich-rule='rule family="ipv4" source address="10.10.0.0/16" port port="22" protocol="tcp" accept' firewall-cmd --permanent --zone=trusted --add-rich-rule='rule family="ipv4" source address="10.10.0.0/16" port port="9100" protocol="tcp" accept'
确保连接状态感知与默认拒绝
避免“开了端口却拦不住异常连接”:
- 默认策略设为
drop或block(推荐drop)firewall-cmd --set-default-zone=drop
- 必须保留 ESTABLISHED/RELATED 流量放行,否则响应包被丢弃
(firewalld 默认已启用,无需额外操作;若用 raw iptables,则需加-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT) - 本地回环(lo)始终放行
(firewalld 自动处理,不需手动添加)
验证与持续维护
规则生效后务必验证:
- 查看当前活跃区域:
firewall-cmd --get-active-zones - 检查某区域全部配置:
firewall-cmd --zone=internal --list-all - 测试从各网段发起连接(如 curl、telnet、ssh),确认只允许预期访问
- 定期导出规则备份:
firewall-cmd --list-all-zones > /root/firewall-backup-$(date +%F).txt
不复杂但容易忽略。

















