ip6tables是否需要特殊的规则?

在使用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 ... 

说实话,我用iptablesip6tables运行这些命令,而一切工作正常与IPv4,我不能通过IPv6从外部连接。

我应该允许IPv4不需要额外的IPv6吗?

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

IPv6集成了这种function,并不需要/使用ARP。 该function是使用ICMPv6消息实现的。 不同之处在于ICMPv6受ip6tables的影响。 如果您不允许通过正确的ICMPv6消息,则会有效地阻止您使用networking。 您将无法在您的LAN上find其他系统(如默认网关),而其他系统则无法find您。

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

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