如何在 MikroTik router 上使用 FastDDNS 設定動態 DNS (DDNS)

FastDDNS 提供兩種 RouterOS 設定以完成相同工作:一個單行腳本可以為你建立排程器,另一種是手動輸入 System > Scheduler。這份指南涵蓋兩種方法、各自實際在路由器上建立的內容,以及如何確認主機名稱是否真正在更新。

Minh NguyenMinh NguyenFastDDNS 創辦人兼開發者

在 MikroTik router 上設定 DDNS 的兩種方法

FastDDNS 為每個 hostname 提供兩種現成的 RouterOS 設定。方法 1 是一行指令,你將它貼到終端機中:它會下載專為你的 hostname 建立的腳本,然後為你建立一個 /system script腳本/system scheduler 和一個 方法 2 是在 System > Scheduler排程器項目。兩者每兩分鐘呼叫一次 FastDDNS 更新 URL。

除非有特殊原因,否則使用方法 1。如果你偏好 WinBox 而不是終端機,或者你的路由器阻止下載,或是你想使用自選名稱的排程器,則使用方法 2。


方法 1 — 自動腳本 方法 2 — 手動排程器
操作位置 終端機 (WinBox 或 SSH) System > Scheduler 位於 WinBox / WebFig
要貼上的內容 一行指令 三個欄位加上一個指令
建立的排程器名稱 FastDDNS.net (固定) 你輸入的任何內容 — 面板會建議 fastddns
更新間隔 120 秒 00:02:00
第一次更新 安裝後立即執行一次 第一次間隔後執行
時間限制 下載連結在面板生成後 1 小時內過期

開始之前

四件事情,其中兩件決定遠端存取是否能正常運作。

  • 一個 FastDDNS 主機名稱。FastDDNS 免費建立一個,然後打開該主機名稱並捲動到 DDNS Configuration Parameters > MikroTik Routers
  • 透過 WinBoxWebFig 或 SSH 取得 RouterOS 的管理員存取權限。
  • WAN 介面上的真實公開 IP。 如果你的 ISP 將你置於 Carrier-Grade NAT 背後,動態 DNS 無法提供協助 — hostname 將指向外部無法連線的位址。在你花時間設定 router 之前,請先在 FastDDNS 手機應用程式中執行 CGNAT 檢查器。
  • 為你想要訪問的任何服務設置端口轉發。 DDNS 只會讓名稱指向正確的位址。你仍然需要在 router 上設定相應的防火牆和 NAT 規則,之後可以使用 Port Check進行確認。

若要查看 router 實際擁有哪些位址,請列出這些位址,並查看介面是 WAN 連線的那一列 — 也就是承載預設路由的介面:

/ip address print
/ip route print where dst-address=0.0.0.0/0

如果該 WAN 位址落在 10.0.0.0/8172.16.0.0/12192.168.0.0/16100.64.0.0/10,則 router 沒有公開 IP,而是上游的某個裝置正在執行 NAT。尤其是 100.64.0.0/10 範圍,是為電信級 NAT 保留的。


方法 1 — 單行自動安裝指令碼

步驟 1 — 從您的主機名稱面板複製該行

打開您的主機名稱並滾動到頁面底部的 DDNS Configuration Parameters 區段。每個支援的裝置系列在那裡都有一個面板;你需要的是 MikroTik Routers

FastDDNS 主機名稱頁面的 DDNS 配置參數區,右下角是 MikroTik 路由器面板
步驟 1 — 主機名稱頁面底部的面板列表

打開它並複製 方法 1 下方的方框。這是一整行文字,結尾是一個屬於您帳戶的 token:

方法 1 在 MikroTik 路由器面板中的方框,顯示單行安裝命令,下載令牌已被遮蔽
此截圖中的 token 已經遮蔽;在您的面板中,它已經填妥
:do { /tool fetch check-certificate=no url="https://fastddns.net/zh-hant/member/download/YOUR-DOWNLOAD-TOKEN" dst-path=fastddns.txt; import fastddns.txt} on-error={ [:terminal style error]; :put "ERROR"; }

從面板複製真實的命令行,而不是重新輸入這行——令牌是用來識別你的主機名的。

步驟 2 — 將它貼到終端機

WinBox 中開啟 New Terminal,或透過 SSH 連線,然後貼上這一行並按下 Enter。/tool fetch 會將個人化腳本下載到路由器的 Files 清單中,命名為 fastddns.txt,然後由 import 執行。

關於 check-certificate=no:它會指示 fetch 跳過 TLS 憑證的信任鏈驗證。RouterOS 對此設定的預設值已是 no,面板會明確列出這項設定,因此即使 router 的憑證存放區是空的,或時鐘尚未同步,下載仍可正常運作。如果您希望驗證憑證,請將其切換為 check-certificate=yes——只有在 router 已匯入 CA 存放區且時鐘正確時才會成功。請注意這項切換的作用範圍:它只適用於這次一次性的下載。router 之後安裝的腳本,對每次定期更新都有自己的 check-certificate=no,方法 2 的命令也是如此。

步驟 3 — 腳本會建立什麼

匯入的檔案並不是黑盒子。它會列印您的 hostname、使用者名稱和金鑰,然後執行四項操作:

  • 移除任何現有且名為 FastDDNS.net 的腳本和排程器,因此重新執行時不會留下重複項目;
  • 新增一個名為 FastDDNS.net/system script,其中包含更新命令;
  • 新增一個名為 FastDDNS.net/system scheduler,包含 interval=120sstart-time=startup
  • 立即執行該腳本一次,而不是等到第一次排程執行。

在終端機中,完成安裝後會顯示如下:

ADD new Script: Complete.
ADD new Scheduler: Complete.
Complete add FastDDNS.

請正確理解這三行的意思:腳本和排程器現在已經存在。它們不能證明 hostname 已更新——安裝程式會列印 Complete add FastDDNS.。請使用下面的檢查來確認更新本身。

步驟 4 — 下載連結在一小時後過期

該行中的 token 是在面板頁面載入時產生的,並在 3600 秒後失效。貼上較舊的副本時,router 會列印 ERROR,因為伺服器回傳的是 410 # Download token expired.,而不是腳本。解決方法很簡單:重新載入 hostname 頁面,再次複製該行。

下面的操作示範是較早的錄製。面板之後已重新設計,因此畫面不會與上方的截圖一致;但步驟和命令本身沒有改變。