目錄
- 環境
- 方案比選
- NAT方案
環境
- 網絡 :scut南校區校園網,雙棧接入。ipv6無狀態自動分配公網地址,不限速不限流不斷網,但封掉了80端口;ipv4采用drcom認證(802.1x?),可用scutclient認證,似乎是固定ip,由于大一新生不能開網所以不太了解。
- 設備:斐訊K2(padavan或PandoraBox固件);品勝AR71xx小路由(Openwrt)
即便是不開網,宿舍網口仍可以分配到ipv6的公網ip,只是封掉了80端口,很多網站打不開,但443端口沒有封。
這樣,可以通過ipv6的各種代理滿足上網需求,不過國內的vps普遍沒有ipv6,所以必須選擇海外的vps或者代理商。
要想讓路由器內的手機,電腦也能訪問IPv6,有以下幾種方法:
三種方案
- 中繼方案:使用6relayd,odhcpd等,讓路由器內的設備獲取2xxx開頭的公網ipv6地址
- NAT方案:使用nat6/napt66+radvd/odhcpd,讓路由器內的設備獲取內網ipv6地址,然后路由器做NAT轉發
- 橋接方案:使用ebtables把ipv6通過第二層橋接到內網區域
6relayd有缺陷,現在也已經不在openwrt的軟件包列表里了(用odhcpd代替了),padavan的entware倒是還有6relayd。經過數日折騰,雖然能讓內網設備獲取到公網ipv6地址,但是鏈接并不穩定,看iptv過一會就會卡住,遂放棄6relayd。
然后去lede折騰odhcpd中繼,也能讓內網設備獲取到ipv6公網ip,但是上不了網,不知原因所在,最終放棄了中繼方案。
NAT方案
Padavan+NAPT66
如果你使用的是我的Padavan固件,請直接查看使用教程中關于NAPT66配置的部分,如果你想讓自己編譯的Padavan固件支持NAPT66,請繼續往下看:
Padavan的Linux內核原生不支持ipv6的NAT;
NAPT66是北郵學生開發的在較舊內核的Linux上實現ipv6 nat的內核模塊;
項目地址:https://github.com/mzweilin/napt66
要想使用NAPT66,需要對內核代碼做修改,參考:
http://www.lxweimin.com/p/3a9ec169336e
接著修改napt66的Makefile:我的工具鏈在/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/
,內核源碼在/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時首先要編譯好工具鏈,并且要完整編譯過一次固件并且未執行./clear_tree才能成功
把napt66.ko上傳到/etc/storage
,加載模塊:
insmod /etc/storage/napt66.ko wan_if=eth2.2
# wan_if=WAN口名稱
要想每次開機自動加載,只需要在自定義設置-腳本-啟動后
添加上述命令即可。
至此NAPT66已經安裝完成,接下來是路由器上的配置。
外部網絡(WAN) - IPv6設置,可按下圖配置:
注意其中的IPv6內網地址一欄,如果設置成fc00:101:101::1
的話,當訪問ipv4和ipv6雙棧接入的網站時,大多數瀏覽器會忽略v6地址而默認使用v4地址;如果將IPv6內網地址設置成2開頭的公網地址或者保留地址(如dc00:101:101::1
),大多數瀏覽器就會默認使用v6地址,所以推薦采用圖中的dc00:101:101::1
作為IPv6內網地址
DNSv6服務器可以使用240c::6666
最后把ip6tables的FORWARD鏈清空,在自定義設置 - 腳本 - 防火墻規則中,加入
ip6tables -P FORWARD ACCEPT
ip6tables -F FORWARD
重啟路由器,手機/電腦啟用ipv6并且設置為自動獲取,看能否獲取到ipv6地址:
用瀏覽器訪問http://[fc00:101:101::1]
或 http://[dc00:101:101::1]
,測試能否進入路由器頁面
最后用瀏覽器訪問 https://bt.byr.cn/
enjoy
OpenWrt 18.06.1 可用的簡單配置方法
這是在Openwrt 18.06.1 里測試通過的簡單配置方法,如果此方法不能在你的固件里正常使用,請看下一節
- 首先,ssh登入,安裝kmod-ipt-nat6
opkg update
opkg install kmod-ipt-nat6
- 關閉sourcefilter
uci set network.wan6.sourcefilter=0
uci commit network
ifup wan6
- 設置IPv6 ULA前綴,這里的地址前綴會分配給內網主機,可設置為
dc00:101:101::/48
,這樣大多數瀏覽器會優先使用IPv6,如果設置為fc00:101:101::/48
,則大多數瀏覽器會優先使用IPv4:
- 設置LAN的DHCPv6服務器,勾選"總是通告默認路由":
- 如果你的網絡沒有分配IPv6 DNS,那就給wan6手動指定一個:
- 最后在"網絡-防火墻-自定義規則"中加入NAT規則,
eth0.2
要改成你自己的wan網卡名:
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要改成你自己的網卡名;
特別注意,如果將lan的v6地址設置成fc00:101:101::1/48
的話,當訪問ipv4和ipv6雙棧接入的網站時,大多數瀏覽器會忽略v6地址而默認去連v4地址;如果設置成2開頭的公網地址或者ipv6保留地址(如dc00:101:101::1/48
),大多數瀏覽器就會默認去連接v6地址,所以推薦使用dc00:101:101::1/48
如果路由器自身能獲取到ipv6地址卻無法ping通外網ipv6(多半是舊版PandoraBox,新版工作正常),請嘗試如下操作:
uci set network.wan6.sourcefilter=0
uci commit network
ifup wan6
另外,如果按照上文配置后內網機器能Ping通ipv6但是無法上網,可能是因為ip6tables阻斷,可以嘗試清空ip6tables的FORWARD鏈
ip6tables -P FORWARD ACCEPT
ip6tables -F FORWARD