在Linux系统管理和网络排错中,了解主机上开放了哪些端口、哪些服务正在监听这些端口,是一项至关重要的基本技能,无论是部署新应用、排查服务连接问题,还是进行安全审计,都离不开对主机端口状态的精确掌握,本文将系统性地介绍几种主流且高效的方法,帮助您全面地查看Linux主机端口信息。
netstat – 经典的网络工具
netstat(Network Statistics)是一个历史悠久且功能强大的网络统计工具,尽管在一些最新的Linux发行版中逐渐被ss取代,但它依然是许多系统管理员熟悉的“老朋友”,通过netstat,我们可以轻松获取网络连接、路由表、接口统计等信息。
要查看当前主机所有监听的TCP和UDP端口,最常用的命令组合是:
netstat -tuln
让我们来解析这个命令的各个参数:
-t:显示TCP(Transmission Control Protocol)端口。-u:显示UDP(User Datagram Protocol)端口。-l:仅显示处于监听状态的套接字。-n:以数字形式显示地址和端口号,而不是尝试解析成服务名或主机名,这能显著提高执行速度。
执行后,您会看到类似以下的输出:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
这里的Local Address列显示了监听的IP地址和端口。0.0.1:631表示服务仅在本地回环地址的631端口上监听,而::22则表示服务在所有IPv6地址的22端口(SSH服务)上监听。
ss – 现代高效的替代品
ss(Socket Statistics)是netstat的现代替代品,它直接从内核获取信息,因此比netstat更快、更高效,在大多数现代Linux系统(如CentOS 7+, Ubuntu 18.04+)上,ss都是默认安装的,并且是推荐使用的工具。

ss的用法与netstat高度兼容,上述查看监听端口的命令可以完全对应为:
ss -tuln
其输出格式与netstat类似,但信息可能更详尽,执行速度也更快,对于日常的端口检查,养成使用ss的习惯是明智的选择。
lsof – 列出打开文件的利器
在Linux哲学中,“一切皆文件”,网络端口也不例外,它们被视为一种特殊的文件。lsof(List Open Files)是一个功能极其强大的命令,用于列出当前系统打开的文件,利用它,我们可以精准地找到是哪个进程占用了某个端口。
要查看所有网络连接,可以使用:
lsof -i
但更实用的场景是,当我们想知道某个特定端口(例如80端口)被哪个进程占用时:

lsof -i :80
这个命令会直接返回监听80端口的进程名、进程ID(PID)、用户等信息,这是ss和netstat需要结合grep或其他命令才能实现的便捷功能,因此在定位具体问题时,lsof往往能一击即中。
解读端口状态与协议
在查看端口时,理解不同的状态和协议至关重要。
- 协议:主要分为TCP和UDP,TCP是面向连接的协议,提供可靠的数据传输,常用于Web(HTTP/HTTPS)、SSH、FTP等服务,UDP是无连接的协议,传输速度快但不保证可靠性,常用于DNS、DHCP、视频流等场景。
- 状态:对于TCP连接,状态信息尤为重要:
LISTEN:服务正在监听端口,等待传入的连接请求。ESTABLISHED:一个连接已经建立,双方可以进行数据传输。TIME_WAIT:连接主动关闭后,等待一段时间以确保对方收到了关闭请求,这是TCP协议保证可靠性的机制之一。CLOSE_WAIT:被动关闭方收到对方的关闭请求,但应用程序尚未关闭连接。
实用技巧与高级用法
掌握了基本工具后,一些组合命令和外部工具能让我们事半功倍。
- 查找特定端口:如果端口列表很长,可以使用
grep进行过滤,查找80端口:ss -tuln | grep :80
- 外部扫描视角:
netstat、ss和lsof都是从主机内部视角查看,如果想模拟外部攻击者或用户,看看哪些端口是对外开放的,可以使用强大的网络扫描工具nmap。
# 安装nmap (如果未安装) # sudo apt-get install nmap (Debian/Ubuntu) # sudo yum install nmap (CentOS/RHEL) # 扫描本机开放的TCP端口 nmap -sT localhost
nmap会主动尝试连接端口,从而判断其是否开放,这对于安全审计非常有价值。
工具对比与总结
为了更直观地选择合适的工具,下表对它们进行了总结:
| 工具 | 主要用途 | 优点 | 常用命令示例 |
|---|---|---|---|
netstat |
查看网络连接、路由、接口统计 | 经典通用,兼容性好 | netstat -tuln |
ss |
查看网络套接字信息 | 速度快,信息详细,现代推荐 | ss -tuln, ss -tulnp |
lsof |
查看进程打开的文件(包括端口) | 能直接关联进程与端口,定位问题精准 | lsof -i :22 |
nmap |
网络发现和安全审计 | 外部视角,功能强大,端口服务识别 | nmap -sT -O localhost |
查看Linux主机端口是系统管理员的基本功,对于日常快速检查,ss -tuln是首选;当需要深入探究某个端口与具体进程的关联时,lsof -i :端口号是最佳利器;而进行安全评估或外部连通性测试时,则应求助于nmap,灵活运用这些工具,将使您在管理和维护Linux系统时更加得心应手,从容应对各种网络相关的挑战。
















