导航菜单

Nmap使用指南

陆兴东 2026-04-09 10 浏览 其他

刚接触网络安全、服务器运维或者内网排查时,很多人都会听到一个名字:Nmap。

它几乎算是网络扫描领域里最经典的工具之一。
功能不花哨,但非常实用:扫描主机、探测端口、识别服务、做基础资产盘点。

不过对新手来说,第一次看到一堆命令参数时,确实很容易发懵:

  • • -sn 是干什么的?
  • • -sV 和 -p- 有什么区别?
  • • 扫描结果里的 open、closed、filtered 又分别代表什么?

这篇文章就不走“参数大全”的路线了,而是尽量用 新手最容易理解的方式,带你把 Nmap 的基础用法快速过一遍。


? Nmap 到底是什么?

Nmap 的全称是 Network Mapper,可以理解成一个“网络探测器”。

它最常见的用途有这几个:

  • • ? 发现哪些主机在线
  • • ? 检查开放了哪些端口
  • • ? 识别端口上跑着什么服务
  • • ?️ 辅助判断目标主机类型
  • • ? 做简单的网络资产盘点

说白了,Nmap 做的事情就是:

帮你看清一台主机或一段网络,对外到底暴露了什么。

这也是为什么它既常被运维使用,也常被安全人员使用。


⚠️ 先说最重要的一件事

不要扫描没有授权的目标。

学习 Nmap 的正确姿势是:

  • • 扫自己的电脑
  • • 扫自己的服务器
  • • 扫自己的局域网
  • • 扫合法的实验环境
  • • 扫公开允许练习的测试目标

这不仅是合规问题,也是一个很重要的职业习惯。
工具本身没有问题,关键在于怎么使用它。


?️ 先安装好 Nmap

不同系统安装方式不太一样。

Windows

直接下载安装包安装即可,一般也会同时安装抓包组件。

macOS

brew install nmap

Ubuntu / Debian

sudo apt update
sudo apt install nmap

CentOS / RHEL

sudo yum install nmap

安装完成后,先确认一下版本:

nmap -V

只要能正常输出版本信息,就说明安装成功了。


? Nmap 命令其实没那么复杂

它最基本的格式就是:

nmap [选项] [目标]

比如:

nmap 192.168.1.10
nmap scanme.nmap.org
nmap 192.168.1.0/24

这里的“目标”可以是:

  • • 一个 IP
  • • 一个域名
  • • 一个网段

所以你可以把它理解成:

告诉 Nmap:我要扫谁,以及怎么扫。


? 新手最应该先学会的几个命令

很多教程一上来就讲几十个参数,但其实没必要。
刚开始只要掌握下面这几个,就已经足够实用了。


1️⃣ 扫描一台主机的常见端口

nmap 192.168.1.10

这是最基础的一条命令。

它会对目标主机做一个默认扫描,检查常见端口的开放情况。

比如你可能会看到这样的输出:

PORT    STATE    SERVICE
22/tcp  open     ssh
80/tcp  open     http
443/tcp closed   https

这表示:

  • • 22 端口开着,通常是 SSH
  • • 80 端口开着,通常是 HTTP
  • • 443 端口目前没开

对于新手来说,这条命令最适合拿来建立直觉:

一台机器到底暴露了哪些“门”。


2️⃣ 查看一个网段里哪些主机在线

nmap -sn 192.168.1.0/24

这个命令非常适合局域网排查。

它的意思是:
只看哪些主机在线,不做端口扫描。

比如你家里或办公室的局域网中,可能会扫出:

  • • 路由器
  • • 电脑
  • • 手机
  • • NAS
  • • 打印机
  • • 摄像头

这个命令特别适合下面这些场景:

  • • 想知道网段里有多少设备在线
  • • 怀疑某台机器是不是还在
  • • 做内网资产初步摸底

对于初学者来说,-sn 是非常友好的一步,因为它结果简单,容易理解。


3️⃣ 扫描指定端口

nmap -p 22,80,443 192.168.1.10

有时候你不关心全部端口,只想看某几个关键服务在不在。

比如:

  • • 22:SSH
  • • 80:HTTP
  • • 443:HTTPS
  • • 3306:MySQL
  • • 6379:Redis

这时候就可以用 -p 明确指定端口。

比如你只想确认一台 Web 服务器是不是正常提供服务,就可以这样扫:

nmap -p 80,443,8080,8443 192.168.1.10

这个方式比全扫更快,也更适合实际排查。


4️⃣ 扫描全部端口

nmap -p 1-65535
或者
nmap -p- 192.168.1.10

很多新手容易误会一件事:
直接执行 nmap 目标 并不是全端口扫描。

默认情况下,它通常只会扫一部分常见端口。
如果你想检查完整的 TCP 端口范围,就要用:

nmap -p-

它的意思是从 1 到 65535 全部扫一遍。

这条命令适合:

  • • 怀疑服务跑在非标准端口上
  • • 想做更完整的端口摸排
  • • 做正式一点的资产检查

当然,它也会更慢一些。


5️⃣ 识别服务和版本

nmap -sV 192.168.1.10

只知道端口开放,有时候还不够。
很多时候我们更关心的是:

  • • 这个端口跑的到底是什么服务?
  • • 是 Apache 还是 Nginx?
  • • 是 OpenSSH 还是别的 SSH 服务?

这时候就用 -sV。

它会进一步探测开放端口上的服务类型和版本信息。

你可能会看到这样的结果:

22/tcp open  ssh   OpenSSH
80/tcp open  http  Apache httpd
3306/tcp open mysql MySQL

