我正在尝试使用 NGINX 在 CentOS 7.2 上设置 IPv6 网络服务器。我已经测试了我的 IPv6 连接传出和传入 - 一切正常。我的 IP、AAAA 记录等也很好。在我启用 FirewallD 之前,基本上一切正常。
我已将其设置为默认设置为带有 eth0 接口的放置区。我启用了 dhcpv6-client、http、https 和 ssh(ssh 在自定义端口上)。启用防火墙后,任何 IPv6 流量都不能离开或进入机器。Traceroute6 到任何东西(甚至是网关)只到本地主机。如果我禁用防火墙,一切都很好。
我不知道为什么会这样。为了让 FirewallD 将相同的 IPv4 配置应用于 IPv6 流量,我在网上找不到任何东西。我个人认为,它会自动执行此操作,因为它的所有命令都与 IP 协议无关。
任何帮助深表感谢。
我遇到了同样的问题。通过firewalld放入的规则遵循逻辑后,我发现放置区正在阻止查找ipv6邻居所需的ipv6 icmp。有一条规则允许所有 ipv6 icmp,但 firewalld 将其放在输入区域之后,这是丢弃规则所在的位置。
如果您想亲自查看,只需查看 'ip6tables -L -n -v' 的输出
所以,一个快速而肮脏的解决方法是这样做:
Firewalld 将直接规则放在其他输入规则之前,以便在删除规则之前发生。如果您想阻止诸如 ping 之类的事情,您也可以使用直接规则,但您需要在上述规则之前使用它。
你会做这样的事情:
优先事项将使它们保持有序。
在对 Vultr(IPv6 完美运行)和 Contabo(IPv6 不适用于 firewalld)实例进行了一些摆弄之后,即使在运行 Contabo 的自定义
enable_ipv6
脚本之后,我也发现了以下 sysctl 差异:即使在
/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
而 firewalld 会关闭,这毫无意义。