欢迎光临散文网 会员登陆 & 注册

[ RouterOS 折腾手记 ] 9.RouterOS配置IPv6

2022-10-06 20:44 作者:狐狸Nomad  | 我要投稿

0.前景提要

在之前的文章的,RouterOS 已经可以使用 IPv4 网络正常上网。

在 RouterOS v7.4 到 v7.5 这几个版本中,Mikrotik 官方对 IPv6 相关功能做了许多优化,是时候来配置 IPv6 网络了。

根据 Mikrotik 官方文档,目前 RouterOS 能比较好的支持以 SLAAC 方式来配置 IPv6 ,而 DHCPv6 暂时只支持通告前缀信息,而不能分发地址。

而且经过我的测试,如果把公网 IPv6 前缀信息通告到内网设备(即让内网设备直接具有公网 IPv6 地址),当 PPPoE 重新拨号或其他原因导致该公网 IPv6 前缀发生变化时,内网设备虽然也能同步获取新的公网 IPv6 地址,但此时 RouterOS 的 IPv6 路由表已经自动刷新,导致新旧公网 IPv6 地址并存的内网设备无法通过 IPv6 正常上网,只能通过重启该内网设备的网卡,让该内网设备刷新公网 IPv6 地址(等价于去掉旧的公网 IPv6 地址),才能恢复 IPv6 的网络访问。

根据抓取 RouterOS 和 OpenWrt 的 ICMPv6 相关包可以发现,RouterOS 的 Neighbor Discovery 功能目前不支持通告 ICMPv6 Option 为 Type: Route Information (24) 的信息。而且 OpenWrt 在公网 IPv6 前缀发生变化时,除了会通告新的 IPv6 路由信息外,也会在系统 IPv6 路由表中新增路由条目,而旧的 IPv6 条目并不会删除,直到 OpenWrt 系统重启。

总体而言, OpenWrt 对 IPv6 的支持就目前来说是好于 RouterOS 的,毕竟现在 OpenWrt 对 DHCPv6 也有良好的支持。

1.获取IPv6前缀

在之前的文章《4.系统参数调整》中,我们曾关闭了 IPv6 相关功能,此时需要将其打开。

打开 Winbox 并点击左侧导航 IPv6 菜单的子菜单 Settings 。

取消勾选 Disable IPv6 ,并将 Max Neighbor Entries 参数(相当于 ARP 表最大条目数)修改为合适的数值,演示为 1024 :

点击左侧导航 IPv6 菜单的子菜单 DHCP Client ,点击“添加”按钮:

说明:
对于 Add Default Route 参数,官方建议是无需勾选。

也没有相关的 RFC 文档说明 DHCPv6 Client 需要添加默认路由,此处存在该设置应该是 RouterOS 独特的 “快捷设置” 方法。
经过测试,该选项勾选与否均不影响后续的设置以及 IPv6 的网络访问;同时也无法解决公网 IPv6 前缀变化后,内网设备具有旧公网 IPv6 地址而无法上网的问题。

DHCPv6 Client 创建完成后,如果正确获取到了 IPv6 前缀信息,将如图所示:

如果未获取到前缀信息,需要让 PPPoE 重新拨号。

如果重新拨号后,仍未获取 IPv6 的前缀信息,那么可能运营商并未提供 IPv6 接入的能力。

2.设置接口IPv6地址

在给内部接口设置公网 IPv6 地址时,拨号的接口 pppoe-out1 是 无需 分配公网 IPv6 地址的。

只需要给内网的网桥接口 bridge1 分配一个公网 IPv6 地址,并附加一个私有 ULA IPv6 地址即可。

说明:
当前 RouterOS IPv6 还未设置防火墙,给内部接口分配公网 IPv6 之后,RouterOS 相当于已经与公网互联。
如果当前 RouterOS 有不完善的安全设置(比如使用了弱登录密码),系统存在被入侵的风险。
因此建议先关闭 DHCPv6 Client ,直到 RouterOS IPv6 防火墙等内容设置完成后,再将其打开。

2.1.给网桥接口分配公网IPv6地址

点击 Winbox 左侧导航 IPv6 菜单的子菜单 Addresses ,点击“添加”按钮:

2.2.给网桥接口分配私有IPv6地址

根据 RFC-4193 中给出的定义,IPv6 的私有地址 ULA 前缀为 FC00::/7 。

该前缀包含 FC00::/8 和 FD00::/8 两个部分,严格意义上 ULA 目前应该使用 FD00::/8 。

方便起见,本文使用 FC00::/7 作为演示。

在实际使用场景下,建议使用类似 RFC4193 IPv6 Generator 的工具来生成符合规范的 ULA 地址。

工具地址:https://cd34.com/rfc4193/

该工具只需要输入接口(例如 RouterOS 的 bridge1 )的 MAC 地址即可,演示如下:

得到符合规范的 ULA 为:

回到 Winbox ,再次点击“添加”按钮:

DHCPv6 Client 正确获取 IPv6 前缀,并且内部网桥 bridge1 两个 IPv6 地址均添加完成后,如图所示:

