arp-scan最快扫描同网段在线主机,需sudo权限、指定网卡和网段(如sudo arp-scan 192.168.1.0/24),并加--no-dns和--quiet提升效率;云服务器可能禁用ARP导致失效。

arp-scan 怎么扫出同网段所有在线主机
直接用 arp-scan 最快,它绕过 TCP/IP 协议栈,发的是底层 ARP 请求,响应快、不依赖目标是否开放 ICMP 或防火墙设置。
常见错误是没指定网卡或子网,结果扫到空列表或者报错 arp-scan: interface eth0 is not up —— 先用 ip -br a 确认哪个接口在用、IP 是多少。
- 扫当前网卡默认网段:
sudo arp-scan --local - 明确指定网段(比如内网是 192.168.1.0/24):
sudo arp-scan 192.168.1.0/24 - 跳过 DNS 反查(避免卡顿):
sudo arp-scan --no-dns 192.168.1.0/24 - 只显示 IP 和 MAC,去掉其他干扰:
sudo arp-scan --quiet --no-dns 192.168.1.0/24 | grep ":"
注意:普通用户不能发原始包,必须加 sudo;有些云服务器(如 AWS EC2)禁用 ARP 广播,这时候 arp-scan 会完全失效。
nmap -sn 扫不到主机?检查这几个点
nmap -sn 是“ping 扫描”,靠 ICMP echo、TCP SYN、ACK 多种方式探测,但容易被目标端策略拦住。扫不到≠没开机,很可能是响应被过滤了。
典型现象:本地能 ping 通某台机器,nmap -sn 却不显示它;或者扫出来一堆 Host is up (0.0023s latency) 但没列 IP —— 这通常是输出被截断或用了静默模式。
- 强制用 ICMP 探测(避开 TCP 检查):
nmap -sn -PE 192.168.1.0/24 - 加
-n关闭 DNS 解析,提速且避免超时卡住:nmap -sn -n 192.168.1.0/24 - 如果目标禁 ICMP,换 TCP SYN 到常见端口:
nmap -sn -PS22,80,443 192.168.1.0/24 - 别漏掉
--min-rate 100加速扫描(尤其大网段),但别设太高,否则丢包率上升
性能影响明显:/24 网段用默认参数可能要 3–5 分钟;加 -n -PE --min-rate 100 后通常压到 20 秒内。不过局域网里 arp-scan 仍比 nmap -sn 更准、更快。
为什么 ping 通了但 arp -a 没记录
arp -a 显示的是本机 ARP 缓存里“最近通信过”的条目,不是实时全网拓扑。它只保存成功交互过的 IP-MAC 映射,而且有老化时间(Linux 默认 5 分钟未更新就删)。
所以你 ping 192.168.1.100 成功后立刻 arp -a 不一定看到它——中间可能被清掉了,或者 ping 走的是路由转发而非直连 ARP。
- 手动触发 ARP 查询:
arping -c 1 192.168.1.100(会强制更新缓存) - 查全部缓存(含未解析的 IP):
cat /proc/net/arp - 清空再重试(排除旧缓存干扰):
sudo ip neigh flush all - 确认接口是否启用 ARP:
cat /proc/sys/net/ipv4/conf/eth0/arp_ignore,值为 1 或 2 会抑制响应
这个机制常被忽略:很多人以为 arp -a 是“发现工具”,其实它只是缓存查看器。真要枚举邻居,得靠主动扫描,不是被动等缓存凑巧有。
macOS 或 Windows 主机扫不出来?试试 NBNS/LLMNR
Linux 默认不响应 NetBIOS 名称服务(NBNS)和链路本地多播名称解析(LLMNR),而 Windows/macOS 在局域网里常靠这两个做主机名发现。所以纯 Linux 工具扫不到它们的主机名,甚至 IP 都可能漏掉——尤其当它们禁 ping、关防火墙 ICMP 规则时。
解决思路不是硬扫,而是监听广播流量,或查已知服务痕迹:
- 用
nbtscan查 Windows 主机:nbtscan -r 192.168.1.0/24(需先apt install nbtscan) - 抓 LLMNR 请求(Windows 10+ 默认开启):
sudo tcpdump -i eth0 port 5355 -n -A,看到 UDP 包里有主机名就说明它在线 - 查 mDNS 设备(macOS/iOS/打印机等):
avahi-browse -at(需安装 avahi-utils) - 注意:这些协议都基于 UDP 广播,跨 VLAN 或路由器基本无效,只适用于物理同网段
真正麻烦的是混合环境:既有 Linux 服务器、又有 macOS 笔记本、还有 Windows 虚拟机。这时候单一工具必然漏,得组合用 arp-scan + nbtscan + avahi-browse,再人工比对 IP 段。没人会把这事做成全自动,因为邻居发现本身就没标准协议。








