分类
未分类

OpenWrt 内网下发 IPv6

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 地址了

发表评论

电子邮件地址不会被公开。 必填项已用*标注