IPv6 隧道間歇性地丟棄入站
我有一個 ipv6 隧道,它在流量出站之前拒絕工作。如果我打開設備並 ping 入,直到我開始 ping 出的那一秒才得到響應。如果我然後離開幾個小時並嘗試再次ping,我將沒有任何回應。
我正在為我的隧道使用 Debian Lenny 和 Hurricane Electric。我什至不確定從哪裡開始調試這種行為,因為它太不尋常了。我已經使用了來自http://www.tunnelbroker.net/forums/index.php?topic=18.0的 Debian 配置和來自http://wiki.debian.org/DebianIPv6的配置以及各種調整之間,但我仍然無法讓設備持續接受入站流量。沒有 ip6tables,但我確實有各種 iptable 規則。有沒有其他人遇到過這種問題?我可以做些什麼來調試或解決這個問題?
編輯:不涉及 NAT,都是 IPv4 Cisco 基礎設施。我認為我、交換機和路由器之間沒有任何 IPv6。
SixXS 常見問題解答中給出了真正的答案:
http://www.sixxs.net/faq/connectivity/?faq=conntracking
有關完整說明,請參閱該文章。
在不了解您的網路設計的更多資訊的情況下,我假設您的隧道端點位於 LAN 上的設備上,位於 Internet 路由器後面。我還假設設備通過路由器上的 NAT 訪問網際網路。
入站問題的可能原因是路由器上的 NAT 表。路由器不知道如何將入站 v6(協議 41)流量路由到隧道端點設備。只要您通過隧道將 v6 流量發送到出站,就會在 NAT 表中創建一個條目。此條目還允許路由器將入站流量發送回隧道端點。
在沒有流量的一段時間後,路由器使條目過期並將其從其 NAT 表中刷新,因此沒有入站流量能夠再到達您的隧道端點。
你如何解決這個問題取決於你的路由器的能力。
- 在您的路由器上製定轉發規則,將傳入的“協議 41”流量轉發到 LAN 上的隧道端點設備。大多數消費級路由器無法做到這一點。
- 或者確保有足夠的出站流量來觸發路由器永不過期 NAT 表條目。這可以通過將 cronjob 設置為每 5 分鐘對外部伺服器執行一次 ping6 來完成。
解決方案 2 的範例:將以下內容放入您的 crontab
# Ping6 every 5 minutes to keep NAT open */5 * * * * ping6 -c1 -q www.sixxs.net 2>&1 >/dev/null