Linux

ip6tables 是否需要特殊規則?

  • July 30, 2017

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

老實說,我使用iptablesand執行了這些命令ip6tables,雖然 IPv4 一切正常,但我無法從外部通過 IPv6 連接。

我是否應該允許 IPv4 不需要的 IPv6 的其他內容?

IPv4 使用單獨的協議來查找屬於 IPv4 地址的 MAC 地址:ARP。因為它是一個單獨的協議 iptables 不會影響它。

IPv6 集成了該功能並且不需要/使用 ARP。該功能是使用 ICMPv6 消息實現的。不同之處在於 ICMPv6ip6tables 影響。如果您不允許正確的 ICMPv6 消息通過,您實際上是在阻止自己使用網路。您將無法在 LAN 上找到其他系統(如預設網關),其他系統也找不到您。

您至少需要接受鄰居請求和鄰居通告消息。如果您使用路由器廣告來資助預設網關和/或使用地址自動配置,您也需要接受這些。ping 你的機器進行調試也很有用,所以也許你也想接受 echo-r​​equest 消息。

有關可能的 ICMPv6 消息的完整列表,請參閱https://www.iana.org/assignments/icmpv6-parameters

引用自:https://serverfault.com/questions/865936