[ RouterOS 折騰手記 ] 9.RouterOS配置IPv6

0.前景提要
在之前的文章的,RouterOS 已經(jīng)可以使用 IPv4 網(wǎng)絡正常上網(wǎng)。
在 RouterOS v7.4 到 v7.5 這幾個版本中,Mikrotik 官方對 IPv6 相關功能做了許多優(yōu)化,是時候來配置 IPv6 網(wǎng)絡了。
根據(jù) Mikrotik 官方文檔,目前 RouterOS 能比較好的支持以?SLAAC
?方式來配置 IPv6 ,而 DHCPv6 暫時只支持通告前綴信息,而不能分發(fā)地址。
而且經(jīng)過我的測試,如果把公網(wǎng) IPv6 前綴信息通告到內(nèi)網(wǎng)設備(即讓內(nèi)網(wǎng)設備直接具有公網(wǎng) IPv6 地址),當 PPPoE 重新?lián)芴柣蚱渌驅(qū)е略摴W(wǎng) IPv6 前綴發(fā)生變化時,內(nèi)網(wǎng)設備雖然也能同步獲取新的公網(wǎng) IPv6 地址,但此時 RouterOS 的 IPv6 路由表已經(jīng)自動刷新,導致新舊公網(wǎng) IPv6 地址并存的內(nèi)網(wǎng)設備無法通過 IPv6 正常上網(wǎng),只能通過重啟該內(nèi)網(wǎng)設備的網(wǎng)卡,讓該內(nèi)網(wǎng)設備刷新公網(wǎng) IPv6 地址(等價于去掉舊的公網(wǎng) IPv6 地址),才能恢復 IPv6 的網(wǎng)絡訪問。
根據(jù)抓取 RouterOS 和 OpenWrt 的?ICMPv6
?相關包可以發(fā)現(xiàn),RouterOS 的?Neighbor Discovery
?功能目前不支持通告?ICMPv6 Option
?為?Type: Route Information (24)
?的信息。而且 OpenWrt 在公網(wǎng) IPv6 前綴發(fā)生變化時,除了會通告新的 IPv6 路由信息外,也會在系統(tǒng) IPv6 路由表中新增路由條目,而舊的 IPv6 條目并不會刪除,直到 OpenWrt 系統(tǒng)重啟。
總體而言, OpenWrt 對 IPv6 的支持就目前來說是好于 RouterOS 的,畢竟現(xiàn)在 OpenWrt 對 DHCPv6 也有良好的支持。
1.獲取IPv6前綴
在之前的文章《4.系統(tǒng)參數(shù)調(diào)整》中,我們曾關閉了 IPv6 相關功能,此時需要將其打開。
打開 Winbox 并點擊左側(cè)導航?IPv6
?菜單的子菜單?Settings
?。
取消勾選?Disable IPv6
?,并將?Max Neighbor Entries
?參數(shù)(相當于 ARP 表最大條目數(shù))修改為合適的數(shù)值,演示為?1024
?:

點擊左側(cè)導航?IPv6
?菜單的子菜單?DHCP Client
?,點擊“添加”按鈕:


說明:
對于?Add Default Route
?參數(shù),官方建議是無需勾選。
也沒有相關的 RFC 文檔說明?DHCPv6 Client
?需要添加默認路由,此處存在該設置應該是 RouterOS 獨特的 “快捷設置” 方法。
經(jīng)過測試,該選項勾選與否均不影響后續(xù)的設置以及 IPv6 的網(wǎng)絡訪問;同時也無法解決公網(wǎng) IPv6 前綴變化后,內(nèi)網(wǎng)設備具有舊公網(wǎng) IPv6 地址而無法上網(wǎng)的問題。
DHCPv6 Client
?創(chuàng)建完成后,如果正確獲取到了 IPv6 前綴信息,將如圖所示:

如果未獲取到前綴信息,需要讓 PPPoE 重新?lián)芴枴?br>
如果重新?lián)芴柡?,仍未獲取 IPv6 的前綴信息,那么可能運營商并未提供 IPv6 接入的能力。
2.設置接口IPv6地址
在給內(nèi)部接口設置公網(wǎng) IPv6 地址時,撥號的接口?pppoe-out1
?是?無需?分配公網(wǎng) IPv6 地址的。
只需要給內(nèi)網(wǎng)的網(wǎng)橋接口?bridge1
?分配一個公網(wǎng) IPv6 地址,并附加一個私有 ULA IPv6 地址即可。
說明:
當前 RouterOS IPv6 還未設置防火墻,給內(nèi)部接口分配公網(wǎng) IPv6 之后,RouterOS 相當于已經(jīng)與公網(wǎng)互聯(lián)。
如果當前 RouterOS 有不完善的安全設置(比如使用了弱登錄密碼),系統(tǒng)存在被入侵的風險。
因此建議先關閉?DHCPv6 Client
?,直到 RouterOS IPv6 防火墻等內(nèi)容設置完成后,再將其打開。
2.1.給網(wǎng)橋接口分配公網(wǎng)IPv6地址
點擊 Winbox 左側(cè)導航?IPv6
?菜單的子菜單?Addresses
?,點擊“添加”按鈕:


