前提条件
- 光猫拨号并且 k2 路由器 WAN 口能获取到 ipv6 公网地址
- 斐讯 k2 已刷入 OpenWrt-19.07.1 版本
想要让路由器下的设备获得 IPv6 地址通常有三种方式:relay(中继)、NAT(地址转换)、Passthrough(穿透)这里主要讲穿透方式
k2 没刷入 OpenWrt-19.07.1 的,可点击以下链接下载并刷入:
https://downloads.openwrt.org/releases/19.07.1/targets/ramips/mt7620/openwrt-19.07.1-ramips-mt7620-psg1218a-squashfs-sysupgrade.bin
穿透模式(Passthrough)
Passthrough 的原理是将内外网进行桥接,然后对 IPv4 流量采用 NAT 方式进行转发,稳定性相当好,唯一的缺点就是路由器自身会失去 IPv6 的访问,因此如果想在路由器上做离线下载等功能就会非常麻烦。
配置如下
ssh 连接路由器
安装 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 -> 编辑 -> DHCP服务器 -> IPV6设置
路由通告服务: 服务器模式
DHCPv6 服务: 服务器模式
NDP 代理: 已禁用
DHCPv6 模式: 无状态 + 有状态
总是通告默认路由: √
保存并应用
到这里路由器下的设备应该就获取到 ipv6 公网地址了,打开 http://www.test-ipv6.com/ 测试一下。没有的可以试试重连路由器
到这里还没完,路由器重启后部分设置会失效,所以我们需要设置一下启动脚本
打开 系统 -> 启动项 -> 本地启动脚本
写入以下命令:
# ipv6 setting START
sleep 10
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
# ipv6 setting END
保存
重启路由器试试看路由器下的设备能否获得公网 ipv4 地址
参考文章
https://i-meto.com/openwrt-ipv6/#comments
http://blog.kompaz.win/2017/02/22/OpenWRT%20IPv6%20%E9%85%8D%E7%BD%AE/
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=213889
我之前用ac1900P梅林系统里的passthrough模式可以直接用ipv6,用了openwrt发现没有这个选项,用你这个可以吗
这个方法确实比较稳定。建议用 openwrt 的 hotplug 机制,在 wan6 ifup 和 ifdown 的时候调用对应脚本来配置。这样大概会更好?
干掉零评论