我无法弄清楚如何在 centos7.7 系统上启动时加载 iptables。iptables-services 未安装。我知道迁移到防火墙,但我想知道内核如何设置它的 iptables 规则。
对我来说重要的是 FORWARD 链有一个从任何地方拒绝的规则:
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
它将丢弃所有未在之前的规则中特别提到的数据包:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 192.168.100.0/24 ctstate RELATED,ESTABLISHED
ACCEPT all -- 192.168.100.0/24 anywhere
...
ACCEPT all -- anywhere 192.168.101.0/24
ACCEPT all -- 192.168.101.0/24 anywhere
修复起来很容易——我只需运行这个:
iptables -I FORWARD 2 -j ACCEPT -s 192.168.0.0/16
但我想知道这些规则是如何加载的 - 如果可能的话,如何修改该过程。
在 /etc/systemd 和 /usr/lib/systemd 中递归地 grepping iptables 什么也没返回。我得出的结论是,内核正在根据网络配置在启动时决定默认规则集。(我已禁用 NetworkManager)。rc.d 层次结构中没有任何内容。内核是在说“啊哈,我有这些接口,我将允许它们之间转发”吗?
我试验过,重启过好几次(实际上,我发现虚拟机可能是更好的试验平台),阅读了 iptables 的手册页和各种互联网资源,它们大多说明了如何加载所需的规则,通常使用 iptables-services。我可以制定我想要的规则,但对于默认规则的创建位置感到困惑。
/etc/sysconfig/network-scripts 中也没有任何涉及 iptables 的内容。
需要说明的是:Firewalld 未安装。服务文件存在,但在 /etc/systemd/system 中被屏蔽