3.配置ND服务

3.1.配置ND前缀设置

点击 Winbox 左侧导航 IPv6 菜单的子菜单 ND 。

在 Neighbor Discovery 对话框中切换到 Prefixes 选项卡,点击 Default 按钮。

根据 Systemd.Network 中的描述:

Preferred and valid lifetimes for the prefix measured in seconds.
PreferredLifetimeSec= defaults to 1800 seconds (30 minutes) and
ValidLifetimeSec= defaults to 3600 seconds (one hour).

经过一段时间的测试,将 Preferred Lifetime 设置为 1 小时,将 Valid Lifetime 设置为 2 小时较为可靠。

这里可以看到一个标记为 D 的 Prefix fc00::/64 ,表示该条目为动态自动生成的。

3.2.配置ND通告

在 Neighbor Discovery 对话框中切换到 Interfaces 选项卡。

鼠标 单击 Interface 为 all 的条目,并将其“禁用”:

点击“添加”按钮:

如果内网环境中没有自建 DNS 服务器,则可以将 DNS Servers 参数设置为 fc00::1 ,与 bridge1 的 ULA IPv6 地址相同。

注意:
如果内网中有自建 DNS 服务器,则需要将 DNS Servers 参数设置为内网 DNS 服务器的 IPv6 地址。

假设内网 DNS 服务器分别为 fc00::2 、 fc00::3 ,则 ND 配置如下:

ND 配置完成后,如图所示:

4.配置系统DNS

启用 IPv6 后,需要给 RouterOS 指定上游 IPv6 的 DNS 服务器地址。

点击 Winbox 左侧导航 IP 菜单的子菜单 DNS ,并修改参数:

在 Servers 处增加国内知名的 DNS 服务提供商的 IPv6 地址。

腾讯云 DNSPod 的 IPv6 地址为:2402:4e00:: 和 2402:4e00:1:: 。

阿里云 AliDNS 的 IPv6 地址为:2400:3200::1 和 2400:3200:baba::1 。

注意:
如果内网中有自建 DNS 服务器,则需要将 Servers 参数设置为内网 DNS 服务器的 IPv6 地址。

假设内网 DNS 服务器分别为 fc00::2 、 fc00::3 ,则 DNS 配置如下:

5.配置IPv6防火墙

与之前文章《2.配置防火墙和流量整形》中类似,IPv6 的防火墙的配置同样涉及 address-list 、filter 、nat 、mangle 、raw 等内容。

依然建议复制防火墙配置命令,一次性全部粘贴到终端工具中进行 “一键配置” 。

需要注意的是,防火墙配置命令中的部分 IPv6 地址,需要根据实际情况进行调整。

例如,若内网自建 DNS 的 IPv6 地址为 fc00::2 、 fc00::3 ,则需要修改 address-list 表中的 local_dns_ipv6 参数。

若需使用 NAT66 的方式来访问外部 IPv6 网络,请在 nat 表中启用第一条防火墙规则。

由于防火墙的配置命令很长,我放在本篇教程的结尾处,以便复制。 

IPv6 防火墙配置完成后,回到 Winbox,点击左侧导航 IPv6 菜单的子菜单 Firewall 并查看防火墙各个选项卡中内容:

确认防火墙条目与命令中的条目一致后,便可启用 IPv6 的 DHCPv6 Client ,建议重启一次 RouterOS。

重启内网设备的网卡,检查是否获取了 ULA 地址:

Windows11 IPv6 连接处会显示 “Internet” ,表示此时 Windows 是可以访问 IPv6 网络的。

可以通过这个网站来进行测试 IPv6 Test ,至此,RouterOS 的 IPv6 配置已经完成。

IPv6 Test 地址:https://master.test-ipv6.com

6.命令行配置RouterOS

经过这段时间对 RouterOS 各类基础配置的整理,发现即使是熟练使用 Winbox 来配置,也需要消耗大量的时间。

因此我这里整理了一份纯命令行配置 RouterOS CHR 版本 的脚本,请查阅文件:

Gitee 同步地址:

https://gitee.com/callmer/routeros_toss_notes/blob/master/src/shortcut/fox_ros_chr_shortcut.conf

对于 RouterOS 原生硬件 配置脚本,例如 RB750Gr3 ,请参考文件:

Gitee 同步地址:

https://gitee.com/callmer/routeros_toss_notes/blob/master/src/shortcut/fox_ros_rb750gr3_shortcut.conf

脚本包含了 RouterOS 配置 IPv4、IPv6 的绝大部分内容,剩下的配置项在该文件中也有说明,希望能够减少大家初始化配置 RouterOS 的时间 :) 。



IPv6 防火墙设置代码,注意替换命令中的部分 IPv6 地址参数,将以下命令一次性全部粘贴到终端工具中即可:

如果该段代码不好复制,请查阅我 Gitee 上的同步更新仓库。

[ RouterOS 折腾手记 ] 9.RouterOS配置IPv6的评论 (共 条)

分享到微博请遵守国家法律