Nmap扫描时怎么排除特定端口不被检测?

端木雯雯 阅读 27

我用 Nmap 扫描本地开发环境,但总把 3000 和 8080 端口也扫进去,其实这些是前端 dev server,不想被当成漏洞。试过 nmap -p- --exclude-ports 3000,8080 localhost,但报错说参数不对,到底该怎么写?

查了文档好像没有 --exclude-ports 这个选项,是不是得用别的方法?比如只指定要扫的端口范围?

我来解答 赞 8 收藏
二维码
手机扫码查看
1 条解答
Prog.伊芃
你查得没错,Nmap 确实没有 --exclude-ports 这个参数,文档里压根没这玩意,我之前也踩过这个坑,以为和 --excludefile 一样能排除端口,结果白折腾半天。

正确做法其实就两种,看你怎么想省事:

第一种,最简单直接——别扫所有端口了,直接指定你要扫的端口范围,比如你想扫 1 到 10000 但排除 3000 和 8080,那就写成:
nmap -p 1-2999,3001-8079,8081-10000 localhost
虽然写起来有点啰嗦,但胜在清晰、稳,Nmap 也认,不会报错。

第二种,如果你端口特别多,或者要动态排除,可以用 -p- 扫全端口,然后配合 -p 的逗号分隔语法手动排除——但注意,Nmap 不支持“负排除”,只能显式列出要扫的端口。所以你不能写成 -p- --exclude 3000,必须手动拼出要扫的区间。

另外提醒一句,如果你是本地开发环境,建议直接用 127.0.0.1 而不是 localhost,避免某些系统里 localhost 解析成 IPv6 的 ::1,导致你扫的不是你以为的那个地方,要校验下端口监听的 IP 是否匹配。

对了,顺带说一句,真要上线前做安全扫描,别忘了加 -sV-sC 做服务识别,单纯扫端口开着没意义,得确认服务版本有没有已知漏洞,不过你这情况应该只是开发时顺手扫一下,知道就行。
点赞
2026-02-27 01:02