Firewall
ICMPv6 限制性防火牆:隨著時間的推移失去連接
問題:
在一段時間後失去與遠端 IP 的 IPv6 連接,但未建立與遠端 IP 的連接。
我的設置:
我正在執行一個帶有
ip6tables
防火牆的伺服器,它過濾傳入的 ICMPv6 數據包。我已經根據RFC 4890為本地配置流量設置了這個防火牆。INPUT
介面鏈上允許以下 ICMPv6eth0
:type 1 (destination unreachable) type 2 (packet too big) type 3 (time exceeded) type 4 (parameter problem) type 128 limit 100/sec limit-burst 500 (Echo) type 129 (Echo reply) type 133 (Router Solicitation) type 134 (Router Advertisement) type 135 (Neighbor Solicitation) type 136 (Neighbor Advertisement) type 141 (Inverse Neighbor Discovery Solicitation) type 142 (Inverse Neighbor Discovery Advertisement) type 148 (Certificate Path Solicitation) type 149 (Certificate Path Advertisement type 151 (Multicast Router Advertisement) type 152 (Multicast Router Solicitation) type 153 (Multicast Router Termination)
其他所有類型都被刪除。介面的 OUTPUT 鏈上允許所有 ICMPv6 數據包
eth0
。我試過什麼:
啟用規則後
ip6tables
,所有 IPv6 流量都可以順暢執行。然而,大約之後。1 天沒有連接到遠端 IP 地址,它突然變得無法訪問。在遠端位置執行
tcpdump
表明來自防火牆伺服器的 ICMPv6 回顯成功到達並發送了回复。然而,迴聲回复沒有返回。如果放寬防火牆策略以允許所有 ICMPv6 數據包通過,則建立連接,然後重新啟動原始防火牆 - 這一切都會繼續工作。
我的問題:
如何防止連接失去?
我想我一定是丟棄了某種對建立連接很重要的 ICMPv6 數據包。
我錯過了從 IPv4 防火牆導入的規則,它位於
INPUT
鏈中的較高位置並阻止了所有多播數據包:-t filter -A INPUT -m pkttype --pkt-type multicast
刪除此規則後,連接已恢復。
我通過仔細檢查防火牆伺服器上的 ICMPv6 流量發現了這一點。伺服器正在接收鄰居請求數據包,但沒有發送鄰居廣告作為回复。
我仍然覺得這很奇怪,因為多播丟棄規則位於
INPUT
鏈上,因此它不應該阻止廣告數據包。相反,我認為我什至不應該收到徵集請求……對不起,噪音。