nc 批量扫描是什么
nc(netcat)的 -z 参数只做连接尝试不发送数据,配合 shell 循环就能在目标主机上逐个试探端口是否开放。它适合没有 nmap 或不允许安装工具的受限环境,用来做小范围端口巡检。代价是速度慢、无并发控制,扫描范围一大就非常耗时,而且对目标而言与端口扫描无异,必须限定在授权范围内使用。
基本信息
| 适用平台 | Linux/macOS 的 nc(netcat 与 ncat 实现存在差异) |
|---|---|
| 关键参数 | -z 只探测不传数据、-w 超时秒数、-v 显示结果 |
| 替代工具 | nmap -Pn -p 范围,具备并发与更准确的状态判定 |
| 前置要求 | 必须有明确授权,仅扫描自有或书面许可的目标 |
典型使用场景
- 交付前端口巡检:确认应开放的端口都开着、不该开的都关着
- 换机或迁移后核对:逐项验证业务端口是否已监听
- 排障辅助确认:服务明明在跑但客户端连不上,先确认端口是否真的可连
- 防火墙规则验证:改动前后各扫一轮,确认放行与封禁符合预期
- 受限环境应急:目标机不允许安装扫描工具时的最小手段
批量扫描
批量扫描
# 常见端口巡检
for p in 21 22 23 25 53 80 110 143 443 445 3306 3389 6379 8080; do
nc -z -w1 10.0.0.5 $p 2>/dev/null && echo "$p open"
done
# 整段端口区间(很慢,慎用)
for p in $(seq 1 1024); do nc -z -w1 10.0.0.5 $p 2>/dev/null && echo "$p open"; done
# 有条件时改用 nmap,速度和准确性都更好
nmap -Pn -p 1-1024 10.0.0.5结果判读
| 结果 | 含义 | 注意事项 |
|---|---|---|
| 连接成功 | 端口开放且可达 | 仅说明 TCP 可握手,不代表服务功能正常 |
| Connection refused | 主机可达但端口未监听 | 服务未启动或监听在别的地址 |
| 超时无响应 | 被防火墙丢弃或主机不在线 | 与被拒绝要区分开 |
| 整段全通 | 可疑,可能是代答或蜜罐 | 需人工复核,避免误判 |
nc 的实现差异较大:传统 netcat 用 nc -l 监听,ncat 与部分 BSD 版本用 -l 加额外参数;扫描侧的 -z -w 在各实现中基本一致,但过滤与输出格式可能不同。
对他方网段做端口扫描需要书面授权:未授权扫描在多数地区属于违规甚至违法行为,也必然触发对方 IDS/IPS 告警与封禁。