如何查看端口连接?

使用 netstat 命令(经典工具)

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

# 过滤特定端口(如80端口)
sudo netstat -tuln | grep ':80'

参数解析

  • -t:TCP协议
  • -u:UDP协议
  • -l:仅显示监听端口
  • -n:以数字形式显示端口(不解析服务名)
  • -p:显示进程名(需sudo权限)
    输出示例

    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

使用 ss 命令(推荐替代方案)

ss(Socket Statistics)是 netstat 的现代替代品,速度更快,语法类似:

# 查看所有TCP/UDP监听端口
sudo ss -tuln
# 检查特定进程占用的端口(如Nginx)
sudo ss -tuln | grep nginx

优势

  • 直接读取内核数据,效率更高
  • 支持更细粒度的过滤(如 ss -t state established

使用 lsof 命令(查看进程级占用)

lsof(List Open Files)可查看进程打开的文件和端口:

# 查看所有网络端口占用
sudo lsof -i -P -n
# 检查80端口被哪个进程占用
sudo lsof -i :80

参数说明

  • -i:显示网络连接
  • -P:禁用端口服务名解析(显示数字端口)
  • -n:禁用IP地址解析(显示IP而非主机名)
    输出关键列
    COMMAND(进程名)、PID(进程ID)、TYPE(类型)、NODE(协议)、NAME(地址:端口)

使用 nmap 扫描本地端口(安全审计场景)

nmap 通常用于远程扫描,但也可检查本机开放端口:

# 扫描本机所有TCP端口
sudo nmap -sT -p- 127.0.0.1

参数解释

  • -sT:TCP连接扫描
  • -p-:扫描1-65535所有端口
    适用场景
    验证防火墙规则或隐藏端口,比 netstat/ss 更全面(需root权限)。

其他工具补充

  1. fuser 命令
    快速查看端口占用进程(需端口协议):

    sudo fuser 80/tcp  # 显示使用80/TCP的进程PID
  2. systemctl 管理服务
    若端口由systemd服务管理,可直接查询:

    systemctl status sshd | grep -i "listening"  # 检查SSH服务端口

常见问题解决

  • 权限不足
    普通用户可运行 netstat -tulnss -tuln 查看端口状态(但无法显示进程名),需 sudo 获取完整信息。

  • 工具未安装
    安装命令参考:

    # netstat (net-tools)
    sudo apt install net-tools    # Debian/Ubuntu
    sudo yum install net-tools    # CentOS/RHEL
    # ss/lsof (默认预装)
    sudo apt install lsof nmap    # 按需安装
  • 查看指定进程的端口
    结合 pgrepss

    ss -tuln -p | grep $(pgrep nginx)  # 查找Nginx相关端口

总结与最佳实践

  • 日常推荐:优先使用 ss(高效)或 lsof(进程关联性强)。
  • 安全建议
    • 定期检查异常端口(如 netstat -antp 查看所有TCP连接)。
    • 使用 nmap 进行深度扫描,检测未授权服务。
  • 生产环境:结合自动化脚本(如 ss -tuln > port_scan.log 定期归档)。

引用说明: 基于Linux内核文档(kernel.org)及以下工具手册:

  • netstat/ss:Linux Programmer’s Manual
  • lsof:Victor A. Abell 官方文档
  • nmap:Nmap Network Scanning Book (Gordon Lyon)
    操作验证环境:Ubuntu 22.04/CentOS 7,兼容主流Linux发行版。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5930.html

(0)
酷番叔酷番叔
上一篇 2025年7月1日 04:15
下一篇 2025年7月1日 04:25

相关推荐

  • Linux如何安装Samba服务?

    Samba是一个开源的软件套件,它实现了SMB/CIFS协议,主要用于在Linux/Unix系统与Windows系统之间提供文件和打印共享服务,通过安装Samba,用户可以将Linux目录共享给Windows客户端,实现跨平台的文件传输和访问,本文将详细介绍在Linux系统中安装和配置Samba的完整步骤,包括……

    2025年9月19日
    16500
  • Linux中lseek函数如何创建空洞文件?具体实现步骤是怎样的?

    在Linux文件系统中,空洞文件(Sparse File)是一种特殊文件,其逻辑上存在连续的数据区域,但部分区域并未实际存储数据(即“空洞”),这些空洞不占用磁盘空间,直到有数据写入时才会分配物理块,创建空洞文件的核心在于利用lseek函数调整文件读写偏移量,在未写入数据的情况下扩展文件大小,从而形成逻辑上的空……

    2025年8月31日
    16400
  • Linux如何强制退出cat命令?

    当cat从标准输入读取时(用户手动输入内容)场景:直接运行cat命令(不带文件名参数),此时终端等待用户输入文本, $ catHello World! # 用户输入内容Hello World! # cat实时回显退出方法:按一次 Ctrl+D(EOF信号):表示输入结束,cat会立即退出并返回命令行,连续按两次……

    2025年6月25日
    18800
  • Linux下怎么查看网络bond状态?

    在Linux系统中,网络绑定(Bonding)是一种将多个物理网卡虚拟成一个逻辑网卡的技术,常用于提高网络带宽、实现负载均衡或提供冗余备份,要确认Bond配置是否生效、查看当前状态或排查问题,需通过多种命令和方法获取Bond接口的详细信息,以下是查看Linux Bond配置的详细方法及步骤,通过ip命令查看Bo……

    2025年10月1日
    16100
  • 如何查看Linux内存大小与频率?

    在Linux系统中,内存是影响系统性能的核心资源之一,内存大小决定了系统能同时运行的程序数量和数据处理能力,而内存频率则直接影响数据传输速度,进而影响整体性能,掌握如何准确查看内存大小和频率,对于系统优化、故障排查及硬件升级都至关重要,本文将详细介绍通过命令行和工具查看Linux内存大小及频率的具体方法,并对比……

    2025年9月20日
    15600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信