如何在Linux網關上設定6in4 / 6to4隧道伺服器?

如何在Linux網關上設定6in4 / 6to4隧道伺服器?

我有本機 IPv6 連線(/64 前綴),並且我一直在嘗試在 OpenWrt 路由器後面設定 IPv6 連線。但我發現我無法使用 ebtables 傳遞所有 IPv6 流量(韌體限制)或使用 ndppd 代理所有 ICMPv6 請求(鄰居請求/廣告、我無法控制的上游路由器因未知原因不接受它們)。

看來我現在唯一的選擇就是透過隧道傳輸所有 IPv6 流量。下圖是網路拓撲:

   網際網路 -- 路由器 -- PC
            廣域網路前綴::/64
            萬219.242.xx
            區域網路10.224.0.1 10.224.36.223

我正在嘗試在兩個 10.224.xx 位址之間建立隧道來傳輸所有 IPv6 流量,以獲得 IPv6 連線。

我搜尋了一些教程,但我無法弄清楚在設定隧道時使用哪個位址作為參數。

PC 運行的是 Windows。如果能提供一個設定範例就更好了。

(網關正在運行 OpenWrt,但我認為它幾乎像 Linux 網關一樣工作?)

答案1

隧道並不能解決您所面臨的問題。

您在透過隧道連接的兩台電腦之間有直接的實體連接,因此首先不需要隧道。您想要在隧道上執行的任何尋址都可以直接在兩個端點之間的乙太網路連線上完成。在乙太網路上而不是在隧道上執行此操作可以消除配置中的額外複雜性以及封裝開銷。

您確實還有另一個問題,那就是您沒有任何位址可指派給該連線。但在乙太網路上使用 IPv6 或在隧道上使用 IPv6 並不會改變這一點。它們都需要相同數量的位址(除了透過乙太網路執行此操作將允許整個 LAN 使用該前綴)。

如果您想正確執行此操作,您需要 LAN 的前綴,該前綴必須路由到您的路由器。根據您的描述,您目前只有 WAN 的連結前綴。這還不夠,因為您需要 LAN 的另一個連結前綴,該前綴必須取自路由到路由器的前綴。

我知道有一種用於設定此路由前綴的標準化協議,即 DHCPv6。路由器應在其 WAN 介面上傳送 DHCPv6 請求並請求路由前綴。路由的 /64 足以滿足您現在想要做的事情,但您也可以立即選擇 /48、/56 或 /60,因為您可能很快就會發現多個 /64 的用途您的區域網路。使用前綴委派的 DHCPv6 的替代方案是讓您的 ISP 為路由到路由器的前綴配置靜態路由。

如果您發現您的 ISP 沒有任何 DHCPv6 伺服器,或者它甚至不會委派 /60 或 /64,那麼您應該聯絡您的 ISP 以詢問如何將前綴路由到您的路由器。

如果在您提出請求後他們拒絕將前綴路由到您,那麼就該尋找解決方法了。我知道的兩種解決方法是橋接和鄰居發現代理。從 ISP 的角度來看,它們的行為相同,並且會導致路由器的記憶體消耗增加。他們本可以透過將前綴路由給您來避免額外的記憶體使用。

您說您的路由器韌體不支援這兩種解決方法。我認為這意味著您需要升級到支援它的韌體。

您也詢問了與 6to4 無關的問題。我認為 6to4 與您的設定基本無關。不過,如果您可以在路由器韌體上執行此操作,我會在路由器上啟用 6to4 中繼,因為這將使您在與使用 6to4 的人通訊時獲得更可靠的通訊。出於完全相同的原因,我會啟用 Teredo 中繼,如果您需要從某些僅 IPv4 網路上的筆記型電腦連接回家,這會非常方便。

答案2

是否可以將您的 OpenWRT 配置為網橋,以便它僅傳遞 IPv6 流量,但將公共和私有 IP 添加到路由器橋接接口,以便您仍然可以擁有帶有 NAT 的私有 IPv4 網絡,OpenWRT 可以充當單臂路由器。否則,下一步可能是讓您的 NDP 代理程式運作,您確定 Linux 核心沒有消耗 NDP 流量,請檢查 /proc/sys/net/ipv6/conf/*/accept_ra 以查看路由器通告的切換核心處理改變行為。我不確定你為什麼要查看 ebtables,除非你想過濾網橋上的第 2 層流量,默認情況下所有流量都在第 2 層允許,並且大多數過濾發生在第 3 層的 iptables 上。如果您確實想過濾流量,則可以根據 /etc/ethertypes 中描述的類型僅選擇 IPv6 流量,如果您想過濾 IPv4,請確保也允許 ARP,它是不同的乙太網路協定。

相關內容