如何扫描局域网中的所有.local地址?
如何扫描局域网中的所有.local地址?
嘿,这个问题问得挺实用的!.local地址是依赖mDNS(多播DNS)协议来广播和解析的,也就是我们常说的Bonjour(苹果)或者Avahi(开源)那套机制,所以扫描这类设备得针对性地用支持mDNS的工具,下面给你几个靠谱的方法:
Linux/macOS 用Avahi命令行工具
大多数Linux发行版和macOS都预装了Avahi相关工具,直接在终端里敲:avahi-browse -a这个命令会列出局域网里所有通过mDNS广播的服务,包括对应的
.local主机名、IP地址、设备类型等信息。如果只想过滤出主机名和地址,可以加个管道过滤:avahi-browse -a -t | grep -E 'hostname|address'macOS 用自带的dns-sd工具
macOS自带了Bonjour的命令行工具dns-sd,你可以用它来扫描整个.local域的服务:dns-sd -B _services._dns-sd._udp local.要是只想查所有
.local对应的IPv4地址,用这个命令:dns-sd -G v4 local.注意这个命令会持续收集信息,等个十几秒再看结果会更全。
Windows系统的方案
Windows本身默认可能没开启mDNS支持,你可以先装Bonjour服务(比如装iTunes的时候会顺带装上,或者单独下载Bonjour组件)。之后:- 用PowerShell命令尝试解析:
Resolve-DnsName -Name *.local -Type A - 也可以用专门的mDNS扫描工具(比如Bonjour Browser这类轻量工具),或者像Advanced IP Scanner这类局域网扫描工具,很多也支持检测mDNS设备并显示
.local地址。
- 用PowerShell命令尝试解析:
用nmap扫描(跨平台)
如果你已经装了nmap,也可以用它的mDNS探测脚本:nmap -sn --script mdns-discover 192.168.1.0/24记得把
192.168.1.0/24换成你自己的局域网网段,这个命令会扫描网段内的设备,同时探测mDNS服务并提取.local主机名。
小提示:有些设备可能只有在有服务请求的时候才会广播mDNS信息,所以扫描的时候可以多等一会儿,或者手动访问一下可能的设备,确保能抓到所有结果。
备注:内容来源于stack exchange,提问作者taltamir




