小米路由器 +关注 已有23134人关注 +发表新主题
Andemo

骨灰级手机控

  1. 3231 积分
  2. 1583 经验
  3. 820 贡献值

Ta的主页 发消息
签到
连续0天
0人
签到看排名
扫码下载App
一键签到 升级加速
回复

小米路由器的IPv6(Native)支持教程(Update: 19/03/04)

发表在 玩机教程 01-25 12:05:12  来自PC 复制链接 手机看帖扫一扫!手机看帖更爽 381 22566

  2017年11月26日,中共中央办公厅、国务院办公厅印发了《推进互联网协议第六版(IPv6)规模部署行动计划》。截至目前,全国已经有很多地区的宽带运营商提供了 IPv6 。此前为了支持“教育网 IPv6 插件”,小米路由器其实已经内置了适用于 IPv6 的相关模块。如果你的设备官方还未正式支持IPv6,以下教程给出一种打开小米路由对宽带 IPv6 支持的方案。


  请注意:

  IPv6需要宽带运营商的支持。

  以下内容以R2D(系统版本:2.25.209)为例,截止发帖时可用。


  R1D、R3D 等理论上也可用,已有网友证实 R1D 的可用性。在其他型号上试过的,还请回复反馈。

  本案例支持的是小米路由以 PPPoE 方式获得宽带光猫(桥接模式)下发的 IPv6 配置。不是指“教育网 IPv6 插件”。

  需要开启 SSH 和 root。这两个操作存在风险,如还未开启请在研读相关资料后谨慎决定。

  本方法开启后的路由可能会偶然出现不稳定情况,可能会与路由器插件产生冲突。

  本教程供爱好者个人研究,请勿在生产环境等可能会因网络问题造成损失的场景使用。

  默认使用 Windows 下的 PuTTY 和 WinSCP 进行相关操作。



  方法:


  目的是在“教育网 IPv6 插件”不开启的情况下,也要打开路由器的 IPv6 总开关。

  用上面推荐的软件找到路由器内部文件 /etc/config/ipv6 ,替换为:

config ipv6 'settings'

        list if_on 'wan'

        option enabled '1'

        list if_on 'ipv6'

        option enabled '1'

  (如需预留恢复原状的可能,请备份原来的文件内容)



  之后重启路由器,通过 http://ipv6-test.com/、http://www.test-ipv6.com/ 等网站验证是否配置成功。另外推荐 Chrome 的 IPvFoo 插件,可以查看当前浏览的网页到底是 v4 还是 v6 。

  如果不成功,请复查之前的注意事项。如仍有问题,请给出SSH下ifconfig命令的返回结果。

  有同样成功的请回帖说一下,以免我遗漏了一些内容,并了解其他型号是否适用。


  为了鼓励大家回帖反馈,隐藏了一些无关紧要的东西。


以下内容被隐藏,回复本帖后可见




  2019/3/2更新:对于宽带光猫路由模式支持

  光猫路由模式的支持基于前面的教程。请先阅读前述教程注意事项、完成所有步骤。

  本段教程在作者电信光猫(光猫拨号,路由模式,小米路由为 DHCP)下的小米路由器R2D中试验成功,无法保证在其它设备上能够正常运作。

  本段教程涉及部分较多。如操作不当,存在使路由器崩溃的风险,应做好相关准备。

  确保光猫配置界面“IPv6 连接信息”能够获得 IPv6 地址且前缀小于\64。检查“LAN侧地址配置-IPv6配置”中“RADVD”已经起用。


  此时,通过网站验证 IPv6 会面临失败。然而,在局域网中电脑的cmd中运行:

ipconfig -all


  可以看到已经正常获得了公网“IPv6 地址”。(电信常见“240e”开头,移动常见“2409”开头,联通常见“2408”开头,教育网常见“2001”、“2402”、“2403”开头。“本地链接 IPv6 地址”为“fe80”开头,如果仅有这项代表不正常。)


  另一个重要的判断依据需要登陆SSH进到路由器,然后在SSH中运行:

ping6 ipv6.tsinghua.edu.cn


  此时应该能够得到IPv6地址(2402:f000:1:881::8:205)和 ping 反馈。


  还可以在 SSH 中运行:

ifconfig


  检查 eth0.2 的 inet6 addr 是否正常获得地址和小于等于/64的前缀。

  如果都检查通过,说明路由器本体可以连上 IPv6 ,且具备向下属设备进一步 SLAAC 的能力。




  方法:

  

  小米路由事实上已经实现了大多数的 IPv6 支持,然而由于固件版本太低,唯独 NDP 在光猫路由情形下无法正常工作,需要额外可执行文件来帮忙。

  6relayd 可以作为合适的 NDP 中继。其实 6relayd 功能还有很多,更有 odhcpd 作为更丰富的继承者。然而这两个组件官方均未提供使用,于是运用小米提供的 SDK 自行编译了 6relayd:


下载附件6relayd.zip( 50.5 KB )


  将 6relayd 文件放入/sbin/并使其可执行。由于该文件夹默认只读,先在 SSH 中输入以下命令解锁:

mount -o remount rw /


  之后,用此前推荐的软件通过 SCP 把可执行文件放入上述文件夹。

  授予其可执行权限:

chmod +x /sbin/6relayd


  此时,在 SSH 中不加参数执行“6relayd”应该会显示程序的帮助信息。

  在本案例中,输入如下命令:

6relayd -d -N eth0.2 br-lan

  此时 SSH 没有报错,说明 6relayd 已经开始运行。为防止启动多个 6relayd,路由器重启前此命令应只输入一次。


  然后重启本地计算机,在本机上运行:

ping -6 ipv6.tsinghua.edu.cn


  此时应当可以 ping 通 IPv6,在之前的测试网页也应该可以通过大部分测试。


  通过测试后,说明全部的技术路线已经打通。为了让 6relayd 能够在路由器重启后自动执行,将其附加在开机自动执行的脚本上。以 /etc/init.d/plugin_start_.sh 为例,加入的位置如下:

{

netmode=$(uci get xiaoqiang.common.NETMODE)

if [ "$netmode"x != "lanapmode"x ] && [ "$netmode"x != "wifiapmode"x ]

then

copy_plugin_chroot_file

sync

# decrese current priority and throw myself to mem cgroup

# so all plugins inherit those attributes

renice -n+10 -p $$

$$ > /dev/cgroup/mem/group1/tasks

/usr/sbin/plugin_start_impl.sh &

6relayd -d -N eth0.2 br-lan

fi

}


  重启路由器后,路由器下属设备应当自动获得正常的 IPv6 连接,这样的话就大功告成了。


  为了鼓励大家回帖反馈是否成功以及具体的信息,同样隐藏了一些无关紧要的东西。 

 

以下内容被隐藏,回复本帖后可见



  2019/3/4更新:对于外网暴露的支持

  如果本地计算机已经可以通过 IPv6 测试、可以访问 IPv6 网站,但外网通过 IPv6 无法访问本机,首先是因为 openwrt 默认阻挡所有外网主动发起 IPv6 连接。小米路由自带 IPv6 防火墙 ip6tables,为了确定问题,可以用以下命令使该防火墙放行所有数据:

ip6tables -F

ip6tables -P INPUT ACCEPT

ip6tables -P FORWARD ACCEPT


  需要注意的是,这样会降低内网设备的安全性。建议自行研究和配置 ip6tables,对放行进行严格的约束。确定规则后,可以模仿之前思路将其设为开机启动。

  另外,不要忽略本地计算机操作系统的防火墙。例如 Windows 防火墙默认阻挡 ICMP。在此配置下,外网 ping 本机 IPv6 是没有答复的。



  如果遇到问题,请完整地贴出路由器型号和版本,路由器上网模式,光猫配置信息,局域网内计算机的 ipconfig -all、ping -6 ipv6.tsinghua.edu.cn 返回内容,路由器的 ifconfig、ifstatus eth0.2、ping6 ipv6.tsinghua.edu.cn 返回内容 等详细信息(为保护隐私建议部分打码)。信息不足时,楼主难以帮助解答。

  如果成功,望至少告知光猫模式和路由器型号。

扫描二维码,手机查看本帖
发表
最新评论 | 正序排列
只看楼主|楼层直达:
回复