推荐优先使用 ss 工具查看网络端口,因其基于 netlink 接口,比依赖 /proc/net 的 netstat 更快更高效;ss 支持灵活过滤语法,适合高并发环境,而 netstat 因兼容性仍被使用但逐渐被取代。

在 Linux 系统中,管理网络 端口 是日常运维的重要任务之一。通过查看开放的端口、连接状态和服务监听情况,可以快速排查 网络问题 、诊断服务异常或识别潜在的安全风险。常用的两个 工具 是 netstat 和 ss,它们都能显示套接字(socket)信息,但各有特点。
netstat:经典网络状态查看工具
netstat(network statistics)是一个传统的命令行工具,用于显示网络连接、路由 表、接口统计等信息。尽管在较新的系统中逐渐被 ss 取代,但因其广泛兼容性仍被普遍使用。
常用选项:
-
netstat -tuln:列出当前正在监听的 TCP 和 UDP 端口 -
-t显示 TCP 连接 -
-u显示 UDP 连接 -
-l仅显示监听中的服务 -
-n以数字形式显示地址和端口号(不解析主机名或服务名) -
netstat -anp | grep :80:查找与 80 端口相关的所有连接及其进程
其中 -p 参数可显示关联的进程 ID 和程序名,但需要 root 权限才能看到所有进程。
ss:更高效的现代替代工具
ss(Socket Statistics)是较新的工具,设计用于取代 netstat。它直接从内核获取信息,因此速度更快、资源占用更低,尤其适合高并发环境。
常见用法:
-
ss -tuln:与 netstat -tuln 功能相同,列出监听的 TCP/UDP 端口 -
ss -tnlp:显示 TCP 监听端口及对应进程(需权限) -
ss -s:简要统计当前套接字使用情况 -
ss -o:显示 TCP 连接的计时器信息(如重传时间) -
ss dst 192.168.1.100:过滤目标地址为指定 IP 的连接
ss 支持更灵活的过滤语法,例如使用表达式筛选特定状态的连接:ss '(dport = :80 or dport = :443)' 查看目的端口为 80 或 443 的连接。
如何选择 netstat 与 ss
虽然两者功能相似,但推荐优先使用 ss,特别是在性能敏感或生产环境中。netstat 依赖过时的 /proc/net 文件系统接口,而 ss 使用更底层的 netlink 接口,响应更快,输出更精确。
若系统中没有安装 netstat,可能是因为所属的 net-tools 包未默认安装(如某些精简版 CentOS 或 Ubuntu)。可通过以下命令安装:
- Ubuntu/Debian:
sudo apt install net-tools - CentOS/RHEL:
sudo yum install net-tools或sudo dnf install net-tools
ss 则包含在 iproute2 软件包中,现代发行版通常已预装。
基本上就这些。掌握 netstat 和 ss 的基本用法,能帮助你快速了解系统网络状态,定位服务是否正常监听、是否有异常连接等问题。日常建议多用 ss,熟悉其语法后效率更高。