二级路由下的Openwrt获取ipv6

发布于 / 系统运维 / 9 条评论

虽然目前各家运营商已经开始着手配置ipv6-pd,但是在很多地区推行进度缓慢以及各种大内网套娃的复杂网络环境,导致拨号路由及下级设备可以正常下发ipv6,但是多层路由后的设备无法获取ipv6

而我家的环境大概是这样的……….

方法1: relay (中继模式 )

一般来说,较新的openwrt都已经内置了 Orelay 协议 !

优点:貌似是最优解的ipv6下发方式,且无需自行安装配置环境,且路由器本体也可以获得ipv6

缺点:可能会出现隔一段时间自行更换ipv6公网,导致ddns等服务更新不及时掉线

操作流程:首先ssh连上路由

vi /etc/config/dhcp

将配置中的lan、wan,wan6 三部分分别替换为如下文本,完成后:wq保存配置

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'

如果你需要内网设备优先解析ipv6,则还需:

vi /etc/config/network
config globals 'globals'
   option ula_prefix 'f***:****:****::/48'

将option ula_prefix (ipv6 ula前缀设置)中的f***:****:****::/48改为 d***:****:****::/48

重启设备reboot即可使用

openwrt最后大概是这样显示的,lan口不会显示公网ipv6

方法2: Passthrough ( 穿透模式 )

Passthrough就是不处理ipv4,直接将ipv6穿透至上级路由中去

优点:稳定不掉线,而且貌似是兼容性最强的玩法,你甚至可以做几级路由全部这样设置都能获取到,华硕路由器自带此功能

缺点:需要安装模块支持,很多固件可能会opkg安装不上,需要编译作者支持,且路由器本身无法获取到ipv6

opkg update
opkg install ebtables kmod-ebtables-ipv6

IPv4 转发

interface=`ip -6 route | grep "default" | 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 

进入openwrt管理页面,进入编辑 LAN 接口,在IPv6设置 选项卡中选上“始终通告默认路由”或者叫做“Always announce default router”

大功告成!

顺带一提:如果你是openwrt需要将路由器下的设备暴露在外网,则需要进入

网络->防火墙->通信规则->新建

这样才能在外网访问ipv6设备

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
转载原创文章请注明,转载自: 沧水的博客 » 二级路由下的Openwrt获取ipv6
  1. Bovie

    你好,我照着你的方法实现了穿透,但是多个设备连接时,只有前三个连上的设备能实现穿透,其他设备没法连接上ipv6.请问楼主有遇到相似的情况吗

  2. wangdc

    这个标题切换太骚了

  3. xin

    感谢大佬!!!!

  4. EDGEXI

    用路由拨号后下级设备能获取到ipv6但是获取不到ipv6的dns是什么原因

  5. 几顿饭图

    大佬,请问中继模式lan口有办法获取wan口前缀的IP吗?不能获取是什么原因呢?我的和你的一样,只能获取到唯一本地地址,按理说lan口在网络中就能获取到吧?毕竟lan口的上级(wan口)和下级(lan口下的主机)都能获取到公网IP,没道理lan口获取不到,难道是因为lan口是中继?

    最后还是再请教,中继模式下有解吗?

    1. 沧水
      @几顿饭图 中继模式你可以理解为不处理IPV4,仅将IPV6中继给了Lan口,Lan口的IPV6下发给了内网的所有机器,不经过LAN口处理
  6. 众科网络

    这个图片的水印很棒,求分享这个水印软件!!!

    1. 沧水
      @众科网络 Image Watermark WP插件名 但是水印图片得自己PS做一个
  7. guest0001

    你好,按照你relay方式配置后(没配置优先ipv6解析),二级路由下设备能获得ipv6,但不能使用ipv6访问是为什么?