如何在 MikroTik 路由器上使用 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,或者 router 阻止下载,或希望调度器使用您自定义的名称,请使用方法 2。


方法 1 — 自动脚本 方法 2 — 手动调度器
您的工作环境 终端(WinBox 或 SSH) WinBox / WebFig 中的 System > Scheduler
您粘贴的内容 一行命令 三个字段加一个命令
它创建的调度器名称 FastDDNS.net(固定) 无论你输入什么——面板都会建议 fastddns
更新间隔 120 秒 00:02:00
首次更新 安装后立即运行一次 时间限制
时间限制 下载链接在面板生成后 1 小时过期

在开始之前

有四件事,其中两件会决定远程访问是否能正常工作。

  • 一个 FastDDNS hostname。FastDDNS 免费创建一个,然后打开该主机名并滚动到 DDNS Configuration Parameters > MikroTik Routers
  • 通过 WinBoxWebFig 或 SSH 对 RouterOS 的管理员访问权限
  • WAN 接口上的真实公网 IP。 如果你的 ISP 将你置于运营商级 NAT 之后,DDNS 无法帮忙——hostname 会指向一个外部无法访问的地址。在你花时间配置 router 之前,先在FastDDNS移动应用中运行 CGNAT Checker,然后再在 router 上花时间。
  • 为你想访问的任何服务设置端口转发。 DDNS 只会让 hostname 指向正确的地址。你仍然需要在 router 上设置相应的防火墙和 NAT 规则,之后可以用端口检查

要查看 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-hans/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 页面,然后再次复制该行。

下面的演示是较早录制的。面板后来已经重新设计,因此不会与上面的截图完全一致——步骤和命令本身没有变化。