目錄
- 環(huán)境
- 方案比選
- NAT方案
環(huán)境
- 網(wǎng)絡(luò) :scut南校區(qū)校園網(wǎng),雙棧接入。ipv6無狀態(tài)自動(dòng)分配公網(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過一會(huì)就會(huì)卡住烈涮,遂放棄6relayd朴肺。
然后去lede折騰odhcpd中繼,也能讓內(nèi)網(wǎng)設(shè)備獲取到ipv6公網(wǎng)ip坚洽,但是上不了網(wǎng)戈稿,不知原因所在,最終放棄了中繼方案讶舰。
NAT方案
Padavan+NAPT66
如果你使用的是我的Padavan固件鞍盗,請(qǐng)直接查看使用教程中關(guān)于NAPT66配置的部分,如果你想讓自己編譯的Padavan固件支持NAPT66绘雁,請(qǐng)繼續(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庐舟,需要對(duì)內(nèi)核代碼做修改欣除,參考:
http://www.reibang.com/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時(shí)首先要編譯好工具鏈,并且要完整編譯過一次固件并且未執(zhí)行./clear_tree才能成功
把napt66.ko上傳到/etc/storage
杠娱,加載模塊:
insmod /etc/storage/napt66.ko wan_if=eth2.2
# wan_if=WAN口名稱
要想每次開機(jī)自動(dòng)加載挽牢,只需要在自定義設(shè)置-腳本-啟動(dòng)后
添加上述命令即可。
至此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í),大多數(shù)瀏覽器會(huì)忽略v6地址而默認(rèn)使用v4地址茧痕;如果將IPv6內(nèi)網(wǎng)地址設(shè)置成2開頭的公網(wǎng)地址或者保留地址(如dc00:101:101::1
)野来,大多數(shù)瀏覽器就會(huì)默認(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è)置為自動(dòng)獲取令野,看能否獲取到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 里測試通過的簡單配置方法,如果此方法不能在你的固件里正常使用气破,請(qǐng)看下一節(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前綴,這里的地址前綴會(huì)分配給內(nèi)網(wǎng)主機(jī)狗超,可設(shè)置為
dc00:101:101::/48
弹澎,這樣大多數(shù)瀏覽器會(huì)優(yōu)先使用IPv6,如果設(shè)置為fc00:101:101::/48
努咐,則大多數(shù)瀏覽器會(huì)優(yōu)先使用IPv4:
- 設(shè)置LAN的DHCPv6服務(wù)器苦蒿,勾選"總是通告默認(rèn)路由":
- 如果你的網(wǎng)絡(luò)沒有分配IPv6 DNS,那就給wan6手動(dòng)指定一個(gè):
- 最后在"網(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í)拱燃,大多數(shù)瀏覽器會(huì)忽略v6地址而默認(rèn)去連v4地址秉溉;如果設(shè)置成2開頭的公網(wǎng)地址或者ipv6保留地址(如dc00:101:101::1/48
),大多數(shù)瀏覽器就會(huì)默認(rèn)去連接v6地址碗誉,所以推薦使用dc00:101:101::1/48
如果路由器自身能獲取到ipv6地址卻無法ping通外網(wǎng)ipv6(多半是舊版PandoraBox召嘶,新版工作正常),請(qǐng)嘗試如下操作:
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