Linux服务器查看已开放端口的实用方法详解

admin
Linux服务器查看已开放端口的常用方法包括netstat、ss及lsof命令,netstat -tuln可显示所有监听端口及协议,-a选项可查看所有连接状态;ss命令作为netstat替代,性能更优,常用参数-tlnp可显示进程ID;lsof -i:端口号可精准定位占用特定端口的进程,防火墙状态可通过firewall-cmd --list-ports(CentOS/RHEL)或ufw status(Ubuntu)检查,结合grep过滤(如ss -tuln | grep LISTEN)可快速定位关键信息,适用于服务排查、端口冲突诊断等场景。

在Linux服务器管理中,端口的开放状态直接关系到服务的可用性与系统安全性,无论是排查服务无法访问的问题、确认防火墙规则,还是检测未授权的端口开放,掌握查看已开放端口的方法都是运维人员的必备技能,本文将详细介绍多种常用命令及其使用场景,帮助你高效掌握Linux服务器端口状态。

为什么需要查看开放端口?

在开始具体操作前,先明确查看开放端口的常见场景:

  • 服务排查:确认Web服务(如80/443端口)、数据库(如3306/5432端口)是否正常监听;
  • 安全审计:检测是否存在恶意程序开放的未知端口,避免安全漏洞;
  • 防火墙配置:验证防火墙是否已正确放行业务所需端口;
  • 故障诊断:当外部无法访问服务时,判断是否因端口未开放导致。

使用netstat命令查看端口(传统方法)

netstat是Linux系统中经典的网络工具,用于显示网络连接、路由表、接口统计等信息,虽然逐渐被ss替代,但在旧系统或兼容场景中仍广泛使用。

Linux服务器查看已开放端口的实用方法详解

基本语法与常用参数

netstat [选项] [参数]

核心参数

  • -t:显示TCP端口;
  • -u:显示UDP端口;
  • -l:仅显示监听状态的端口(即服务正在等待连接的端口);
  • -n:以数字形式显示地址和端口(不解析主机名和服务名,提高速度);
  • -p:显示占用端口的进程ID(PID)和进程名(需root权限)。

常用示例

(1)查看所有监听端口(TCP+UDP)

netstat -tuln

输出说明

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
udp        0      0 0.0.0.0:68              0.0.0.0:*
  • Proto:协议(TCP/UDP);
  • Local Address:本地IP和端口(0.0.0表示监听所有IP);
  • State:状态(LISTEN表示监听中)。

(2)查看指定端口的监听状态

netstat -tuln | grep ":80"

若输出包含LISTEN,则80端口已开放并监听。

(3)查看端口对应的进程信息

sudo netstat -tulnp

输出示例

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      5678/mysqld

可看到22端口由sshd进程占用,3306端口由mysqld进程占用。

使用ss命令查看端口(现代推荐方法)

ssiproute2工具包的一部分,从Linux 2.6.27版本开始引入,相比netstatss在查询大量连接时速度更快(底层使用Netlink而非/proc文件系统),逐渐成为Linux系统默认的网络工具。

基本语法与常用参数

ss [选项] [参数]

核心参数

  • -t:显示TCP端口;
  • -u:显示UDP端口;
  • -l:仅显示监听端口;
  • -n:数字形式显示,不解析名称;
  • -p:显示进程ID和进程名(需root权限);
  • -a:显示所有端口(包括监听和非监听)。

常用示例

(1)查看所有监听端口(TCP+UDP)

ss -tuln

输出格式与netstat -tuln类似,但速度更快,适合高并发场景。

(2)查看TCP监听端口

ss -tl

仅显示TCP协议的监听端口。

(3)查看端口对应的进程信息

sudo ss -tulnp

输出示例

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN     0      128          0.0.0.0:22                     0.0.0.0:*    users:(("sshd",pid=1234,fd=3))
LISTEN     0      64   127.0.0.1:3306                     0.0.0.0:*    users:(("mysqld",pid=5678,fd=31))

可清晰看到进程名、PID及文件描述符信息。

(4)统计端口数量

ss -tuln | awk '{print $1}' | sort | uniq -c

按协议(TCP/UDP)统计监听端口数量,适合快速评估端口开放规模。

使用lsof命令查看端口

lsof(List Open Files)用于列出系统已打开的文件,在Linux中,“一切皆文件”,网络端口也被视为文件,因此可通过lsof查看端口占用情况。

基本语法

lsof [选项] [参数]

核心参数

  • -i:指定协议或端口,格式为[协议]:[端口](如-i:80-i tcp:22);
  • -P:不解析端口号为服务名(直接显示数字);
  • -n:不解析IP地址为主机名;
  • -s:显示端口状态(如tcp:LISTEN)。

常用示例

(1)查看指定端口的占用情况

sudo lsof -i:80

输出示例


COMMAND  
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码