RouterOS 自动 DNS 故障转移脚本:保证网络稳定性
在 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 服务器地址是可靠的,并能够提供稳定的解析服务。
- 定期检查脚本运行情况,并根据需要进行调整。
原文地址: https://www.cveoy.top/t/topic/bz49 著作权归作者所有。请勿转载和采集!