nmap扫描所有端口
直接敲下这条命令:nmap -p- 192.168.1.1。扫描回车之后,端口nmap 会从 1 号端口一直扫到 65535 号,扫描一个不落。端口这就是扫描"扫描所有端口"最直白的做法。很多人第一次跑这条命令,端口盯着屏幕滚动的扫描进度百分比,心里犯嘀咕——怎么这么慢?端口
慢是正常的。默认情况下 nmap 对每个端口只做一次 SYN 探测,扫描但 65535 个端口挨个来一遍,端口加上网络延迟和重传,扫描扫一台内网机器大概要几分钟到十几分钟。端口公网 IP 更久,扫描中途还可能被防火墙拉黑。端口我试过扫一台境外 VPS,扫描跑了将近四十分钟才出结果。所以别指望它像 -F(快速扫描,只扫 top 100)那样几秒完事。
为什么需要扫全端口?因为常用的那 1000 个端口之外,藏着不少东西。开发人员图省事,把测试服务挂在 8080、8443 上,这些还在 top 1000 范围内。但有人偏偏用 31337、54321 这类端口跑后门或者调试接口。只扫默认端口,等于只看了前门。去年我帮朋友排查一台被入侵的服务器,默认扫描干干净净,-p- 一开,发现 49152 端口上挂了个反向 shell。那个端口落在动态端口区间里,常规扫描根本碰不到。
命令本身很简单,几个参数值得说清楚。-p- 等价于 -p 1-65535,写全了更直观。-sS 是 SYN 半开扫描,速度快、隐蔽性好,但需要 root 权限;没有 root 就用 -sT,走完整的 TCP 三次握手,慢一些,日志里也会留下记录。-T4 可以加速,-T5 更快但容易丢包,内网用 T4 比较稳。加 -n 跳过 DNS 解析,又能省不少时间。
实际用的时候,我习惯这么组合:
nmap -p- -sS -T4 -n --min-rate 2000 -oA fullscan 10.0.0.1 --min-rate 2000 强制每秒至少发 2000 个包,适合内网。公网别这么干,容易被流量清洗设备盯上。-oA 把结果同时存成三种格式,方便后续用 grep 或者导入数据库。扫完之后 grep open fullscan.gnmap 一眼就能看到所有开放端口。
还有个坑:UDP 端口。TCP 全端口扫完不代表完事,UDP 服务(DNS 53、SNMP 161、NTP 123)同样暴露信息。但 UDP 扫描极慢,-sU 扫 65535 个端口,没几个小时下不来。通常只针对常见 UDP 端口单独扫,比如 nmap -sU -p 53,123,161 10.0.0.1。全量 UDP 扫描在生产环境里基本不现实。
防火墙和 IDS 会让全端口扫描变成一场猫鼠游戏。有些设备检测到连续端口探测直接丢包,nmap 显示 "filtered",你根本不知道端口是关着还是被挡了。加 --reason 能看到判断依据。遇到这种情况,换 -Pn 跳过主机发现,或者用 -f 分片、--data-length 填充随机数据,能绕过一部分浅层检测。但别抱太大期望,对抗专业 IDS 是另一回事。
扫自己负责的网络,全端口扫描是常规操作。扫别人的,先确认授权。这不是技术问题,是底线问题。









