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

Linux如何查看监听端口?

在 Linux 中查看监听端口,主要使用 netstat -tuln 或更现代的 ss -tuln 命令, lsof -i 也可查看进程监听的端口信息。

使用 netstat 命令(经典工具)

netstat 是传统网络工具,适合大多数Linux发行版(需安装 net-tools 包):

# 安装net-tools(如未预装) sudo apt install net-tools # Debian/Ubuntu sudo yum install net-tools # CentOS/RHEL # 查看所有监听端口(IPv4和IPv6) netstat -tuln # 参数说明: # -t : TCP协议 # -u : UDP协议 # -l : 仅显示监听状态 # -n : 以数字形式显示端口(不解析服务名) # -p : 显示进程名(需sudo权限)

输出示例

Linux如何查看监听端口? 第1张

使用 ss 命令(推荐,更高效)

ss(Socket Statistics)是 netstat 的现代替代品,性能更强,预装于多数新系统:

# 查看所有TCP/UDP监听端口 ss -tuln # 高级用法: ss -tuln sport = :80 # 监听80端口的连接 ss -tuln state listening # 明确过滤监听状态


使用 lsof 命令(查看进程关联)

lsof 列出被进程打开的文件(包括网络套接字):

Linux如何查看监听端口? 第2张

# 安装lsof(如未预装) sudo apt install lsof # Debian/Ubuntu sudo yum install lsof # CentOS/RHEL # 查看所有监听端口 sudo lsof -i -P -n | grep LISTEN # 参数说明: # -i : 显示网络连接 # -P : 禁用端口服务名解析(显示数字端口) # -n : 禁用主机名解析(显示IP)


通过 /proc 文件系统(底层查看)

Linux 内核通过 /proc/net 暴露网络信息:

Linux如何查看监听端口? 第3张

# 查看TCP监听 cat /proc/net/tcp | awk '{$2=$3=""; print $0}' | grep "0A" # 0A=LISTEN状态(十六进制) # 查看UDP监听 cat /proc/net/udp

需转换端口:0016 → 十进制22(SSH端口)。


防火墙工具辅助查看

若防火墙(如 iptables 或 firewalld)启用,可能影响实际可访问性:

# 检查防火墙规则 sudo iptables -L -n -v # iptables sudo firewall-cmd --list-all # firewalld(CentOS/RHEL)


使用场景建议

  • 快速检查:优先用 ss -tuln(速度快,无需安装)。
  • 进程关联:用 lsof 或 netstat -tulnp 定位程序路径。
  • 脚本处理:ss 或 /proc 输出更易解析。
  • 兼容旧系统:netstat 作为备选。


安全注意事项

  1. 最小化监听:关闭非必要端口(如数据库端口暴露到公网)。
  2. 权限控制:使用 sudo 查看进程时避免泄露敏感信息。
  3. 定期审计:通过 cron 任务定时检查监听端口变化。

引用说明参考 Linux 官方手册(man netstat、man ss)、Red Hat 文档及网络管理最佳实践,命令测试于 Ubuntu 22.04 和 CentOS 7 环境。

0