配置路由器ipv6訪問(padavan&mi_r2d)


研一和研二因為有張無限流量的校園聯通卡,所以一直沒在意上網的事情。研三最后半個學期沒有流量真是難受的要死。東北大學校園網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地址

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 root@192.168.31.1

如果開啟失敗,會被拒絕訪問,類似下面的提示

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這個參數了,教訓就是以后用別人教程的時候,如果不管用,可以先考慮參數是否和原作者有區別,嘗試修改一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM