如何共享到整個 LAN 的 IPv6 連接?
我的 ISP 仍然不支持 IPv6,我目前使用 OpenVpn 或 OpenConnect VPN 來獲得 IPv6 連接。
現在在 OpenWRT 路由器下有一個執行 VPN 客戶端的 Ubuntu 伺服器。
是否可以(僅)共享從伺服器到整個 LAN 網路的 IPv6 連接?
當然,如果您的 IPv6 連接為您提供了一個足夠大的前綴以供 LAN 中的所有設備使用(即前綴編號小於 /128,理想情況下是 /64 或更少)。
首先,通過將此行添加到以下內容來啟用 IPv6 轉發
/etc/sysctl.conf
:net.ipv6.conf.all.forwarding=1
然後執行
sudo sysctl -p
或重新啟動以使其生效。這將禁用 IPv6 自動配置作為副作用,因此您可能需要在 VPN 介面上重新啟用它,方法是在您的 VPN 介面出現後安排這些命令執行:
sysctl -w net.ipv6.conf.<your_VPN_interface_here>.accept_ra=2 sysctl -w net.ipv6.conf.<your_VPN_interface_here>.autoconf=1
如果您在 VPN 介面上獲得 /128 前綴(= 僅限單個主機),您需要聯繫您的 VPN 提供商並了解如何獲得更廣泛的前綴。它可能需要不同的 VPN 設置,或者可能需要設置 DHCPv6 客戶端以在 VPN 端發出前綴請求。
如果您可以在 VPN 介面上獲得比/64 更寬的前綴(= 更小的數字),它將允許您在 LAN 上使用 SLAAC,這可能是配置 IPv6 的最簡單方法。
您還需要在這裡考慮 IPv6 防火牆:提前設置一些 IPv6 防火牆規則,以阻止來自您不需要的 VPN 端的任何傳入連接。在阻止任何 ICMPv6 類型或 IPv6 多播之前三思而後行;兩者都是 IPv6 協議的重要組成部分,您不能完全阻止它們。
您的系統現在已準備好成為 IPv6 路由器。您現在應該考慮如何通過 VPN 介面上的前綴拆分允許您使用的 IPv6 地址空間,並將其子前綴分配給您的 LAN 端介面。由於前綴中的所有 IPv6 地址現在都可以按照您認為合適的方式使用,因此您可以手動為 LAN 端介面分配 IPv6 地址。
然後安裝和配置
radvd
以使您的系統向 LAN 宣布它是 IPv6 路由器。現代版本radvd
也將能夠宣布 IPv6 DNS 伺服器和客戶端應使用的域後綴。
radvd
配置還將包括一些設置,告訴客戶端是否允許他們通過使用無狀態地址自動配置 (SLAAC) 自行選擇 IPv6 地址,或者他們是否應該使用 DHCPv6。此外,即使您選擇允許 SLAAC,您仍然可以使用 DHCPv6 伺服器為您的客戶端提供一些額外的配置資訊。一旦您正確設置了這些位並開始
radvd
向您的 LAN 宣布 IPv6 路由器的存在,如果您的 LAN 端子前綴是 /64 或更寬並且您已允許 SLAAC,您的客戶端現在應該會收到radvd
通知並自動獲得基本的 IPv6 配置。如果您最終在 LAN 端使用了比/64 更嚴格的前綴(=更高的數字),或者如果您選擇不使用 SLAAC,那麼您現在需要為您的客戶端設置 DHCPv6 伺服器。
然後是時候開始測試了。如果您的客戶端只顯示以 開頭的連結本地 IPv6 地址
fe80::
,您應該首先驗證他們看到的是 的路由器公告radvd
。這是 IPv6 自動配置的基本部分;沒有這些公告,其他任何事情都不會發生。