2018 年 4 月,工业和信息化部发布了关于贯彻落实 《推进互联网协议第六版 (IPv6) 规模部署行动计划》 的通知,大力推广下一代互联网技术 IPv6。
时至今日,高校教育网以及各大运营商已经基本支持了 IPv6 地址的分配。然而绝大多数家庭的路由器还不能支持自动下发,因此并没有享受到下一代互联网的快感。
这里主要介绍使用 OpenWrt/LEDE 来解决内网设备分配 IPv6 的问题。
想要让路由器下的设备获得 IPv6 地址通常有三种方式:relay(中继)、NAT(地址转换)、Passthrough(穿透)。下面分三个部分谈谈具体的配置方案。
中继模式 (relay)
OpenWrt 早在 15.05 就内置了 relay 协议,具体是通过 odhcpd 来实现的。
这种方案可以让子网设备分到公网 IPv6 的地址,是最为科学的,然而 odhcpd 的实现有很多 bug,在实际使用中有时候会掉线,需要重启服务才能解决,因此在部分设备上体验不佳。
具体操作如下
进入路由器终端
$ ssh root@192.168.1.1
编辑 dhcp 配置文件,修改如下
$ vi /etc/config/dhcp
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option ra 'relay'
option ndp 'relay'
option dhcpv6 'relay'
option ra_management '1'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
config dhcp 'wan6'
option interface 'wan'
option ra 'relay'
option ndp 'relay'
option dhcpv6 'relay'
option master '1'
编辑 network 文件,将地址第一个字母 f
修改为 d
$ vi /etc/config/network
config globals 'globals'
option ula_prefix 'dd53:abcd:abcd::/48'
最后重启即可
穿透模式 (Passthrough)
Passthrough 的原理是将内外网进行桥接,然后对 IPv4 流量采用 NAT 方式进行转发,稳定性相当好,唯一的缺点就是路由器自身会失去 IPv6 的访问,因此如果想在路由器上做离线下载等功能就会非常麻烦。
配置如下
安装 ebtables
和 kmod-ebtables-ipv6
模块
$ opkg update
$ opkg install ebtables kmod-ebtables-ipv6
设置 IPv4 转发
$ interface=`ip -6 route | grep "default from" | awk '{print $7}'`
$ ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i $interface
内外网桥接
$ brctl addif br-lan $interface
杀死 odhcpd
$ /etc/init.d/odhcpd stop
$ /etc/init.d/odhcpd disable
点击 LAN 接口的 edit 按钮进入设置,在 IPv6 Settings
选项卡中勾上 Always announce default router
做完这些步骤,稍等一会儿子网设备就会分到相应的公网 IPv6 地址了
文章评论