Recursive Routing 「遞迴路由」
為什麼需要「遞迴路由」?
在設定雙 WAN 備援時,如果只在預設路由上設定 check-gateway=ping
並指向 ISP 的閘道器 (例如數據機 IP),
路由器只會檢查「自己到數據機」這一段連線是否正常。
一旦發生「數據機沒壞,但 ISP 機房端光纖斷裂」的情況,
路由器仍會誤判主線路正常,導致斷線。
MikroTik 官方採用 Recursive Routing (遞迴路由) 解決這個盲點:
1. 指定外部監控目標: 挑選穩定且可以 Ping 主機 (例如 8.8.8.8 與 8.8.4.4),
強制指定它們分別透過 ISP1 與 ISP2 的實體閘道器連線。
2. 將預設路由指向監控目標: 把預設路由 (0.0.0.0/0) 的 gateway 設為 8.8.8.8 而非 ISP 閘道器,
路由器會自動「遞迴查找」前往 8.8.8.8 的真實下一跳 (即 ISP1 閘道器)
3. 透過 scope 與 target-scope 控制查找範圍
scope: 代表該條路由本身的「距離層級」
target-scope: 代表這條路由允許去查找 scope 值小於或等於此數值的其他路由作為下一跳。
在 RouterOS v7 中,遞迴路由的 target-scope 必須嚴格大於或等於底層主機路由的 scope
(官方範例將底層監控路由設為 scope=10,預設路由設為 target-scope=11)
| 參數項目 | 主要線路(ISP1) | 備援線路(ISP2) | 說明 |
| 外網介面(Interface) | ether1 | ether2 | 連接兩家 ISP 的實體或邏輯埠 |
| ISP 閘道器(Gateway) | 10.111.0.1 | 10.112.0.1 | ISP 配發的上游閘道器 IP |
| 路由優先權(Distance) | 1(優先使用) | 2(備援待命) | 數值越小優先權越高 |
| 第一組監控主機(Google DNS) | 8.8.8.8 | 8.8.4.4 | 用於基礎連通性偵測 |
| 第二組監控主機(OpenDNS) | 208.67.222.222 | 208.67.220.220 | 用於雙主機防誤判(進階設定) |
NAT rule
/ip/firewall/nat
add chain=srcnat action=masquerade out-interface=ether1
add chain=srcnat action=masquerade out-interface=ether2
指定外部監控目標
/ip/route/
add dst-address=8.8.8.8 scope=10 gateway=10.111.0.1
add dst-address=8.8.4.4 scope=10 gateway=10.112.0.1
將預設路由指向監控目標
/ip/route/
add distance=1 gateway=8.8.8.8 target-scope=11 check-gateway=ping
add distance=2 gateway=8.8.4.4 target-scope=11 check-gateway=ping
進階強化: 加入第二組監控主機防止單一目標誤判
/ip/route
add dst-address=208.67.222.222 gateway=10.111.0.1 scope=10
add dst-address=208.67.220.220 gateway=10.112.0.1 scope=10
add distance=1 gateway=208.67.222.222 target-scope=11 check-gateway=ping
add distance=2 gateway=208.67.220.220 target-scope=11 check-gateway=ping
注意事項:
監控目標要避開內網設備可能的連線目標
官方的設定範例,8.8.8.8 與 208.67.222.222 已經被靜態路由強制綁定在 ISP1,
當 ISP1 斷線,切換至 ISP2 時,內網設備將暫時無法連上 8.8.8.8 與 208.67.222.222
所以內網設備 DNS 就不能指定 8.8.8.8 及 208.67.222.222

沒有留言:
張貼留言