在 RouterOS 中,可以使用以下脚本来实现自动 DNS 故障转移,确保网络稳定性:

:if ([ping 8.8.8.8 count=1] = 0) do={
  :local currentDNS [/ip dns get [find] servers]
  :local dnsList '223.5.5.5,119.29.29.29,223.6.6.6'
  
  :if ($currentDNS != $dnsList) do={
    /ip dns set servers=$dnsList
    /ip dns cache flush
  }
} else={
  :local currentDNS [/ip dns get [find] servers]
  :local dns '10.0.0.1'
  
  :if ($currentDNS != $dns) do={
    /ip dns set servers=$dns
    /ip dns cache flush
  }
}

此脚本首先通过 ping 命令检查是否可以访问 8.8.8.8。如果能够访问,则检查当前 DNS 服务器是否为 10.0.0.1。如果不是,则设置为 10.0.0.1 并清空 DNS 缓存。

如果无法访问 8.8.8.8,则检查当前 DNS 服务器是否为 223.5.5.5、119.29.29.29 和 223.6.6.6 中的一个。如果不是,则设置为这些 DNS 服务器并清空 DNS 缓存。

请注意,你需要将这个脚本添加到 RouterOS 的计划任务中,以便在特定时间间隔内运行。你可以使用以下命令将脚本添加为计划任务:

/system scheduler add interval=1d name="Check DNS" on-event=scriptname

其中,interval 参数用于指定脚本运行的时间间隔,这里设置为 1 天。name 参数用于指定计划任务的名称,你可以根据需要进行更改。on-event 参数用于指定要运行的脚本的名称,你需要将 scriptname 替换为实际的脚本名称。

脚本说明:

  • [ping 8.8.8.8 count=1]:执行一次 ping 命令,测试能否访问 8.8.8.8,如果成功返回 0,否则返回非零值。
  • :local currentDNS [/ip dns get [find] servers]:获取当前的 DNS 服务器地址,并存储到 currentDNS 变量中。
  • :if ($currentDNS != $dnsList) do={ ... }:比较当前 DNS 服务器地址与目标 DNS 服务器地址列表,如果不一致则执行里面的代码。
  • /ip dns set servers=$dnsList:设置新的 DNS 服务器地址。
  • /ip dns cache flush:清空 DNS 缓存。

注意:

  • 该脚本仅供参考,请根据实际情况修改参数和代码。
  • 确保脚本中使用的 DNS 服务器地址是可靠的,并能够提供稳定的解析服务。
  • 定期检查脚本运行情况,并根据需要进行调整。
RouterOS 自动 DNS 故障转移脚本:保证网络稳定性

原文地址: https://www.cveoy.top/t/topic/bz49 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录