Ipv6
我的 nftables 規則阻止 IPv6
我
nftables.conf
只是執行flush ruleset
我include
的防火牆規則。我從 Arch wiki 複製了它們。所以包含的firewall.rules
內容包括:# An iptables-like firewall table firewall { chain incoming { type filter hook input priority 0; # established/related connections ct state established,related accept # invalid connections ct state invalid drop # loopback interface iifname lo accept # icmp icmp type echo-request accept # open tcp ports tcp dport {http, https, ...} accept # open udp ports udp dport {...} accept # drop everything else drop } } table ip6 firewall { chain incoming { type filter hook input priority 0; # established/related connections ct state established,related accept # invalid connections ct state invalid drop # loopback interface iifname lo accept # icmp icmpv6 type {echo-request,nd-neighbor-solicit,nd-router-solicit,mld-listener-query} accept # open tcp ports tcp dport {http, https, ....} accept # open udp ports udp dport {...} accept # drop everything else drop } }
因此,當所有內容都載入完畢後,我無法使用 IPv6,
ping6
出現錯誤From ams16s21-in-x0e.1e100.net icmp_seq=1 Destination unreachable: Address unreachable
但是,如果我執行
sudo nft flush table ip6 firewall
,ping6
立即開始按預期工作。如果我然後重新建立 ip6 防火牆表,IPv6 連接不會立即失敗,但等待幾分鐘我發現ping6
命令返回上述錯誤。我的託管服務提供商沒有在網路級別提供任何 IPv6 自動配置或路由器廣告。
以前有人見過這樣的事情嗎?
IPv6 連接不會立即失敗,但等待幾分鐘我發現 ping6 命令返回上述錯誤。
我猜你已經破壞了鄰居發現。最初,事情繼續工作,因為您已經在鄰居發現記憶體中擁有了東西,但後來條目超時。
您似乎允許鄰居請求消息,但不允許鄰居廣告消息。
您正在刪除太多 ICMPv6 類型。由於 ,應該允許大多數錯誤消息
state established,related
,但是您正在刪除鄰居廣告和路由器廣告。試試這個:icmpv6 type {echo-request,nd-neighbor-solicit,nd-neighbor-advert,nd-router-solicit, nd-router-advert,mld-listener-query} accept
它將允許未經請求的 NA 和 RA 進入,這可能會解決您的問題。
如果您想確保錯誤消息也能通過(我沒有測試是否
state established,related
確實適用於所有 ICMPv6 錯誤消息),那麼還要添加這些:icmpv6 type {echo-request,nd-neighbor-solicit,nd-neighbor-advert,nd-router-solicit, nd-router-advert,mld-listener-query,destination-unreachable, packet-too-big,time-exceeded,parameter-problem} accept
不應該是必要的,但以防萬一:)丟棄 ICMPv6 錯誤消息會導致嚴重的延遲甚至阻塞連接,所以最好避免這種情況:)