smx_jinxin 发表于 前天 17:39

请大师帮忙修改 错误的 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全网比对】完成, 所有记录均为最新状态
    }
"

47771885 发表于 前天 19:40

/tool dns lookup server应该用 [:resolve server=8.8.8.8 domain-name=routeros.cn] 吧
页: [1]
查看完整版本: 请大师帮忙修改 错误的 DNS静态IP地址比对与自动更新 脚本