有次部署一个新服务,启动后发现怎么也连不上。排查了防火墙、安全组、监听地址,最后用端口扫描器一测,发现端口根本没开——原来是进程崩溃了,只是进程表里还留着僵尸。从那以后,每次部署完服务,我都会顺手扫一下端口,确认预期的端口确实对外开放了。这篇文章把端口扫描器的原理、用法、以及我踩过的坑分享出来。
一、这个工具能做什么?
端口扫描器用于检测目标主机(IP 或域名)上哪些 TCP 端口处于开放状态。
适用场景:
- 验证服务器防火墙/安全组规则是否生效。
- 排查服务为什么连不上(端口没开、被墙、还是进程挂了)。
- 检查自己的服务器是否有不该开放的端口(比如 Redis 默认 6379 暴露在公网)。
- 学习 TCP 连接原理。
🌐 在线使用:https://www.viddown.cn/tools/port-scanner/
💡 术语解释:
- TCP 端口:TCP 协议中用于区分不同服务的数字标识,范围 0-65535。1-1023 为知名端口(如 22=SSH,80=HTTP,443=HTTPS)。
- 开放端口:目标主机上有程序在监听该端口,并能响应 TCP 握手请求。
- TCP 连接扫描:扫描器尝试完成 TCP 三次握手,如果成功则认为端口开放。
二、如何使用?(三步搞定)
2.1 输入目标
- 主机名或 IP:支持域名(如
scanme.nmap.org)或 IPv4 地址(如127.0.0.1)。 - 端口范围:支持以下格式:
- 范围:
1-1000(扫描 1 到 1000 号端口) - 列表:
22,80,443(只扫描这三个端口) - 混合:
1-100,443,8080-8090(范围+列表)
2.2 开始扫描
点击「开始扫描」,界面会实时显示:
- 当前正在扫描的端口号
- 已发现的开放端口列表
- 扫描进度百分比
2.3 分析结果
扫描完成后,列出所有开放的端口。你可以对照常见端口表判断哪些服务在运行。
⚠️ 法律提醒:请仅扫描自己拥有权限的主机(如自己的服务器、本地虚拟机)。未经授权扫描他人主机可能违法。工具内置了测试目标
scanme.nmap.org(Nmap 官方提供的测试靶机),可放心练习。
三、技术原理:它是怎么检测的?
本工具采用TCP 连接扫描(TCP Connect Scan),原理非常简单:
- 扫描器尝试向目标 IP 的指定端口发起 TCP 连接(调用操作系统 Socket API)。
- 如果连接成功(三次握手完成),则判断端口为 开放。
- 如果连接超时或被拒绝(RST 包),则判断为 关闭 或 过滤。
与 Nmap 的 -sT 模式相同。优点是无需特殊权限(普通用户即可),缺点是会在目标日志中留下连接记录,且速度相对较慢。
为什么不用 SYN 半开扫描?
SYN 扫描(-sS)需要构造原始数据包,浏览器端无法实现(受限于 JavaScript)。本工具完全运行在浏览器中,通过后端代理发起扫描,因此只能使用 TCP 全连接扫描。
四、实战场景
场景1:验证服务器防火墙规则
假设你在云服务器上只开放了 22、80、443 端口。用本工具扫描 1-1000 范围,结果只显示这三个端口开放,其他全部超时——说明防火墙生效。
场景2:排查服务无法访问
你启动了一个 Node.js 应用,监听 3000 端口,但浏览器访问不了。扫描 3000 端口,结果显示 关闭。检查后发现进程根本没跑起来,npm start 报错了。
场景3:检测是否有 Redis 等敏感服务暴露在公网
扫描 6379(Redis 默认端口),如果显示开放且你并没有运行 Redis,那可能是被恶意程序占用了,或者配置错误。应立即关闭防火墙或修改监听地址。
场景4:测试本地虚拟机端口转发
你在虚拟机里跑了 MySQL(3306),想从宿主机连接。扫描虚拟机的 IP 的 3306 端口,如果不通,检查 VirtualBox/VMware 的端口转发规则。
五、注意事项(开发和使用中踩过的坑)
1. 扫描速度慢
原因:每个端口需要等待超时(通常 2-3 秒)才能判断为关闭。扫描 1000 个端口,最坏情况要等几十分钟。
建议:
- 尽量缩小端口范围,只扫描你关心的端口(如 22,80,443,3306,6379)。
- 工具内置了并发限制(同时扫描多个端口),但受浏览器和网络限制,不可能像 Nmap 那样快。
2. 某些端口显示“关闭”,但服务实际在跑
可能原因:
- 防火墙拦截了来自扫描器 IP 的请求。
- 服务只监听了 127.0.0.1(本地回环),没有监听 0.0.0.0 或公网 IP。
- 安全组规则限制了来源 IP。
解决方法:检查服务监听地址和防火墙规则。
3. 扫描域名时解析的 IP 与预期不符
原因:域名可能解析到 CDN 或负载均衡器,扫到的端口是 CDN 的,不是你源站的。
建议:直接用源站 IP 扫描。
4. 开放端口列表中出现 0 端口
原因:输入格式错误(如 0-1000 包含了 0 端口)。端口 0 是非法端口,不会真正被使用。工具应该过滤掉,但旧版本可能没做。已修复。
5. 扫描结果中有端口显示“开放”,但 telnet 连不上
可能原因:
- 端口被 TCP Wrapper 或其他应用层防火墙过滤,握手成功但连接后立即断开。
- 扫描工具误判(极少见,本工具基本准确)。
六、与命令行工具对比
| 工具 | 优点 | 缺点 |
|---|---|---|
| 本工具(网页版) | 无需安装,图形化,适合快速单次扫描 | 速度慢,功能单一 |
| Nmap | 功能强大,速度快,支持多种扫描技术 | 需要安装,命令复杂 |
nc -zv |
简单轻量 | 只能扫单个端口,无法批量 |
用 nc 命令手动扫端口
nc -zv target.com 80
nc -zv target.com 22
批量扫描可以用 shell 循环,但效率很低。
七、常见端口速查表
端口 服务 说明
21 FTP 文件传输(不加密)
22 SSH 安全外壳(远程登录)
23 Telnet 远程登录(明文,不安全)
25 SMTP 邮件发送
53 DNS 域名解析
80 HTTP 网页服务
110 POP3 邮件接收
143 IMAP 邮件接收(更现代)
443 HTTPS 加密网页服务
3306 MySQL 数据库
5432 PostgreSQL 数据库
6379 Redis 缓存数据库
27017 MongoDB 数据库
八、一点小建议
定期扫描自己的公网服务器,发现不该开的端口及时关闭。
不要扫描不熟悉的 IP,可能触发对方 IDS/IPS 报警,甚至被反扫。
扫描大量端口时,降低并发数(工具默认已限制),避免被认为是攻击。
配合服务版本检测:只扫到开放端口还不够,建议用 Nmap 的 -sV 进一步识别服务版本。
对于内网扫描,本工具不适用(无法访问你的内网地址)。建议在内网机器上直接使用 Nmap。
九、总结
端口扫描器是网络排障和安全自查的基础工具。VidDown 的在线端口扫描器免安装、免配置,适合快速验证单个目标或少量端口。
如果你还没试过,现在就去 https://www.viddown.cn/tools/port-scanner/ 扫描一下你自己的服务器,看看有没有“裸奔”的端口。
最后再次提醒:请合法使用,仅扫描你有权测试的主机。尊重他人网络资产,也是保护自己。
附录:扫描结果解读示例
端口 状态 可能服务
22 开放 SSH(远程登录)
80 开放 HTTP(网站)
443 开放 HTTPS(加密网站)
3306 关闭 MySQL 未运行或被防火墙阻挡
8080 开放 可能是 Tomcat 或代理