You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何获取网络中指向不同DNS服务器的工作站列表?

查找网络中使用非指定DNS服务器的工作站方法

Windows环境命令行方案

  • 域内批量查询:用PowerShell结合AD模块和WMI,遍历域内所有计算机并检查DNS配置,脚本示例:
Get-ADComputer -Filter * | ForEach-Object {
    try {
        $dnsServers = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName $_.Name -Filter "IPEnabled='True'" | Select-Object -ExpandProperty DNSServerSearchOrder
        # 替换为你的标准DNS地址
        $standardDns = @("10.0.0.5", "10.0.0.6")
        $nonStandard = $dnsServers | Where-Object { $_ -notin $standardDns }
        if ($nonStandard) {
            Write-Output "$($_.Name) 使用非标准DNS: $($nonStandard -join ', ')"
        }
    } catch {
        Write-Warning "无法访问 $($_.Name): $_"
    }
}

执行前需确保已安装AD模块,且账号拥有域工作站的WMI访问权限。

  • 单台主机验证:在目标机器上直接执行命令查看当前DNS配置:
ipconfig /all | findstr /i "dns servers"

Linux/Unix环境命令行方案

  • 批量SSH查询:编写Shell脚本批量登录主机,检查/etc/resolv.conf中的DNS配置:
#!/bin/bash
# 存放目标主机列表的文件,每行一个主机名/IP
HOST_LIST="target_hosts.txt"
# 替换为你的标准DNS地址
STANDARD_DNS=("192.168.2.10" "192.168.2.11")

while read host; do
    # 远程获取DNS服务器列表
    remote_dns=$(ssh -q $host "grep 'nameserver' /etc/resolv.conf | awk '{print \$2}'")
    # 检查是否包含标准DNS
    has_standard=0
    for dns in $remote_dns; do
        if [[ " ${STANDARD_DNS[@]} " =~ " $dns " ]]; then
            has_standard=1
            break
        fi
    done
    if [ $has_standard -eq 0 ]; then
        echo "$host 使用非标准DNS: $remote_dns"
    fi
done < $HOST_LIST

需提前配置SSH免密登录,避免每次输入密码。

专用工具方案

  • SolarWinds IPAM:可扫描整个网络的设备配置,自动识别使用非指定DNS的工作站,支持生成并导出详细报表。
  • Lansweeper:通过网络资产扫描收集所有设备的DNS配置信息,可自定义筛选规则快速定位不合规主机。
  • Nmap:使用内置脚本扫描网段内设备的DNS服务器信息:
nmap -sn --script dns-server-discover 192.168.1.0/24

扫描完成后,可从结果中筛选出与标准DNS不符的主机。

内容的提问来源于stack exchange,提问作者JDeLeon

火山引擎 最新活动