目錄
- 環(huán)境
- 方案比選
- NAT方案
環(huán)境
- 網(wǎng)絡(luò) :scut南校區(qū)校園網(wǎng),雙棧接入。ipv6無狀態(tài)自動分配公網(wǎng)地址,不限速不限流不斷網(wǎng),但封掉了80端口;ipv4采用drcom認(rèn)證(802.1x?),可用scutclient認(rèn)證,似乎是固定ip,由于大一新生不能開網(wǎng)所以不太了解。
- 設(shè)備:斐訊K2(padavan或PandoraBox固件);品勝AR71xx小路由(Openwrt)
即便是不開網(wǎng),宿舍網(wǎng)口仍可以分配到ipv6的公網(wǎng)ip,只是封掉了80端口,很多網(wǎng)站打不開,但443端口沒有封。
這樣,可以通過ipv6的各種代理滿足上網(wǎng)需求,不過國內(nèi)的vps普遍沒有ipv6,所以必須選擇海外的vps或者代理商。
要想讓路由器內(nèi)的手機(jī),電腦也能訪問IPv6,有以下幾種方法:
三種方案
- 中繼方案:使用6relayd,odhcpd等,讓路由器內(nèi)的設(shè)備獲取2xxx開頭的公網(wǎng)ipv6地址
- NAT方案:使用nat6/napt66+radvd/odhcpd,讓路由器內(nèi)的設(shè)備獲取內(nèi)網(wǎng)ipv6地址,然后路由器做NAT轉(zhuǎn)發(fā)
- 橋接方案:使用ebtables把ipv6通過第二層橋接到內(nèi)網(wǎng)區(qū)域
6relayd有缺陷,現(xiàn)在也已經(jīng)不在openwrt的軟件包列表里了(用odhcpd代替了),padavan的entware倒是還有6relayd。經(jīng)過數(shù)日折騰,雖然能讓內(nèi)網(wǎng)設(shè)備獲取到公網(wǎng)ipv6地址,但是鏈接并不穩(wěn)定,看iptv過一會就會卡住,遂放棄6relayd。
然后去lede折騰odhcpd中繼,也能讓內(nèi)網(wǎng)設(shè)備獲取到ipv6公網(wǎng)ip,但是上不了網(wǎng),不知原因所在,最終放棄了中繼方案。
NAT方案
Padavan+NAPT66
如果你使用的是我的Padavan固件,請直接查看使用教程中關(guān)于NAPT66配置的部分,如果你想讓自己編譯的Padavan固件支持NAPT66,請繼續(xù)往下看:
Padavan的Linux內(nèi)核原生不支持ipv6的NAT;
NAPT66是北郵學(xué)生開發(fā)的在較舊內(nèi)核的Linux上實(shí)現(xiàn)ipv6 nat的內(nèi)核模塊;
項(xiàng)目地址:https://github.com/mzweilin/napt66
要想使用NAPT66,需要對內(nèi)核代碼做修改,參考:
http://www.itdecent.cn/p/3a9ec169336e
接著修改napt66的Makefile:我的工具鏈在/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/,內(nèi)核源碼在/opt/rt-n56u/trunk/linux-3.4.x ,修改為:
PWD := $(shell pwd)
KDIR := /opt/rt-n56u/trunk/linux-3.4.x
obj-m := napt66.o
napt66-objs := napt66_main.o napt66_conntrack.o napt66_nat.o napt66_hash_table.o napt66_ftp_alg.o
all:
make -C $(KDIR) M=$(PWD) modules ARCH=mips CROSS_COMPILE=/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/bin/mipsel-linux-uclibc-
clean:
rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.symvers *.order
注意,編譯NAPT66時首先要編譯好工具鏈,并且要完整編譯過一次固件并且未執(zhí)行./clear_tree才能成功
把napt66.ko上傳到/etc/storage,加載模塊:
insmod /etc/storage/napt66.ko wan_if=eth2.2
# wan_if=WAN口名稱
要想每次開機(jī)自動加載,只需要在自定義設(shè)置-腳本-啟動后添加上述命令即可。
至此NAPT66已經(jīng)安裝完成,接下來是路由器上的配置。
外部網(wǎng)絡(luò)(WAN) - IPv6設(shè)置,可按下圖配置:

