在紫荆公寓这边,由于原生IPv6
需要认证才能使用,十分不方便。而使用isatap
隧道的方法访问IPv6
则十分的稳定。但是由于isatap
隧道只能够得到一个Global
的IPv6
的地址,因此需要在路由器上启用IPv6 NAT
才能够使得路由器后面的设备无缝访问IPv6
资源。之前的路由器,在配置好之后稳定地运行了一年有余,前几日因为一些需求,需要重新配置路由器,因此将配置的过程记录下来,供今后参考。
网络情况
- 软件版本: OpenWRT Barrier Breaker 14.07
- WAN: 通过isatap接入到IPv6
- LAN: 通过radvd广播得到IPv6地址,使用ip6tables的NAT转发功能访问外网
配置
- 安装软件包
用到的软件包有6in4
kmod-ipt-nat6
luci-proto-ipv6
luci-app-radvd
,最后两个是跟luci
相关的,不用界面的可以忽略。
- 禁用自带的IPv6管理
在/etc/config/network
中,将config globals 'globals'
部分删掉,将config interface 'lan'
中的ip6assign
和ip6addr
删掉,在lan
,wan
和wan6
中分别加上option delegate 0
,表示不使用内置的IPv6
配置。
- 配置
isatap
隧道
将config interface 'wan6'
中的原来的内容删掉,替换如下内容:
config interface 'wan6'
option proto '6in4'
option ipaddr '59.66.210.47'
option peeraddr '166.111.21.1'
option ip6addr '2402:f000:1:1501:200:5efe:59.66.210.47/64'
option ip6prefix 'fc00:512b:512b::/64'
option delegate '0'
其中ipaddr
是路由器的ipv4
地址,peeraddr
是isatap
隧道服务器的地址,ip6addr
是路由器的ipv6
公网地址。这里要注意的是,一定要加上ip6prefix
这一项,该项填写的是给路由器下游分配的ipv6
地址的前缀,如果不填写这一项的话,可能会出现在路由器中能够ping
通外部ipv6
地址,但是在下游的网络设备中却ping
不通的问题。
- 配置
LAN
我们需要给LAN
一个ipv6
地址,在config interface 'lan'
中,加入一行option ip6addr 'fc00:512b:512b::1/64'
。要注意该ipv6
地址的前缀一定要和前面配置isatap
中填写的一致。
- 配置
radvd
在/etc/config/radvd
中,使用下面的配置
config interface
option interface 'lan'
option AdvSendAdvert '1'
list client ''
option ignore '0'
option IgnoreIfMissing '1'
option AdvSourceLLAddress '1'
option AdvDefaultPreference 'high'
option MinRtrAdvInterval '5'
option MaxRtrAdvInterval '10'
config prefix
option interface 'lan'
option AdvOnLink '1'
option AdvAutonomous '1'
option ignore '0'
list prefix 'fc00:512b:512b::/64'
option AdvRouterAddr '1'
config route
option interface 'lan'
list prefix ''
option ignore '1'
config rdnss
option interface 'lan'
list addr ''
option ignore '1'
config dnssl
option interface 'lan'
list suffix ''
option ignore '1'
配置radvd
开机启动
/etc/init.d/radvd enable
- 设置
NAT
转发
在/etc/firewall.user
中,最后加上一句ip6tables -t nat -I POSTROUTING -s fc00:512b:512b::/64 -j MASQUERADE
- 重启网络服务,启动
radvd
/etc/init.d/network restart
/etc/init.d/radvd start
如果正常的话,内网就可以获得ipv6
地址,并且能够正常访问ipv6
网络了 。