我配置了一個簡單的路由器,它應該為位於其後面的 LAN 上的電腦提供 IPv6 連線。路由器有 2 個網路介面(eth0、eth1),機器有 1 個(eth0)。
路由器的eth0只能存取本地網絡,eth1可以存取互聯網。我配置了所有核心參數,工作正常。
路由器的IP是fd00::1
,我在路由器上安裝了dhcpd並設定了範圍fd00::100 - fd00::fffe
。
例如,當我在該網路上啟動某些電腦時,它會從 dhcpd 取得分配的 IP fd00::fffa
,但由於明顯的原因無法存取互聯網 - 它缺少路由。
當我手動添加路由時,sudo route -6 add 2000::/3 gw fd00::1
機器開始訪問互聯網,直到我重新啟動它。
我可以手動將此路由新增到每台電腦的初始化腳本中,但我寧願讓它自動配置,以便當我啟動此網路上的電腦時,它無需任何其他操作即可存取 IPv6 網際網路。
根據一些建議,我還在路由器上安裝了 radvd 並插入了此選項:
route 2000::/3 {};
這很可能是錯誤的,但我找不到任何文件或範例。這不起作用。使用 radvd 而不是 dhcpd 來分配 IPv6 位址根本不起作用,如果我禁用 dhcpd 機器自動設定一些隨機 IPv6 位址,甚至看不到對方,它們也無法 ping 路由器。
如何設定 LAN 來為其上的所有電腦自動配置 IPv6?
注意:我不需要,我希望每台機器都有公共 IPv6,NAT 就可以了。
答案1
我立即發現您的配置有兩個問題。 RFC 4193 位址不可全域路由。這意味著這些地址將無法與外界通訊。
當然您可以使用 NAT,但眾所周知 NAT 會導致許多問題。 NAT 是一種臨時解決 IP 位址短缺問題的解決方法。 IPv6 解決了這個問題。人們嘗試使用 NAT 解決的所有其他問題都有一個不涉及 NAT 的更好的解決方案。
此外,您的前綴顯然不是根據 RFC 4193 中的規範產生的。
本機分配的全域 ID 必須使用偽隨機演算法生成
網路配置中的這兩個問題是否會導致客戶端無法與外部通信,只有透過測試才能知道。現有軟體嘗試偵測次優 IPv6 配置,並在偵測到任何情況時完全避免使用 IPv6。某些用戶端軟體很可能會拒絕在您的設定中使用 IPv6 連線。
也就是說,讓客戶端使用 RFC 4193 位址進行外部通訊並非不可能。這是一個radvd.conf
文件,我過去曾短暫使用過。透過此配置,某些用戶端確實嘗試使用為其分配的 RFC 4193 位址進行外部通訊。
interface wlan0 {
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
prefix fdbd:5df9:dca3::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};
然而,此配置並不適用於所有客戶端。我用運行Android的客戶端再次測試了它。電話確實配置了 IPv6 位址,但並未嘗試使用 IPv6 進行外部通訊。
然後我將前綴更改為2001:db8:dca3::/64
,此時電話確實開始向網關發送 IPv6 封包。因此,Android 是拒絕以這種方式使用 RFC 4193 位址的平台的範例。