上一篇
linux如何查看网络连接
- Linux
- 2025-06-08
- 3846
在Linux中查看网络连接,常用命令包括: ,
netstat -tuln
显示TCP/UDP监听端口;
ss -tunp
更高效的连接查看; ,
lsof -i
查看进程打开的连接;
iftop
或
nload
实时监控流量。
核心工具与命令详解
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项目,确保通用性与准确性。