研一和研二因為有張無限流量的校園聯通卡,是以一直沒在意上網的事情。研三最後半個學期沒有流量真是難受的要死。東北大學校園網ipv6出口免流量,家裡移動的網絡有ipv6,有幾次放假回家都想着配好了能在學校用,之前沒動力,也就沒怎麼仔細研究,到畢業了都沒搞出來。最後一個學期用着vps的ipv6代理,由于海外ip,視訊網站還不能看,網速還不确定,憋屈。
這次畢業了在家沒事幹,倒是把ipv6配出來了。。。記錄一下自己踩的坑吧,其實就一層窗戶紙,哎。
0.驗證網絡是否有ipv6
我家的網絡環境,光纖入戶,破解了光貓,由路由器進行pppoe撥号。由于路由器一般都沒有配置ipv6,是以無法擷取ipv6位址。
建議測試時,直接将光貓連接配接電腦,然後配置pppoe撥号。打開http://test-ipv6.com/測試是否可以通路ipv6。确定可以通路之後,下一步配置路由器。
1.配置padavan路由器通路ipv6
參考内容很多,放一個最近配置時看到的。
H大Padavan固件中NAPT66子產品的使用方法【适用于教育網原生IPv6】(20190131更新)
這裡我再轉述一遍。
這裡是使用NAPT66子產品,我家的newifi mini的固件自帶這個插件,OpenWrt可能需要安裝,安裝可以參考這個連結Padavan/Openwrt/LEDE下實作ipv6 nat/napt66
在确定擁有NAPT66子產品的Padavan固件下:
1)修改外部網絡(WAN)中的Ipv6設定
配置例子如下,配置成功後,在網絡地圖->外部網絡狀态的”Ipv6位址 WAN”中就可以看到ipv6位址,這個時候路由器已經可以通路ipv6了,但是區域網路還沒有配置設定ipv6位址

