Firewalld 阻止 IPv6,忽略配置

Firewalld 阻止 IPv6,忽略配置

我正在尝试使用 NGINX 在 CentOS 7.2 上设置 IPv6 Web 服务器。我已经测试了我的 IPv6 连接传出和传入 - 一切正常。我的 IP、AAAA 记录等也很好。基本上一切都正常,直到我启用 FirewallD。

我已将其设置为默认使用 eth0 接口的 drop zone。我已启用 dhcpv6-client、http、https 和 ssh(ssh 在自定义端口上)。启用防火墙后,IPv6 流量无法离开或进入机器。Traceroute6 到任何东西(甚至网关)都只会转到本地主机。如果我禁用防火墙,一切都很好。

我不知道为什么会发生这种情况。我在网上找不到任何可以让 FirewallD 将相同的 IPv4 配置应用于 IPv6 流量的方法。我个人认为它会自动执行此操作,因为它的所有命令都与 IP 协议无关。

任何帮助深表感谢。

答案1

我遇到了同样的问题。在遵循防火墙放入的规则的逻辑后,我发现丢弃区域阻止了查找 ipv6 邻居所需的 ipv6 icmp。有一条规则允许所有 ipv6 icmp,但防火墙将其放在输入区域之后,也就是丢弃规则所在的位置。

如果你想亲自看看这一点,只需查看“ip6tables -L -n -v”的输出

因此,一个快速而肮脏的解决方法是这样做:

firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -p icmpv6 -j ACCEPT

Firewalld 将直接规则置于其他输入规则之前,因此这将在丢弃规则之前发生。如果您想阻止诸如 ping 之类的操作,您也可以使用直接规则,但您需要在上面的规则之前使用它。

你可以这样做:

firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -p icmpv6 --icmpv6-type 128 -j DROP
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 1 -p icmpv6 -j ACCEPT

这些优先事项将使它们保持有序。

答案2

在对 Vultr(IPv6 运行良好)和 Contabo(IPv6 无法与 Firewalld 配合使用)实例进行一些调整后,即使在运行 Contabo 的自定义enable_ipv6脚本后,我也发现了以下 sysctl 差异:

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

/etc/sysctl.conf尽管在、/etc/sysctl.d/usr/lib/sysctl.d、或其他任何地方都没有这样的设置/run/sysctl.d。所以这一定是内心深处的一些奇怪的黑客行为。

我认为这不是防火墙的差异,因为即使在全新安装后也会发生这种情况,所以根本没有规则。列出所有区域也不会显示任何异常。

无论如何,在输入以上 3 行/etc/sysctl.d/10-ipv6.conf(任意命名)并重新启动后,一切都开始按预期工作。

不,不要问我为什么 IPv6 在net.ipv6.conf.all.disable_ipv6 = 1防火墙关闭的情况下仍能工作,这根本没有任何意义。

相关内容