当前位置:首页 > Linux > 正文

Linux查端口一招搞定

使用 netstat -tuln查看监听端口, ss -tuln更高效替代netstat, lsof -i :端口号查特定端口占用进程, sudo lsof -i显示所有网络连接。

在 Linux 中查询端口的专业方法详解

掌握端口查询是 Linux 系统管理和网络故障排查的核心技能,以下详细解析四种专业方法,附具体操作示例:

Linux查端口一招搞定 第1张

方法一:使用 ss 命令(推荐工具)

作为 netstat 的现代替代品,ss 直接从内核空间获取信息,效率更高:

# 查看所有监听端口(-l)和已建立连接(-t TCP/-u UDP) sudo ss -tuln # 示例输出解读 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* → 22端口监听所有IP(0.0.0.0表示任意接口) # 查询特定端口(如3306) ss -tunlp | grep ':3306'

方法二:使用 netstat 命令(传统工具)

虽然逐渐被取代,但仍是广泛兼容的选择:

Linux查端口一招搞定 第2张

️ 方法三:使用 lsof 命令(进程级分析)

直接关联端口与进程,适合深度诊断:

Linux查端口一招搞定 第3张

# 查看所有网络监听 sudo lsof -i -P -n | grep LISTEN # 查询特定端口(如443) sudo lsof -i :443 # 输出示例 nginx 1234 root 9u IPv4 0xabcd 0t0 TCP *:443 (LISTEN) → Nginx进程(1234)监听443端口

方法四:使用 nmap 扫描(远程端口探测)

检查远程主机或本机开放端口:

# 安装nmap sudo apt install nmap # Debian/Ubuntu sudo yum install nmap # CentOS/RHEL # 扫描本机端口 nmap -sT -p 1-1000 127.0.0.1 # 扫描远程主机Web端口 nmap -p 80,443 target_ip

端口状态解读

  • LISTEN:服务正在监听连接
  • ESTABLISHED:活跃数据连接
  • TIME_WAIT:连接正常关闭中
  • CLOSE_WAIT:远程端已关闭,本地未释放

️ 关键注意事项

  1. 查询监听端口需 LISTEN 状态,已建立连接显示为 ESTABLISHED
  2. 普通用户可能无法查看系统级端口,建议配合 sudo
  3. 使用 -p 参数时,ss/netstat 会解析服务名(如22→ssh),加 -n 可禁用解析提升速度
  4. 临时端口范围(32768-60999)通常由客户端使用,无需特别关注

安全提示:避免在公共服务器执行高危扫描操作,生产环境中建议通过 iptables 或 firewalld 管理端口访问权限,仅开放必要服务端口。


引用说明基于 Linux 内核文档(kernel.org)及以下权威资源:

  1. ss 官方手册页(man7.org/linux/man-pages/man8/ss.8.html)
  2. Red Hat 系统管理员指南(access.redhat.com/documentation)
  3. Nmap 官方网络扫描指南(nmap.org/book/man-port-scanning.html)
  4. Linux 网络栈深度解析(《Linux Kernel Networking》著作)

0