本文将介绍如何在 MikroTik RouterOS 路由器开启 IPv6 支持,光猫工作在桥接模式下,由RouterOS 进行 PPPoE 拨号。部分人会遇到通过 DHCP 获取 IPv6 地址时,一直处于 searching 状态的问题,也提供相应的说明和解决方法。
设备信息
routerboard: yes
board-name: hAP ac^2
model: RBD52G-5HacD2HnD
serial-number: E5790EC79E33
firmware-type: ipq4000L
factory-firmware: 6.45.9
current-firmware: 6.47.9
upgrade-firmware: 7.15.3
开启 IPv6 功能
首先确保 IPv6 禁用开关处于关闭状态。
/ipv6/settings/set disable-ipv6=no
配置 DHCP 获取前缀
/ipv6/dhcp-client add interface=pppoe-out-telecom request=prefix add-default-route=yes use-peer-dns=yes pool-name=ipv6-pool pool-prefix-length=64
- interface:这里的接口选择 PPPoE 拨号接口。
- request:请求地址前缀。
- add-default-route:添加一条默认路由到此接口。
- use-peer-dns:使用 DHCP 下发的 DNS 地址,你也可以在/ip/dns/中自己设置 IPv6 DNS 服务器。
- pool-name:地址池名称,自定义,后续会用到。
- pool-prefix-length:地址池前缀长度,默认64。
配置 ND(邻居发现)
邻居发现协议替代了 IPv4 的 ARP(Address Resolution Protocol)和 ICMP 路由器发现(Router Discovery),它定义了使用 ICMPv6 报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。
add interface=bridge mtu=1492
这里的接口设置为局域网所在位置。
这里的 MTU 需要设置成 PPPoE 拨号接口的实际值。如果设置错误,就有可能出现无法正常访问 IPv6 网络的问题。
实际值可以通过/interface/print
查看 ACTUAL-MTU 字段获得。以太网的 MTU 最大为1500,由于PPPOE头是6字节,PPP协议ID号两个字节,一共要占用8个字节,所以上层PPP负载数据不能超过1492字节,通常PPP协商时协商的最大接收单元值会小于等于1492字节。
启用无状态地址配置
add from-pool=ipv6-pool interface=bridge
这里的接口设置成局域网所在位置,地址池使用第一步中 DHCPv6 获取到的。
更新设备地址
局域网中的设备可能由于 DHCP 续租时间未到,不会自动获取地址,需要手动刷新一下。
Windows 通过命令提示符(Cmd)执行:
ipconfig /renew
macOS 在终端中执行:
sudo ipconfig set en0 DHCP
测试 IPv6 可访问性
通过一些IPv6测试网站,测试设备是否具备 IPv6 网络访问能力。
测试通过也不一定代表真的能够访问,可以找一些纯 IPv6 站点深入测试一下。
FAQ
1. 配置都没有问题,并且也正确分配了地址,但还是无法正常访问
检查 IPv6 ND 中的 MTU 是否与拨号的实际 MTU 一致。
2. 配置 DHCPv6 获取地址池的时候,一直处于 searching 状态,无法获取到前缀。
ROS 暂时不支持 vBRAS 类型接入点,可以通过 PPPoE 的扫描功能,扫描当前服务提供商接入点中是否存在非 vBRAS 接入点,如果有,那么选择一个在拨号时指定这个接入点,如果没有,那么可以放弃了,等待 ROS 后续更新支持。
首先扫描接入点,这里的接口选择 PPPoE 接口绑定的物理接口。扫描一定时间没有条目更新依据提示按 Q
退出扫描。
/interface/pppoe-client/scan interface=ether1
选择一个非 vBRAS 接入点,重新拨号。
/interface/pppoe-client/set pppoe-out-telecom ac-name=JS-NJ-JN-MY-BAS-1.MAN.NE40
E-X16
这时查看 IPv6 DHCP 应该可以正常获取到前缀了。