这条命令特别适合做:

  • • 服务器资产盘点
  • • 服务暴露面核查
  • • 排查端口对应的具体应用

对初学者来说,这是从“看到端口”走向“理解服务”的关键一步。


6️⃣ 保存扫描结果

很多人刚开始用 Nmap,经常扫完直接看终端,然后一关窗口就没了。
其实这是个很可惜的习惯。

保存结果非常重要,因为后面你可能要:

  • • 对比前后两次扫描差异
  • • 写报告
  • • 发给同事
  • • 留档复盘

最简单的保存方式是:

nmap -oN result.txt 192.168.1.10

这样会把结果保存成普通文本文件。

如果你想一次保存成多种格式,可以这样:

nmap -oA myscan 192.168.1.10

它会生成三份文件:

  • • myscan.nmap
  • • myscan.xml
  • • myscan.gnmap

对于新手来说,先会用 -oN 就够了。
养成保存扫描结果的习惯,会很有帮助。


? 看懂结果,比会敲命令更重要

Nmap 的命令不算难,真正容易让新手困惑的,往往是扫描结果。

最常见的几个状态是这些:

open

表示端口开放,目标主机上有服务在监听。

这通常意味着:
这个端口是可以连上的。


closed

表示端口可达,但当前没有服务监听。

简单理解就是:
门是关着的,但门确实在那里。


filtered

表示 Nmap 的探测被拦住了。

常见原因包括:

  • • 防火墙
  • • ACL
  • • 安全设备过滤
  • • 网络策略限制

它不等于开放,也不等于关闭。
更准确地说,它是:

Nmap 没法确认。

这个状态是新手最容易误解的地方之一。


? 一个特别适合新手的上手流程

如果你刚开始学,可以按下面这个顺序练。

第一步:先找在线主机

nmap -sn 192.168.1.0/24

先认识你的网络里都有哪些设备。


第二步:扫单台主机常见端口

nmap 192.168.1.10

看这台设备暴露了哪些常见服务。


第三步:识别服务版本

nmap -sV 192.168.1.10

进一步了解这些端口背后到底跑着什么。


第四步:做一次全端口扫描

nmap -p- 192.168.1.10

检查是否有隐藏在非常见端口上的服务。


第五步:保存结果

nmap -sV -oN scan-result.txt 192.168.1.10

留档、复盘、对比都会方便很多。


? 几个最常见的实际例子

场景一:看看家里局域网有哪些设备在线

nmap -sn 192.168.1.0/24

这是最典型、也最适合新手练手的例子。
你会很直观地看到家里的网络里到底有多少设备在活动。


场景二:检查服务器开放了哪些服务

nmap -sV 192.168.1.100

这条命令非常适合拿来做简单的服务器检查。
比如你可以快速知道:

  • • SSH 在不在
  • • Web 在不在
  • • 数据库端口有没有暴露
  • • 应用服务是不是跑在意料之外的端口

场景三:快速确认 Web 服务端口

nmap -p 80,443,8080,8443 192.168.1.100

如果你主要关心网站相关服务,这样扫会更高效。

尤其是在排查下面这些问题时很有用:

  • • 网站为什么访问不了
  • • 服务到底跑在哪个端口
  • • 有没有备用 Web 端口暴露出来

? 新手最容易踩的几个坑

1. 以为默认就是全端口扫描

不是。

nmap 192.168.1.10

这通常只是扫描常见端口。
要完整检查所有 TCP 端口,记得用:

nmap -p-

2. 看到 filtered 就以为端口开着

这很常见,但其实不准确。

filtered 更像是在说:

“我被拦住了,判断不出来。”

它可能是防火墙,也可能是别的过滤策略,不应该直接理解成开放。


3. 一上来就扫很大范围

新手阶段不建议一开始就扫太大的网段,更不要去碰陌生公网主机。

先从下面这些目标开始更合适:

  • • 自己的电脑
  • • 自己的服务器
  • • 自己的局域网
  • • 实验环境

这样既安全,也更容易把结果和现实环境对应起来。


4. 只记命令,不理解结果

很多人学工具时容易陷入一个误区:
命令背得很多,但看到结果还是不知道意味着什么。

其实 Nmap 真正重要的是这三件事:

  • • 目标在不在线
  • • 端口开没开
  • • 开着的端口跑的是什么服务

把这三点理解透,比多记几十个参数更重要。


? 一份适合收藏的 Nmap 入门速查表

命令
用途
nmap 目标
扫描常见端口
nmap -sn 网段
只发现在线主机
nmap -p 22,80,443 目标
扫描指定端口
nmap -p- 目标
扫描全部 TCP 端口
nmap -sV 目标
识别服务和版本
nmap -oN result.txt 目标
保存结果到文本文件

✅ 最后总结一下

如果你刚开始学 Nmap,真的不用追求“会很多参数”。
先把下面这几件事搞懂,就已经算是入门了:

  1. 1. 会找在线主机
  2. 2. 会看开放端口
  3. 3. 会识别服务
  4. 4. 会保存扫描结果
  5. 5. 会正确理解 open / closed / filtered

Nmap 的价值不在于“像黑客一样敲很多高级命令”,而在于:

你能不能借助它更清楚地理解一台机器的网络暴露面。

这才是它最核心、也最实用的地方。


? 适合新手直接练习的命令合集

nmap scanme.nmap.org
nmap -sn 192.168.1.0/24
nmap 192.168.1.10
nmap -p 22,80,443 192.168.1.10
nmap -p- 192.168.1.10
nmap -sV 192.168.1.10
nmap -oN result.txt 192.168.1.10