為了用 IPv6 訪問一些機器學(xué)習(xí)的相關(guān)教程,最近又搞了一下路由器!
準(zhǔn)備工作:
- 支持刷固件的路由器;
- 能夠正常訪問的鏡像源;
- WinSCP(官網(wǎng)下載即可)
- 能連 SSH 的東西(推薦使用 PuTTY 本人使用 Linux 子系統(tǒng),別問為什么?。?/li>
- 良好的心態(tài);
- 這篇教程。
下載對應(yīng)版本的 OpenWRT 固件(我用的是潘多拉17.09)刷路由器系統(tǒng),完成后按以下方法配置(文章內(nèi)部代碼已經(jīng)按照當(dāng)前校園網(wǎng)絡(luò)環(huán)境 (XJTU) 進(jìn)行修改,可以無視相關(guān)解釋直接將其復(fù)制到相應(yīng)目錄):
路由器刷機
此部分參考各廠商相應(yīng)教程,不過聽說有一個叫 breed 的固件,刷了以后好像路由器就不容易變磚了!
更改路由器的默認(rèn)鏡像源以及準(zhǔn)備工作
使用 SSH 連接路由器,默認(rèn)情況下為:
# SSH
ssh root@192.168.1.1
密碼為admin
,如果彈出一個潘多拉的界面,就說明連上了!
使用 WinSCP 訪問路由器路徑/etc/opkg
按如下形式修改文件distfeeds.conf
:
# WinSCP
src/gz 17.09_core http://pandorabox.leoslion.top/pandorabox/17.09/targets/ralink/mt7620/packages
src/gz 17.09_base http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/base
src/gz 17.09_lafite http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/lafite
src/gz 17.09_luci http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/luci
src/gz 17.09_mtkdrv http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/mtkdrv
src/gz 17.09_newifi http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/newifi
src/gz 17.09_packages http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/packages
順便一提,WinSCP 可以直接啟動 PuTTY !還蠻好用的!
OpenWRT 路由器作為 IPv6 網(wǎng)關(guān)的配置
OpenWRT 是一種嵌入式 Linux 操作系統(tǒng),廣泛應(yīng)用于家用路由器/網(wǎng)關(guān)。本文將介紹幾種在清華校園網(wǎng)中,使用 OpenWRT 路由器為接入設(shè)備提供 IPv6 服務(wù)的配置方法。本文內(nèi)容綜合有多位貢獻(xiàn)者,如有疑問、建議,可以參與內(nèi)容討論。
IPv6 NAT
雖然 IETF 的設(shè)計中,IPv6 不再有 NAT (網(wǎng)絡(luò)地址轉(zhuǎn)換), 但 Linux 內(nèi)核從 3.7 版本開始實現(xiàn)了 IPv6 的 NAT。早年也曾有過 NAT66 等非官方項目,但缺乏維護(hù),目前已經(jīng)不再推薦使用。OpenWRT IPv6 NAT 配置部分,由 @Blaok 貢獻(xiàn)。
零: 檢查內(nèi)核模塊和有用的軟件包
# SSH
opkg install ip6tables kmod-ipv6 kmod-ipt-nat6
opkg install kmod-ip6tables kmod-ip6tables-extra
opkg install luci-proto-ipv6 iputils-traceroute6
kmod
開頭的內(nèi)核模塊一般無法通過 opkg 直接安裝,其他軟件包雖然可以通過opkg install
直接安裝,但會多占路由器存儲空間,推薦在編譯固件時就將這些軟件包都放入固件
上述軟件包除kmod-ipv6
外并非必須。kmod-ipt-nat6
提供IPv6 NAT支持,ip6tables kmod-ip6tables kmod-ip6tables-extra
等提供 IPv6 防火墻,luci-proto-ipv6
為 LuCI 提供 IPv6 設(shè)置選項,iputils-traceroute6
為 IPv6 提供 traceroute 功能(mtr
是個不錯的支持雙棧的traceroute
替代品,如果路由器存儲空間夠大的話)
總之安裝 ip6tables 和 kmod-ipt-nat6。
# SSH
opkg update
opkg install ip6tables
opkg install kmod-ipt-nat6
壹: 打開 OpenWRT IPv6 私網(wǎng)地址分配
OpenWRT 默認(rèn)會分配 IPv6 私網(wǎng)地址,在Network->Interfaces
頁面底下有個Global network options
,IPv6 ULA-Prefix
這里應(yīng)該有一個隨機的fd
開頭的/64
地址,LAN客戶端應(yīng)該能自動獲得這個地址范圍內(nèi)的 IPv6 地址,DHCPv6 和 SLAAC 默認(rèn)都開了
為了讓 OpenWRT 后面的設(shè)備始終能夠獲得 IPv6 網(wǎng)關(guān),需要在Network->Interfaces->LAN
下方的DHCP Server
部分的IPv6 Settings
部分,勾選Always announce default router
。否則,由于默認(rèn)分配的是私網(wǎng)地址,OpenWRT 不會向下游設(shè)備公布 IPv6 默認(rèn)路由(即網(wǎng)關(guān)),可能導(dǎo)致路由器上 IPv6 連通但下游設(shè)備不通的情況 (感謝@terro提醒)
使用 WinSCP 更改/etc/config/network
文件內(nèi)容,在config globals 'globals'
修改(添加)以下內(nèi)容:
option ula_prefix 'AAAA:BBBB:CCCC:DDDD::/64'
更改/etc/config/network
文件內(nèi)容,在config interface 'wan'
修改(添加)以下內(nèi)容:
option peerdns '0'
option dns '2001:4860:4860::8844 2001:4860:4860::8888'
更改/etc/config/dhcp
文件內(nèi)容,將config dhcp 'lan'
那一欄改為以下內(nèi)容:
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option dhcpv6 'server'
option ra 'server'
option ra_management '1'
option ra_default '1'
貳: 打開 IPv6 NAT
客戶端有了正確的地址以后,需要在路由器上打開 IPv6 NAT。OpenWRT 默認(rèn)的防火墻配置不會管 IPv6 的 NAT 表,可以在/etc/firewall.user
里面加上
# WinSCP
WAN6=pppoe-wan
LAN=br-lan
ip6tables -t nat -A POSTROUTING -o $WAN6 -j MASQUERADE
ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -A FORWARD -i $LAN -j ACCEPT
WAN6 和 LAN 分別改成外網(wǎng) IPv6 和內(nèi)網(wǎng)網(wǎng)卡 ( interface ) 的名字,注意不是防火墻區(qū)域 ( zone ) 的名字,也不是 LuCI 里面Network->Interfaces
里面看到的名字,而是ifconfig
看到的名字
叁: 正確配置網(wǎng)關(guān)
在路由器上ip -6 route
看一下自己的默認(rèn)網(wǎng)關(guān)。如果獲得的是
default from 2001:250:x:x::/64 via fe80::x:x:x:x dev eth0 proto static metric 512
這樣坑爹的網(wǎng)關(guān),在轉(zhuǎn)發(fā) NAT 包的時候會有問題,需要把去掉from 2402:f000:x:x::/64
這一部分的以后的默認(rèn)路由添加到路由表中??梢孕陆ㄒ粋€/etc/hotplug.d/iface/99-ipv6
,它的內(nèi)容是
# WinSCP
#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
iface=wan
[ -z "$iface" -o "$INTERFACE" = "$iface" ] || exit 0
ip -6 route add `ip -6 route show default|sed -e 's/from [^ ]* //'`
logger -t IPv6 "Add IPv6 default route."
這里iface
是 LuCI 里面Network->Interfaces
里面看到的名字,一般叫 wan6 。這個腳本的意思是在 wan6 起來以后讀取默認(rèn)網(wǎng)關(guān),把帶 from 的內(nèi)容去掉,再加到系統(tǒng)路由表里。記得
# SSH
chmod +x /etc/hotplug.d/iface/99-ipv6
參考資料:
在 OpenWrt 上配置原生 IPv6 NAT
OpenWRT 路由器作為 IPv6 網(wǎng)關(guān)的配置
可以正常訪問的鏡像源