2)在“在防火牆規則 (Emong\'s Qos) 啟動後執行”腳本中添加如下腳本:
### NAPT66 所需要的防火牆政策
ip6tables -F
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
3)進入“自定義設定 - 腳本”中“路由器啟動後執行”腳本中添加如下腳本:
### 啟動 NAPT66 子產品
insmod /lib/modules/$(uname -r)/kernel/net/napt66/napt66.ko wan_if=ppp0
注意!上面的wan_if後面的參數,原文章給的是eth0.2,就是因為這個我被坑了這麼久,沒配置正确。這裡需要自己确定具體的參數。确定的方式很簡單,登入ssh,輸入ifconfig,看是哪個網絡擷取了ipv6位址。
例如我這裡,可以看出是ppp0擷取到的ipv6位址,是以設定為ppp0:
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.***.****.180 P-t-P:10.253.64.1 Mask:255.255.255.255
inet6 addr: 2409:8a44:****:3b:****:8ebc:****:a7f8/64 Scope:Global
inet6 addr: fe80::****:****:****:a7f8/10 Scope:Link
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:3808279 errors:0 dropped:0 overruns:0 frame:0
TX packets:4144880 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:3205203030 (2.9 GiB) TX bytes:757281553 (722.1 MiB)
4)重新開機路由器,重新開機計算機網絡
2.配置小米r2d擷取ipv6網絡
回家之後在拼多多又淘了個小米路由器r2d,自帶1t硬碟,cpu雙核A9+256RAM+512ROM,性能可以,才272塊。雖然最後确認是官翻,而且硬碟通電3000+小時,還行吧,這麼便宜要啥自行車,帶1年保修。
小米的路由器本身無法配置ipv6,是以繼續研究。
2.1 開啟ssh
配置ipv6需要開啟ssh,而小米官方管道開啟ssh會失去保修,這裡提供小米r2d非官方開啟ssh的方法。
參考:更新小米路由器3 SSH
需要舊版的開發版固件,brcm4709_r2d_all_2.8.14.bin
1)手動更新,選擇舊版固件。
2)進入192.168.31.1,并登入,登入後在位址欄會有stok,記錄,用來替換下面網址中的stok,替換stok後陸續在位址欄執行以下4條(注意每次執行要等待指令執行完成後,即頁面打開狀态的小圓圈轉完)。
http://192.168.31.1/cgi-bin/luci/;stok=【你的stok,登入路由器管理界面在位址欄可以看到】/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit
http://192.168.31.1/cgi-bin/luci/;stok=【你的stok,登入路由器管理界面在位址欄可以看到】/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3Bsed%20%2Di%20%22%3Ax%3AN%3As%2Fif%20%5C%5B%2E%2A%5C%3B%20then%5Cn%2E%2Areturn%200%5Cn%2E%2Afi%2F%23tb%2F%3Bb%20x%22%20%2Fetc%2Finit.d%2Fdropbear
http://192.168.31.1/cgi-bin/luci/;stok=【你的stok,登入路由器管理界面在位址欄可以看到】/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3B%2Fetc%2Finit.d%2Fdropbear%20start
http://192.168.31.1/cgi-bin/luci/;stok=【你的stok,登入路由器管理界面在位址欄可以看到】/api/xqsystem/set_name_password?oldPwd=路由器管理密碼&newPwd=路由器管理密碼
前三個URL傳回的相關錯誤代碼是:
{
"msg": "未能連接配接到指定WiFi(Probe timeout)",
"code": 1616
}
最後一個是root ssh登入小米路由器的密碼設定,是以,隻有傳回如下,才能說明ssh破解正常:
{
"code": 0
}
3)測試ssh
成功開啟ssh後,使用powershell、putty或者你熟悉的ssh用戶端,輸入下面指令,如果開啟ssh成功,輸入密碼即可登入路由器。
ssh [email protected]
如果開啟失敗,會被拒絕通路,類似下面的提示
ssh: connect to host localhost port 22: Connection refused
開啟ssh成功後,可以直接線上更新最新版的固件,ssh權限不會被關閉。
2.2 開啟ipv6
這部分基本照搬下面的參考連結,我也沒有遇到什麼坑
參考:小米路由的IPv6支援教程(Update: 19/03/04)
1)外部網絡(WAN)擷取ipv6
替換路由器檔案 /etc/config/ipv6 為
config ipv6 \'settings\'
list if_on \'wan\'
option enabled \'1\'
list if_on \'ipv6\'
option enabled \'1\'
重新開機路由器,通過兩種方法判斷路由器是否擷取到ipv6位址。
- ifconfig判斷是否擷取到ipv6網址
- 通過下面的指令判斷路由器是否獲得ipv6位址
ping6 ipv6.tsinghua.edu.cn
2)局部網絡(LAN)擷取ipv6
小米路由事實上已經實作了大多數的 IPv6 支援,然而由于固件版本太低,唯獨 NDP 在光貓路由情形下無法正常工作,需要額外可執行檔案來幫忙。
6relayd 可以作為合适的 NDP 中繼。其實 6relayd 功能還有很多,更有 odhcpd 作為更豐富的繼承者。然而這兩個元件官方均未提供使用,于是運用小米提供的 SDK 自行編譯了 6relayd
下載下傳:6relayd
百度網盤:連結: https://pan.baidu.com/s/1pmoeEJcGIB6tHeaJISWVqQ 提取碼: u2df
将 6relayd 檔案放入/sbin/并使其可執行。由于該檔案夾預設隻讀,先在 SSH 中輸入以下指令解鎖:
mount -o remount rw /
之後,用之前推薦的軟體通過 SCP 把檔案放入上述檔案夾。并授予其可執行權限:
chmod +x /sbin/6relayd
此時,在SSH中執行“6relayd”應該會顯示程式的幫助資訊。
在本案例中,輸入如下指令:
6relayd -N eth0.2 br-lan &
重新開機區域網路中的計算機後,再通過網站驗證 IPv6,應當會通過驗證。
走到這一步,說明全部的技術路線已經打通。為了讓 6relayd 能夠在路由器重新開機後自動執行,将其附加在開機自動執行的腳本上。以 /etc/init.d/plugin_start_.sh 為例,加入的方式如下:
netmode=$(uci get xiaoqiang.common.NETMODE)
if [ "$netmode"x != "lanapmode"x ] && [ "$netmode"x != "wifiapmode"x ]
then
copy_plugin_chroot_file
sync
# decrese current priority and throw myself to mem cgroup
# so all plugins inherit those attributes
renice -n+10 -p $
echo $ > /dev/cgroup/mem/group1/tasks
/usr/sbin/plugin_start_impl.sh &
6relayd -d -N eth0.2 br-lan
fi
重新開機路由器後,路由器下屬裝置應當自動獲得正常的 IPv6 連接配接,這樣的話就大功告成了。
3)對外網暴露的支援
如果本地計算機已經可以通過 IPv6 測試、可以通路 IPv6 網站,但外網通過 IPv6 無法通路本機,首先是因為 openwrt 預設阻擋所有外網主動發起 IPv6 連接配接。小米路由自帶 IPv6 防火牆 ip6tables,為了确定問題,可以用以下指令使該防火牆放行所有資料:
ip6tables -F
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
需要注意的是,這樣會降低内網裝置的安全性。建議自行研究和配置 ip6tables,對放行進行嚴格的限制。确定規則後,可以模仿之前思路将其設為開機啟動。
另外,不要忽略本地計算機作業系統的防火牆。例如 Windows 防火牆預設阻擋 ICMP。在此配置下,外網 ping 本機 IPv6 是沒有答複的。
3.結語
至此,我的兩個路由器都可以擷取ipv6位址,由于移動的ipv4沒有公網ip,bt下載下傳很不友善,配置ipv6之後就擁有公網ip了。
唯一踩的坑就是wan_if這個參數了,教訓就是以後用别人教程的時候,如果不管用,可以先考慮參數是否和原作者有差別,嘗試修改一下。