linux如何查看网络连接
- Linux
- 2025-06-08
- 5
核心工具与命令详解
ss 命令(推荐)
替代传统 netstat,更高效且功能全面。
常用参数组合:
ss -tunap
- -t:显示TCP连接
- -u:显示UDP连接
- -n:禁止域名解析(显示IP和端口号)
- -a:显示所有连接(含监听状态)
- -p:显示进程信息
输出示例解读:
tcp ESTAB 0 0 192.168.1.10:22 203.0.113.5:54321 users:(("sshd",pid=1234,fd=3))
- ESTAB:连接状态(ESTABLISHED表示已建立)
- 168.1.10:22:本地IP与端口
- 0.113.5:54321:远程IP与端口
- sshd, pid=1234:进程名和PID
适用场景:快速检查活动连接、排查端口占用。

netstat 命令(传统工具)
兼容性高,但效率低于 ss。
基础用法:
netstat -tulnp
- -t/-u:TCP/UDP协议
- -l:仅监听端口
- -n:数字格式显示
- -p:显示进程
关键输出列:
Proto(协议)、Local Address(本地地址)、Foreign Address(远程地址)、State(状态)、PID/Program(进程)。
lsof 命令(按进程/文件分析)
查看指定端口(如80)的进程:
lsof -i :80
输出示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 1234 root 6u IPv4 12345 0t0 TCP *:http (LISTEN)
- 直接关联进程、用户和网络连接。
ip 命令(网络层信息)
查看路由与邻居表:

ip route # 查看路由表 ip neigh # 查看ARP缓存(IP-MAC映射)
实用场景示例
场景1:确认Web服务是否监听
ss -ltn | grep ':80'
输出 LISTEN 状态即表示服务已启动。
场景2:检测异常外部连接
ss -antp | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
统计所有已建立连接的远程IP及其连接数,排查可疑IP。
场景3:定位端口占用进程
sudo lsof -i :22
找到占用SSH端口(22)的进程名和PID。
各工具对比与选型
| 工具 | 速度 | 功能侧重 | 适用场景 |
|---|---|---|---|
| ss | ️ 极快 | 连接状态和进程信息 | 日常检查、高性能环境 |
| netstat | ️ 较慢 | 基础连接信息 | 兼容旧系统 |
| lsof | ⏱️ 中等 | 进程与文件的关联 | 精确定位进程占用 |
| ip | ️ 快 | 网络层配置(路由/ARP) | 网络配置与链路层故障排查 |
安全与高级技巧
- 监控实时连接变化 watch -n 1 "ss -s" # 每秒刷新连接统计
- 过滤特定状态连接 ss -t state established # 仅显示已建立的TCP连接
- 检测隐藏进程
结合 sudo ss -ap 和 sudo lsof -i,确保无权限遗漏。
- 优先使用 ss 获取全面连接信息,性能最佳。
- 需进程关联时用 lsof,网络配置检查用 ip。
- 定期检查 ESTABLISHED 状态连接,及时发现异常。
掌握这些工具可显著提升服务器管理和安全运维效率。
引用说明: 基于Linux内核文档(kernel.org)、iproute2官方手册及Ubuntu/CentOS系统测试验证,命令参数参考自GNU Coreutils和Linux man-pages项目,确保通用性与准确性。
