路由器上内网IPV6地址的分配已经困扰我许久了,昨天看《我歌4》要看电视直播(各大学的IPV6电视直播通道),才决心要折腾一下。 以前用OpenWrt AA的时候,6relayd非常的好用。 而OpenWrt BB之后官方用odhcpd替代了6relayd,从某个版本的BB之后6relayd就失效了,而odhcpd也并没有那么好用。
如果通过ISATAP获得IPV6地址的可以参考下面两篇博客
下面是我(我的IPV6环境可以直接获取到IPV6地址,不需要用到ISATAP),使用odhcpd和odhcp6c分配内网IPV6地址。下面步骤前,我的路由已经获取到IPV6地址,并且可以PING6通。
- /etc/config/network
config globals 'globals'
#注释掉Global ULA-Prefix
# option ula_prefix 'fd59:7010:0819::/48'
#一般保持默认
config interface 'lan'
option ifname 'eth0.1'
option force_link '1'
option macaddr '22:22:22:22:22:22'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'
config interface 'wan'
option ifname 'eth0.2'
option force_link '1'
option macaddr '22:22:22:22:22:23'
option proto 'dhcp'
config interface 'wan6'
option ifname 'eth0.2'
option proto 'dhcpv6'
- /etc/config/dhcp
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option ra 'hybrid'
option dhcpv6 'hybrid'
option ndp 'hybrid'
option ra_management '1'
option ra_default '1'
#另外如果默认配置中把wan设置为ignore的话,把它注释掉
#config dhcp 'wan'
# option interface 'wan'
# option ignore '1'
config dhcp 'wan6'
option interface 'wan'
option dhcpv6 'hybrid'
option ra 'hybrid'
option ndp 'hybrid'
option master '1'
在我的测试过程中模式设置为relay或者hybrid貌似效果上没什么差别。
$ /etc/init.d/network restart
$ /etc/init.d/odhcpd restart
这时候检查LUCI-interface LAN接口应该已经获得了wan接口的IPV6地址。
在电脑上执行ip -6 addr
可以看到已经分配到2001开头的Global Address,不仅仅是fe80开头的本地链路了。
而此时,我尝试ping6 ipv6.google.com
发现连不通,而在电脑上ping6 LAN的IPV6地址(Global Address)
,是连通的。
也就是说,内部的网络已经可以向外网通信,但外网无法得知内网的路由。由于没有向ISP申请单独的IPv6地址块,这里不可能在外网上添加路由,同时,由于内网与外网同属一个子网(2001:250:1006:6151/64),也不可能想外网广播路由信息包,这样会造成路由混乱。–Linux 用作 IPv6 网关
我的解决办法:
- /etc/config/firewall
config defaults
option disable_ipv6 0 #让 ipv6 忽略防火墙规则
然后$ /etc/init.d/firewall restart
重启防火墙。
参考: