如何通过 firewalld 配置 Rocky Linux 9 中的多网段路由?
- 开启 IP 转发(/etc/sysctl.conf 中设置 net.ipv4.ip_forward=1)并执行 sysctl -p
- 将不同接口划分到 firewalld 对应区域(如 internal/external)
- 在 firewalld 的 external 区域启用 masquerade(伪装):firewall-cmd --zone=external --add-masquerade --permanent
- 为 internal 区域添加富规则允许跨网段流量:firewall-cmd --zone=internal --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 accept' --permanent
- reload 防火墙:firewall-cmd --reload
--- 延伸知识点:firewalld 的 masquerade vs SNAT ---
masquerade 是动态 SNAT 实现,适用于动态 IP 环境(如拨号网络)。其本质是将出口流量源地址替换为防火墙出口接口的当前 IP。与静态 SNAT 的区别在于:
- 配置语法:静态 SNAT 需明确指定 to-address(firewall-cmd --zone=external --add-forward --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 masquerade')
- IP 持久性:masquerade 在接口 IP 变化时自动生效,而 SNAT 需要手动更新规则
- 性能影响:masquerade 需要实时获取接口 IP,比静态 SNAT 多一次地址查询