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

Linux查端口一招搞定

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

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

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

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

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

Linux查端口一招搞定  第1张

# 查看所有监听端口(-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 命令(传统工具)

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

# 查看所有TCP/UDP监听端口
sudo netstat -tuln
# 显示进程名和PID(需sudo权限)
sudo netstat -tulnp
# 查询80端口占用情况
sudo netstat -tulnp | grep ':80'

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

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

# 查看所有网络监听
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)通常由客户端使用,无需特别关注

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


引用说明基于 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