请大师帮忙修改 错误的 DNS静态IP地址比对与自动更新 脚本
本帖最后由 smx_jinxin 于 2025-9-11 17:47 编辑# ========================
# 模块 3: DNS静态IP地址比对与自动更新
# ========================
/system script add name=Check_DNS_Consistency source="
:log info 【DNS全网比对】任务开始执行
# 检测网络连通性(任意一条PPPoE线路连通即可)
:local testIP 223.5.5.5
:local interfaces {PPPOE-ADSL-1;PPPOE-ADSL-2;PPPOE-ADSL-3;PPPOE-ADSL-4}
:local isConnected false
:foreach i in=$interfaces do={
:local pingResult
:if ([:len $pingResult] > 0) do={
:local received ($pingResult->received)
:local packetLoss ($pingResult->packet-loss)
:if (($received >= 1) || ($packetLoss == 0)) do={
:set isConnected true
:log info (网络检测: $i 线路连通正常)
}
}
}
:if ($isConnected == false) do={
:log warning 【DNS全网比对】所有线路均未连通,任务终止
:return
}
# 获取所有需要比对的域名列表
:local domainList
:local updatedCount 0
:foreach recordID in=$domainList do={
:local domainName
:local currentIP
# 使用多个DNS服务器进行全网解析
:local resolvedIPs {}
:local dnsServers {
# 国际DNS服务器
1.1.1.1 # Cloudflare
8.8.8.8 # Google
9.9.9.9 # Quad9
208.67.222.222 # OpenDNS
208.67.220.220 # OpenDNS
64.6.64.6 # Verisign
84.200.69.80 # DNS.Watch
185.228.168.9# CleanBrowsing
199.85.126.10# Norton ConnectSafe
80.80.80.80 # Freenom World
156.154.70.1 # Neustar
# 国内DNS服务器
223.5.5.5 # AliDNS
223.6.6.6 # AliDNS
119.29.29.29 # DNSPod
182.254.116.116 # DNSPod
180.76.76.76 # BaiduDNS
114.114.114.114 # 114DNS
114.114.115.115 # 114DNS
101.226.4.6 # 360安全DNS
218.30.118.6 # 360安全DNS
1.2.4.8 # CNNIC SDNS
210.2.4.8 # CNNIC SDNS
117.50.10.10 # OneDNS
117.50.11.11 # OneDNS
123.125.81.6 # Baidu Public DNS
119.28.28.28 # DNSPod Public DNS+
}
# 收集所有解析结果
:foreach server in=$dnsServers do={
:local result
:if ([:len $result] > 0) do={
:local ip [:pick $result 0]
:if ([:typeof $ip] = ip) do={
:set resolvedIPs ($resolvedIPs, $ip)
}
}
}
# 找出最常见的IP
:local mostCommonIP
:local maxCount 0
:local ipCount [:toarray ] # 创建一个字典(数组)
:foreach ip in=$resolvedIPs do={
:if ([:len $ip] > 0) do={
:if ([:typeof ($ipCount->$ip)] = nothing) do={
:set ($ipCount->$ip) 1
} else={
:set ($ipCount->$ip) ($ipCount->$ip + 1)
}
:if ($ipCount->$ip > $maxCount) do={
:set mostCommonIP $ip
:set maxCount ($ipCount->$ip)
}
}
}
# 更新记录(如果找到一致结果且与当前不同)
:if ([:len $mostCommonIP] > 0 && $mostCommonIP != $currentIP) do={
/ip dns static set $recordID address=$mostCommonIP
:log info (域名 $domainName IP更新: $currentIP -> $mostCommonIP (一致性: $maxCount/[:len $dnsServers]))
:set updatedCount ($updatedCount + 1)
}
}
:if ($updatedCount > 0) do={
/ip dns cache flush
:log info 【DNS全网比对】完成, $updatedCount 条记录已更新
} else={
:log info 【DNS全网比对】完成, 所有记录均为最新状态
}
"
/tool dns lookup server应该用 [:resolve server=8.8.8.8 domain-name=routeros.cn] 吧
页:
[1]