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 的其他内容?
IPv4 使用单独的协议来查找属于 IPv4 地址的 MAC 地址:ARP。因为它是一个单独的协议 iptables 不会影响它。
IPv6 集成了该功能并且不需要/使用 ARP。该功能是使用 ICMPv6 消息实现的。不同的是,ICMPv6的是由ip6tables影响。如果您不允许正确的 ICMPv6 消息通过,您实际上是在阻止自己使用网络。您将无法在 LAN 上找到其他系统(例如默认网关),其他人也找不到您。
您至少需要接受邻居请求和邻居通告消息。如果您使用路由器广告来资助默认网关和/或使用地址自动配置,您也需要接受这些。ping 你的机器进行调试也很有用,所以也许你也想接受 echo-request 消息。
有关可能的 ICMPv6 消息的完整列表,请参阅https://www.iana.org/assignments/icmpv6-parameters。