注意其中的IPv6內(nèi)網(wǎng)地址一欄,如果設(shè)置成fc00:101:101::1的話,當(dāng)訪問ipv4和ipv6雙棧接入的網(wǎng)站時,大多數(shù)瀏覽器會忽略v6地址而默認(rèn)使用v4地址;如果將IPv6內(nèi)網(wǎng)地址設(shè)置成2開頭的公網(wǎng)地址或者保留地址(如dc00:101:101::1),大多數(shù)瀏覽器就會默認(rèn)使用v6地址,所以推薦采用圖中的dc00:101:101::1作為IPv6內(nèi)網(wǎng)地址
DNSv6服務(wù)器可以使用240c::6666
最后把ip6tables的FORWARD鏈清空,在自定義設(shè)置 - 腳本 - 防火墻規(guī)則中,加入
ip6tables -P FORWARD ACCEPT
ip6tables -F FORWARD
重啟路由器,手機(jī)/電腦啟用ipv6并且設(shè)置為自動獲取,看能否獲取到ipv6地址:

用瀏覽器訪問http://[fc00:101:101::1] 或 http://[dc00:101:101::1],測試能否進(jìn)入路由器頁面
最后用瀏覽器訪問 https://bt.byr.cn/
enjoy
OpenWrt 18.06.1 可用的簡單配置方法
這是在Openwrt 18.06.1 里測試通過的簡單配置方法,如果此方法不能在你的固件里正常使用,請看下一節(jié)
- 首先,ssh登入,安裝kmod-ipt-nat6
opkg update
opkg install kmod-ipt-nat6
- 關(guān)閉sourcefilter
uci set network.wan6.sourcefilter=0
uci commit network
ifup wan6
- 設(shè)置IPv6 ULA前綴,這里的地址前綴會分配給內(nèi)網(wǎng)主機(jī),可設(shè)置為
dc00:101:101::/48,這樣大多數(shù)瀏覽器會優(yōu)先使用IPv6,如果設(shè)置為fc00:101:101::/48,則大多數(shù)瀏覽器會優(yōu)先使用IPv4:
- 設(shè)置LAN的DHCPv6服務(wù)器,勾選"總是通告默認(rèn)路由":
- 如果你的網(wǎng)絡(luò)沒有分配IPv6 DNS,那就給wan6手動指定一個:
- 最后在"網(wǎng)絡(luò)-防火墻-自定義規(guī)則"中加入NAT規(guī)則,
eth0.2要改成你自己的wan網(wǎng)卡名:
ip6tables -t nat -A POSTROUTING -o eth0.2 -j MASQUERADE
- 保存配置,重啟路由
OpenWrt / LEDE / PandoraBox + ipv6 nat
參考:http://blog.csdn.net/cod1ng/article/details/45421025
在ip6tables -t nat -A POSTROUTING -o eth0.2 -j MASQUERADE中,eth0.2要改成你自己的網(wǎng)卡名;
特別注意,如果將lan的v6地址設(shè)置成fc00:101:101::1/48的話,當(dāng)訪問ipv4和ipv6雙棧接入的網(wǎng)站時,大多數(shù)瀏覽器會忽略v6地址而默認(rèn)去連v4地址;如果設(shè)置成2開頭的公網(wǎng)地址或者ipv6保留地址(如dc00:101:101::1/48),大多數(shù)瀏覽器就會默認(rèn)去連接v6地址,所以推薦使用dc00:101:101::1/48
如果路由器自身能獲取到ipv6地址卻無法ping通外網(wǎng)ipv6(多半是舊版PandoraBox,新版工作正常),請嘗試如下操作:
uci set network.wan6.sourcefilter=0
uci commit network
ifup wan6
另外,如果按照上文配置后內(nèi)網(wǎng)機(jī)器能Ping通ipv6但是無法上網(wǎng),可能是因?yàn)閕p6tables阻斷,可以嘗試清空ip6tables的FORWARD鏈
ip6tables -P FORWARD ACCEPT
ip6tables -F FORWARD