Linux
linux 基於 IPv6 策略的路由失敗
我有一個 VPN 伺服器,它充當我到 Internet 的 IPv6 連接。我們的設置是這樣的:
我被分配了一個 /48 地址池,我想將其子網連接到我的 VPN 客戶端。為了爭論,讓我們呼叫 pool
2001:DB8:CAFE::/48
。我已將該網路分成以下部分:
2001:DB8:CAFE::/64
分配給 VPN 伺服器和每個客戶端之間的實際 VPN 連結。
2001:DB8:CAFE:100:/56
分配給客戶端 1 後面的網路
2001:DB8:CAFE:200:/56
分配給客戶端 2 後面的網路這給了我們這樣的佈局:
+---------------+ 2001:470:xxxx:xxx::/64 +---------------+ /-> 客戶端 1 網路(2001:DB8:CAFE:100::/56) | + <-- 隧道代理連結-> + | / | 網際網路 | | 我的 VPN 伺服器 + <-*---> VPN 連結 - 網路拓撲 (2001:DB8:CAFE::/64) | + <- 本機 IPv6 連結 ---> + | \ +---------------+ 2a01:xxxx:xxxx:xxxx::/48 +---------------+ \-> 客戶端 2 網路(2001:DB8:CAFE:200::/56)
我想要的是所有來自的流量
2001:DB8:CAFE::/48
都通過我的 Tunnelbroker 連結進行路由 -並且只有那個連結。這導致我使用以下腳本:
# Reset IPv6 routing table. ip -6 rule flush # Reset Tunnelbroker routing table (table name: "he-ipv6"). ip -6 route flush table he-ipv6 # Add routeable VPN subnets to Tunnelbroker routing table ip -6 rule add from 2001:DB8:CAFE::/48 table he-ipv6 # Any traffic that originates from VPN has to be forwarded via Tunnelbroker routing table # using the tunnelbroker link (link name: he-ipv6). ip -6 route add default via 2001:470:xxxx:xxx::1 dev he-ipv6 table he-ipv6 # Add default IPv6 rules again - since they gets deleted by the initial rule flush command. ip -6 rule add priority 32766 from all table main
但是:當我執行
ip -6 route add default ...
-command 時,我收到以下錯誤:
RTNETLINK answers: No route to host
問題是
2001:470:xxxx:xxx::1
在我執行腳本之前可以 ping,但之後不能。我錯過了什麼?
幹!命令的順序很重要。
該命令
ip -6 route add default via 2001:470:xxxx:xxx::1 dev he-ipv6 table he-ipv6
不起作用的原因是路由在main
表中定義。但是由於初始刷新命令會刪除主表,因此您必須在執行命令之前再次添加它
ip route default
。因此,正確的腳本是:
# Reset IPv6 routing table. ip -6 rule flush # Add default IPv6 rules again - since they gets deleted by the initial rule flush command. ip -6 rule add priority 32766 from all table main # Reset Tunnelbroker routing table (table name: "he-ipv6"). ip -6 route flush table he-ipv6 # Add routeable VPN subnets to Tunnelbroker routing table ip -6 rule add from 2001:DB8:CAFE::/48 table he-ipv6 # Remember to add a rule that if no machine does not respond to a # packet address in my /48, then we should return unreachable. # Else the package will be forwarded by default out through the # Hurricane Electric connection. #(From the Internet) ip -6 route add unreachable 2001:DB8:CAFE::/48 #(From my /48 subnet) ip -6 route add unreachable 2001:DB8:CAFE::/48 table mynet6 # Any traffic that originates from VPN has to be forwarded via Tunnelbroker routing table # using the tunnelbroker link (link name: he-ipv6). ip -6 route add default via 2001:470:xxxx:xxx::1 dev he-ipv6 table he-ipv6
我將在這裡留下問題和答案,因為我可能不是唯一一個嘗試基於源進行 IPv6 路由的人。
我發現的關於這個主題的最新資訊是從 2010 年開始的。