2.2.給網(wǎng)橋接口分配私有IPv6地址
根據(jù)?RFC-4193?中給出的定義,IPv6 的私有地址 ULA 前綴為?FC00::/7
?。
該前綴包含?FC00::/8
?和?FD00::/8
?兩個部分,嚴格意義上 ULA 目前應該使用?FD00::/8
?。
方便起見,本文使用?FC00::/7
?作為演示。
在實際使用場景下,建議使用類似?RFC4193 IPv6 Generator?的工具來生成符合規(guī)范的 ULA 地址。
工具地址:https://cd34.com/rfc4193/
該工具只需要輸入接口(例如 RouterOS 的?bridge1
?)的 MAC 地址即可,演示如下:

得到符合規(guī)范的 ULA 為:

回到 Winbox ,再次點擊“添加”按鈕:


DHCPv6 Client
?正確獲取 IPv6 前綴,并且內(nèi)部網(wǎng)橋?bridge1
?兩個 IPv6 地址均添加完成后,如圖所示:

3.配置ND服務
3.1.配置ND前綴設置
點擊 Winbox 左側(cè)導航?IPv6
?菜單的子菜單?ND
?。
在?Neighbor Discovery
?對話框中切換到?Prefixes
?選項卡,點擊?Default
?按鈕。
根據(jù)?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).
經(jīng)過一段時間的測試,將?Preferred Lifetime
?設置為?1
?小時,將?Valid Lifetime
?設置為?2
?小時較為可靠。


這里可以看到一個標記為?D
?的 Prefix?fc00::/64
?,表示該條目為動態(tài)自動生成的。
3.2.配置ND通告
在?Neighbor Discovery
?對話框中切換到?Interfaces
?選項卡。
鼠標?單擊?Interface
?為?all
?的條目,并將其“禁用”:

點擊“添加”按鈕:


如果內(nèi)網(wǎng)環(huán)境中沒有自建 DNS 服務器,則可以將?DNS Servers
?參數(shù)設置為?fc00::1
?,與?bridge1
?的 ULA IPv6 地址相同。
注意:
如果內(nèi)網(wǎng)中有自建 DNS 服務器,則需要將?DNS Servers
?參數(shù)設置為內(nèi)網(wǎng) DNS 服務器的 IPv6 地址。
假設內(nèi)網(wǎng) DNS 服務器分別為?fc00::2
?、?fc00::3
?,則 ND 配置如下:

ND
?配置完成后,如圖所示:

4.配置系統(tǒng)DNS
啟用 IPv6 后,需要給 RouterOS 指定上游 IPv6 的 DNS 服務器地址。
點擊 Winbox 左側(cè)導航?IP
?菜單的子菜單?DNS
?,并修改參數(shù):

在?Servers
?處增加國內(nèi)知名的 DNS 服務提供商的 IPv6 地址。
騰訊云 DNSPod 的 IPv6 地址為:2402:4e00::
?和?2402:4e00:1::
?。
阿里云 AliDNS 的 IPv6 地址為:2400:3200::1
?和?2400:3200:baba::1
?。
注意:
如果內(nèi)網(wǎng)中有自建 DNS 服務器,則需要將?Servers
?參數(shù)設置為內(nèi)網(wǎng) DNS 服務器的 IPv6 地址。
假設內(nèi)網(wǎng) DNS 服務器分別為?fc00::2
?、?fc00::3
?,則 DNS 配置如下:

5.配置IPv6防火墻
與之前文章《2.配置防火墻和流量整形》中類似,IPv6 的防火墻的配置同樣涉及?address-list
?、filter
?、nat
?、mangle
?、raw
?等內(nèi)容。
依然建議復制防火墻配置命令,一次性全部粘貼到終端工具中進行 “一鍵配置” 。
需要注意的是,防火墻配置命令中的部分 IPv6 地址,需要根據(jù)實際情況進行調(diào)整。
例如,若內(nèi)網(wǎng)自建 DNS 的 IPv6 地址為?fc00::2
?、?fc00::3
?,則需要修改?address-list
?表中的?local_dns_ipv6
?參數(shù)。
若需使用 NAT66 的方式來訪問外部 IPv6 網(wǎng)絡,請在?nat
?表中啟用第一條防火墻規(guī)則。
由于防火墻的配置命令很長,我放在本篇教程的結尾處,以便復制。?
IPv6 防火墻配置完成后,回到 Winbox,點擊左側(cè)導航?IPv6
?菜單的子菜單?Firewall
?并查看防火墻各個選項卡中內(nèi)容:

確認防火墻條目與命令中的條目一致后,便可啟用 IPv6 的?DHCPv6 Client
?,建議重啟一次 RouterOS。
重啟內(nèi)網(wǎng)設備的網(wǎng)卡,檢查是否獲取了 ULA 地址:

Windows11 IPv6 連接處會顯示 “Internet” ,表示此時 Windows 是可以訪問 IPv6 網(wǎng)絡的。
可以通過這個網(wǎng)站來進行測試?IPv6 Test?,至此,RouterOS 的 IPv6 配置已經(jīng)完成。
IPv6 Test 地址:https://master.test-ipv6.com
6.命令行配置RouterOS
經(jīng)過這段時間對 RouterOS 各類基礎配置的整理,發(fā)現(xiàn)即使是熟練使用 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 的絕大部分內(nèi)容,剩下的配置項在該文件中也有說明,希望能夠減少大家初始化配置 RouterOS 的時間 :) 。

IPv6 防火墻設置代碼,注意替換命令中的部分 IPv6?地址參數(shù),將以下命令一次性全部粘貼到終端工具中即可:
如果該段代碼不好復制,請查閱我 Gitee 上的同步更新倉庫。