ip6tables 是否需要特殊规则?

3 linux firewall iptables ipv6

在使用 iptables 设置规则并检查一切正常后,我还为 IPv6 地址设置了相同的规则,并注意到我无法连接到我服务器的任何 IPv6 地址和端口。默认策略是DROP除了我手动允许的端口之外的所有内容。

规则看起来像:

-P INPUT DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
...
Run Code Online (Sandbox Code Playgroud)

老实说,我使用iptables和运行这些命令,ip6tables虽然在 IPv4 上一切正常,但我无法从外部通过 IPv6 连接。

我是否应该允许 IPv6 不需要 IPv4 的其他内容?

San*_*ann 5

IPv4 使用单独的协议来查找属于 IPv4 地址的 MAC 地址:ARP。因为它是一个单独的协议 iptables 不会影响它。

IPv6 集成了该功能并且不需要/使用 ARP。该功能是使用 ICMPv6 消息实现的。不同的是,ICMPv6的由ip6tables影响。如果您不允许正确的 ICMPv6 消息通过,您实际上是在阻止自己使用网络。您将无法在 LAN 上找到其他系统(例如默认网关),其他人也找不到您。

您至少需要接受邻居请求和邻居通告消息。如果您使用路由器广告来资助默认网关和/或使用地址自动配置,您也需要接受这些。ping 你的机器进行调试也很有用,所以也许你也想接受 echo-r​​equest 消息。

有关可能的 ICMPv6 消息的完整列表,请参阅https://www.iana.org/assignments/icmpv6-parameters

  • 您可能希望从允许所有 ICMPv6 消息开始,然后在您有工作设置时缩小范围。我个人不太担心 ICMPv6 消息,因此在某些服务器上我根本不过滤它们。 (3认同)
  • echo-r​​equest 消息对于调试非常有用,但它们也用于其他目的,因此阻止它们会导致事情中断。当然,还必须允许太大的错误消息,并且允许所有其他错误消息也可能是一个好主意。 (2认同)