插件窝 干货文章 linux怎么查看开了哪些端口

linux怎么查看开了哪些端口

端口 监听 显示 sudo 382    来源:    2025-05-01

在Linux系统中,查看已开启的端口(监听状态)有以下几种常用方法:


1. 使用 netstat 命令

sudo netstat -tulnp
  • 参数说明
    • -t:显示TCP端口
    • -u:显示UDP端口
    • -l:仅显示监听状态的端口
    • -n:以数字形式显示地址和端口(不解析域名和服务名)
    • -p:显示关联的进程/程序名(需root权限)

输出示例

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  
tcp6       0      0 :::80          :::*             LISTEN      5678/nginx

⚠️ 如果系统提示 netstat 未找到,可能需要安装 net-tools 包(例如 sudo apt install net-tools)。


2. 使用 ss 命令(推荐,更现代的工具)

sudo ss -tulnp
  • 参数:与 netstat 类似,但性能更高。
  • 输出格式:与 netstat 接近。

3. 使用 lsof 命令

sudo lsof -i -P -n | grep LISTEN
  • 参数说明
    • -i:显示网络连接
    • -P:禁用端口别名(直接显示数字端口)
    • -n:禁用域名解析(显示IP地址)
  • 输出示例
sshd    1234 root    3u  IPv4 12345      0t0  TCP *:22 (LISTEN)
nginx   5678 root    6u  IPv6 67890      0t0  TCP *:80 (LISTEN)

4. 查看 /etc/services 文件

cat /etc/services
  • 此文件记录了常见端口与服务的映射关系,但仅作参考,实际开放的端口需通过上述命令确认。

5. 检查防火墙规则

如果端口被防火墙拦截,可能无法通过上述命令看到外部访问。需检查防火墙配置: - iptablesbash sudo iptables -L -n - firewalldbash sudo firewall-cmd --list-all - ufw(Ubuntu): bash sudo ufw status


关键注意事项:

  1. 需要root权限:查看进程关联的端口(如 -p 参数)通常需要 sudo
  2. 区分监听与连接LISTEN 表示服务正在监听端口,ESTABLISHED 表示活跃连接。
  3. IPv4/IPv6:注意 0.0.0.0(所有IPv4)和 ::(所有IPv6)的区别。

快速排查示例:

# 检查是否有服务监听80端口
sudo ss -tlnp | grep ':80'

根据输出结果,你可以进一步分析是哪个服务占用了端口,或是否需要调整防火墙规则。