iptables——它们是在启动顺序中从哪里生成或加载的?

iptables——它们是在启动顺序中从哪里生成或加载的?

我无法弄清楚如何在 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 中被屏蔽

相关内容