iStoreOS (OpenWRT)下校園網(wǎng)無前綴ipv6穩(wěn)定配置
背景
我所在大學的校園內(nèi)網(wǎng)具有DHCP分配的公網(wǎng)ipv6地址,PC直接連接后通過網(wǎng)頁的賬號認證后即可自動獲取,并可直接訪問純ipv6網(wǎng)站,并可以由ipv6進行BT下載。
但是在接入自己的OpenWRT路由器后,下游LAN上的設(shè)備就只能使用ipv4上網(wǎng),公網(wǎng)的ipv6地址只會分配到路由器的WAN6接口上,下游設(shè)備拿不到公網(wǎng)ipv6地址。
初步方案
經(jīng)過搜索要讓下游LAN上的設(shè)備能拿到公網(wǎng)ipv6地址,需要使用ipv6中繼(relay)模式進行配置。
站內(nèi)有視頻詳細配置方法:

視頻主要是編輯配置文件:/etc/config/dhcp
在LAN和WAN6下添加:ra,dhcpv6,ndp 的relay配置,WAN6下需要master使能:
這樣使用配置文件略麻煩但通用,iStoreOS后臺的LuCI Web UI對此有相關(guān)選項:


部分OpenWRT固件則可能沒有WAN6下的設(shè)置選項,需要配置文件設(shè)置
問題
如上配置完relay模式,重啟路由,并重啟客戶端網(wǎng)卡,ipv6公網(wǎng)ip就可以給到下游LAN上的客戶端。
但此時客戶端依然無法通過ipv6訪問網(wǎng)站(ping不通ipv6的外網(wǎng)IP地址,DNS可解析v6地址)。如果先ping一下路由器WAN上的ipv6地址,會出現(xiàn)第一次相應時間幾百ms,后面都是1ms以內(nèi)的正常局域網(wǎng)延時。之后ping其他的ipv6地址就都可以連通,純ipv6網(wǎng)站也可以訪問(這會生效一個設(shè)備)。這種狀態(tài)僅能維持一段時間,之后仍需重新ping路由器的ipv6地址,才可恢復ipv6的訪問能力。
解決方案
通過google搜索openwrt ipv6 relay ping等關(guān)鍵詞,查找類似情況。
根據(jù)恩山論壇的帖子:https://www.right.com.cn/forum/thread-337386-1-1.html
定位到是OpenWRT的默認ipv6路由表問題。路由器下的ipv6網(wǎng)段全部指向了WAN接口,路由器不知道客戶端使用的v6地址位于LAN接口下
如下圖(此圖中已正確設(shè)置,默認情況下沒有中間一條)

先前提到如果客戶端先ping了下路由器wan6上的地址,就又可以上ipv6網(wǎng)了,此時會在路由表中添加一條目標為客戶端ipv6地址指向br-lan的條目,路由器即可向lan路由ipv6數(shù)據(jù),但這個不會一直生效,一段時間后又會指向wan6。
原帖樓主提供了解決方案:在網(wǎng)絡(luò)接口啟動時添加正確的路由信息:
使用腳本,添加到/etc/hotplug.d/:
重啟路由后,正確的路由信息即可被添加,此時依然有概率下游設(shè)備無法ipv6上網(wǎng)。ipv6路由表中會出現(xiàn)目標為客戶端ipv6地址指向wan6的條目,唯一作用與該ip,這個是“學習路由”導致的,iStoreOS中在設(shè)置中繼模式的地方就可以設(shè)置,把它關(guān)掉即可,這樣新聯(lián)入的設(shè)備就可自動獲得ipv6地址,并能上網(wǎng)了。
一些OpenWRT固件的LuCI Web UI沒有“學習路由”的設(shè)置項,它在/etc/config/dhcp中的項目名為“ndproxy_routing”,跟配置中繼一樣增加“option ndproxy_routing "0" ”
我的最終配置文件供參考(我這里把dhcpv6禁用)
其他
本設(shè)置方案已在iStoreOS 21.02.3 x86軟路由上通過。

同時還在一臺Newifi D2硬路由上的OpenWRT上測試通過,固件是恩山論壇上一個老哥編譯的帶聯(lián)發(fā)科閉源無線驅(qū)動和ipv6支持的固件,此版本的LuCI Web UI缺少Wan6的中繼模式設(shè)置項和“學習路由”設(shè)置項。
