离成功实现路由器刷OpenWrt、接入校园网差不多一年了。路由工作比较稳定,还是很满意的。

这次回来有个新发现:学校有原生ipv6支持,在win7和ubuntu下什么都不用设置,自动获取global unicast的ipv6地址。但是路由器内部局域网的客户机则没法享受这个待遇。趁春节放假,好好研究了一下怎样让客户机也拿到ipv6地址。

大概折腾了3天,前两天走了弯路、岔路。

网上的教程已经很多了,一搜一大把,比如这个、和这个,但是做起来比较复杂,静态ip可能好点,动态分配就有很多麻烦事。

而且要装ndppd、radvd、dhcpv6-server等新组件,结果发现路由器的空间不够用,只好自己跑去编译固件,去掉不用的组件以节省空间。现学的搭环境、编译下载花了1天的时间,在此问候一下G·F·W及其全家,编译失败多次以后我不得不把verbose打开,一个个找被墙掉的依赖包手动下载。

等合适的固件编译好之后发现这种方式不可行……我擦。不仅设置比较复杂,关键是原来能拿到ipv6地址、能ping通ipv6网站的路由wan口,现在连地址都拿不到了。

折腾2天时间之后发现了这个帖子,结果真的如帖子所说,不到5分钟搞定,而且所有设备都能动态的拿到ipv6地址,我拿手机试过,能ping通、访问ipv6.google.com,www.kame.net的小乌龟也是动的。

其关键就在6relayd这个组件,看看它的简介:

6relayd is a daemon for serving and relaying IPv6 management protocols to configure clients and downstream routers. 6relayd provides server services for RA, stateless and stateful DHCPv6, DHCPv6-PD and can be used to relay RA, DHCPv6 and NDP between routed (non-bridged) interfaces incase no delegated prefixes are provided by the upstream router.

简单的说就是这个组件多种功能集于一身,适用多种网络环境,而且配置超级简单,福音呐。

不过前两天也没白费,对ipv6的理解又多了一点点,对OpenWrt的make menuconfig设置、编译也比较熟练了,也弄懂了一部分组件的功能和依赖关系,比如kmod-ipv6是OpenWrt的ipv6支持核心包,dhcpv6的server和client有多个实现,menuconfig一些依赖关系的自动配置不完全,还需手动干预,受到一个帖子的启发,等等。

最后把此时路由器OpenWrt的组件列表备份一个,以后再编固件的时候参照下:
Installed packages
 Package name Version
 6relayd 2013-07-26-2ed520c500b0fbb484cfad5687eb39a0da43dcf7
 base-files 117-r36088
 busybox 1.19.4-6
 dnsmasq 2.62-2
 dropbear 2011.54-2
 firewall 2-55.1
 hotplug2 1.0-beta-4
 iptables 1.4.10-4
 iw 3.6-1
 jshn 2013-01-29-0bc317aa4d9af44806c28ca286d79a8b5a92b2b8
 kernel 3.3.8-1-d6597ebf6203328d3519ea3c3371a493
 kmod-ath 3.3.8+2012-09-07-3
 kmod-ath9k 3.3.8+2012-09-07-3
 kmod-ath9k-common 3.3.8+2012-09-07-3
 kmod-cfg80211 3.3.8+2012-09-07-3
 kmod-crypto-aes 3.3.8-1
 kmod-crypto-arc4 3.3.8-1
 kmod-crypto-core 3.3.8-1
 kmod-gpio-button-hotplug 3.3.8-1
 kmod-ipt-conntrack 3.3.8-1
 kmod-ipt-core 3.3.8-1
 kmod-ipt-nat 3.3.8-1
 kmod-ipt-nathelper 3.3.8-1
 kmod-ipv6 3.3.8-1
 kmod-leds-gpio 3.3.8-1
 kmod-ledtrig-default-on 3.3.8-1
 kmod-ledtrig-netdev 3.3.8-1
 kmod-ledtrig-timer 3.3.8-1
 kmod-ledtrig-usbdev 3.3.8-1
 kmod-lib-crc-ccitt 3.3.8-1
 kmod-mac80211 3.3.8+2012-09-07-3
 kmod-nls-base 3.3.8-1
 kmod-ppp 3.3.8-1
 kmod-pppoe 3.3.8-1
 kmod-pppox 3.3.8-1
 kmod-usb-core 3.3.8-1
 kmod-usb-ohci 3.3.8-1
 kmod-usb2 3.3.8-1
 kmod-wdt-ath79 3.3.8-1
 libblobmsg-json 2013-01-29-0bc317aa4d9af44806c28ca286d79a8b5a92b2b8
 libc 0.9.33.2-1
 libgcc 4.6-linaro-1
 libip4tc 1.4.10-4
 libiwinfo 36
 libiwinfo-lua 36
 libjson 0.9-2
 liblua 5.1.4-8
 libnl-tiny 0.1-3
 libubox 2013-01-29-0bc317aa4d9af44806c28ca286d79a8b5a92b2b8
 libubus 2013-01-13-bf566871bd6a633e4504c60c6fc55b2a97305a50
 libubus-lua 2013-01-13-bf566871bd6a633e4504c60c6fc55b2a97305a50
 libuci 2013-01-04.1-1
 libuci-lua 2013-01-04.1-1
 libxtables 1.4.10-4
 lua 5.1.4-8
 luci 0.11.1-1
 luci-app-firewall 0.11.1-1
 luci-i18n-english 0.11.1-1
 luci-lib-core 0.11.1-1
 luci-lib-ipkg 0.11.1-1
 luci-lib-nixio 0.11.1-1
 luci-lib-sys 0.11.1-1
 luci-lib-web 0.11.1-1
 luci-mod-admin-core 0.11.1-1
 luci-mod-admin-full 0.11.1-1
 luci-proto-core 0.11.1-1
 luci-proto-ppp 0.11.1-1
 luci-sgi-cgi 0.11.1-1
 luci-theme-base 0.11.1-1
 luci-theme-openwrt 0.11.1-1
 mtd 18.1
 netifd 2013-01-29.2-4bb99d4eb462776336928392010b372236ac3c93
 opkg 618-3
 ppp 2.4.5-8
 ppp-mod-pppoe 2.4.5-8
 swconfig 10
 uboot-envtools 2012.04.01-1
 ubus 2013-01-13-bf566871bd6a633e4504c60c6fc55b2a97305a50
 ubusd 2013-01-13-bf566871bd6a633e4504c60c6fc55b2a97305a50
 uci 2013-01-04.1-1
 uhttpd 2012-10-30-e57bf6d8bfa465a50eea2c30269acdfe751a46fd
 wpad 20130302-1