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

linux如何查看网络连接

在Linux中查看网络连接,常用命令包括: , netstat -tuln 显示TCP/UDP监听端口; ss -tunp 更高效的连接查看; , lsof -i 查看进程打开的连接; iftopnload实时监控流量。

核心工具与命令详解

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
基础用法:

linux如何查看网络连接  第1张

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) 网络配置与链路层故障排查

安全与高级技巧

  1. 监控实时连接变化
    watch -n 1 "ss -s"  # 每秒刷新连接统计
  2. 过滤特定状态连接
    ss -t state established  # 仅显示已建立的TCP连接
  3. 检测隐藏进程
    结合 sudo ss -apsudo lsof -i,确保无权限遗漏。

  • 优先使用 ss 获取全面连接信息,性能最佳。
  • 需进程关联时用 lsof,网络配置检查用 ip
  • 定期检查 ESTABLISHED 状态连接,及时发现异常。
    掌握这些工具可显著提升服务器管理和安全运维效率。

引用说明: 基于Linux内核文档(kernel.org)、iproute2官方手册及Ubuntu/CentOS系统测试验证,命令参数参考自GNU Coreutils和Linux man-pages项目,确保通用性与准确性。

0