netstat -tuln
显示监听端口,ss -tuln
更高效替代,lsof -i :端口号
查指定端口进程,nmap localhost
扫描本机开放端口。使用 netstat
命令(经典工具)
netstat
是传统网络工具,可显示端口状态和连接信息:
# 查看所有监听端口(TCP/UDP) sudo netstat -tuln # 查看所有活动连接(含进程名) sudo netstat -tulnp
- 参数解析:
-t
:TCP端口-u
:UDP端口-l
:仅显示监听端口-n
:以数字形式显示端口(不解析服务名)-p
:显示关联进程(需sudo权限)
- 输出示例:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
💡 提示:若系统未安装,可通过
sudo apt install net-tools
(Debian系)或sudo yum install net-tools
(RHEL系)安装。
使用 ss
命令(推荐替代方案)
ss
(Socket Statistics)是netstat
的现代替代品,速度更快、功能更强:
# 查看所有监听端口 sudo ss -tuln # 查看指定端口(如80端口) sudo ss -tuln sport = :80
- 参数解析:
-t
/-u
:TCP/UDP协议-l
:监听状态-n
:数字格式sport
:源端口过滤
- 优势:
直接读取内核数据,执行效率比netstat
高数倍。
使用 lsof
命令(进程级分析)
lsof
(List Open Files)可精确关联进程与端口:
# 查看所有监听端口及进程 sudo lsof -i -P -n | grep LISTEN # 检查指定端口占用(如3306) sudo lsof -i :3306
- 参数解析:
-i
:网络连接-P
:禁用端口名解析(显示数字端口)-n
:禁用主机名解析(显示IP)
- 输出示例:
mysqld 789 mysql 33u IPv6 0xabcd 0t0 TCP *:3306 (LISTEN)
使用 nmap
扫描端口(安全检测)
nmap
用于扫描本地或远程主机的开放端口:
# 扫描本机所有端口 sudo nmap -sT -p- 127.0.0.1 # 快速扫描常用端口 sudo nmap -F localhost
- 参数解析:
-sT
:TCP连接扫描-p-
:扫描1-65535全端口-F
:快速模式(仅扫描100个常用端口)
⚠️ 注意:扫描远程主机需获得授权,避免触发安全警报。
查看 /etc/services
文件(端口与协议映射)
该文件记录了标准端口对应的服务名称:
grep 'http' /etc/services
输出示例:
http 80/tcp www # World Wide Web HTTP
https 443/tcp # HTTP over TLS
适用于快速查询已知服务的默认端口。
🔧 注意事项
- 权限要求:
netstat
、ss
、lsof
查看进程信息需sudo
权限;普通用户可查看无进程绑定的端口。 - 工具安装:
nmap
:sudo apt install nmap
或sudo yum install nmap
lsof
:多数系统预装,未安装时执行sudo apt install lsof
- 防火墙干扰:
若端口无响应,检查防火墙状态:sudo ufw status # Ubuntu防火墙 sudo firewall-cmd --list-ports # CentOS防火墙
📊 方法对比与选择建议
场景 | 推荐工具 | 原因 |
---|---|---|
快速检查监听端口 | ss |
执行速度快,输出简洁 |
排查端口占用进程 | lsof |
进程关联信息最精准 |
全端口扫描与安全检测 | nmap |
支持高级扫描策略 |
兼容旧系统 | netstat |
无需安装新工具 |
💎 总结
- 日常运维首选
ss
+lsof
组合,兼顾效率与细节。 - 定期使用
nmap
扫描可强化服务器安全。 - 掌握多工具交叉验证,避免单一命令的局限性。
本文基于Linux内核文档及以下实践资源整理:
- Linux man pages
- Nmap官方指南:
nmap.org/book/man.html
- Ubuntu Server安全手册(端口管理章节)
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/20517.html