Linux下怎么查看TCP连接数

发布时间:2022-01-26 09:24:20 作者:小新
来源:亿速云 阅读:606
# Linux下怎么查看TCP连接数

## 引言

在Linux系统管理和网络故障排查中,监控TCP连接数是一项基础但至关重要的任务。无论是排查高负载问题、分析网络攻击,还是优化服务器性能,了解如何查看和分析TCP连接状态都必不可少。本文将详细介绍多种查看TCP连接数的方法及其应用场景。

---

## 一、基础命令工具

### 1. `netstat`命令

`netstat`是传统的网络统计工具,可以显示网络连接、路由表、接口统计等信息。

```bash
netstat -ant | grep -v "LISTEN" | wc -l

参数说明: - -a:显示所有连接 - -n:以数字形式显示地址 - -t:仅显示TCP连接

输出示例

ESTABLISHED 42
TIME_WT   18

优缺点: - ✅ 兼容性好,多数Linux发行版预装 - ❌ 性能较差(大数据量时可能卡顿)

2. ss命令

ss(Socket Statistics)是netstat的现代替代品,性能更优。

ss -s  # 查看汇总统计
ss -tan | awk '{print $1}' | sort | uniq -c

典型输出

Netid  State      Recv-Q Send-Q Local Address:Port  Peer Address:Port
tcp    ESTAB      0      0      192.168.1.10:ssh    203.0.113.5:59234

优势: - 比netstat快10倍以上 - 支持更详细的过滤条件


二、高级监控方法

1. /proc/net/tcp分析

Linux内核通过虚拟文件系统暴露网络信息:

cat /proc/net/tcp | wc -l  # 原始TCP连接数
awk '{print $4}' /proc/net/tcp | sort | uniq -c  # 按状态统计

状态码解读: - 0A:LISTEN - 01:ESTABLISHED - 06:TIME_WT

2. conntrack工具(适用于NAT环境)

conntrack -L -p tcp | wc -l

适用场景: - 经过NAT转发的连接 - 防火墙规则分析


三、按状态分类统计

TCP连接的常见状态及统计方法:

状态 含义 统计命令示例
ESTABLISHED 已建立连接 ss -tan state established
TIME_WT 等待关闭 netstat -ant | grep TIME_WT
SYN_SENT 主动发起连接 ss -tan state syn-sent
CLOSE_WT 等待本地关闭 ss -tan state close-wait

关键指标关注: - 大量TIME_WT:可能需调整tcp_tw_reuse - 持续SYN_RECV:可能是SYN Flood攻击


四、按端口/IP细分

1. 查看特定端口连接数

ss -tan 'sport = :80' | wc -l

2. 统计客户端IP连接数

ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

输出示例

   45 203.0.113.12
   22 198.51.100.34

五、实时监控工具

1. iftop(带宽监控)

iftop -P -n -N

2. nethogs(进程级监控)

nethogs eth0

3. tcptrack(可视化工具)

tcptrack -i eth0

六、自动化监控脚本

1. 基础统计脚本

#!/bin/bash
DATE=$(date +%F-%T)
COUNT=$(ss -tan | wc -l)
echo "$DATE $COUNT" >> /var/log/tcp_connections.log

2. 异常报警脚本

#!/bin/bash
THRESHOLD=1000
COUNT=$(ss -tan | wc -l)

if [ $COUNT -gt $THRESHOLD ]; then
    echo "警报:TCP连接数过高 ($COUNT)" | mail -s "连接数警报" admin@example.com
fi

七、性能调优建议

1. 内核参数调整

# 查看当前配置
sysctl net.ipv4.tcp_tw_reuse
sysctl net.ipv4.tcp_max_tw_buckets

# 临时修改
sysctl -w net.ipv4.tcp_max_syn_backlog=4096

2. 连接数限制优化

# 查看文件描述符限制
ulimit -n

# 修改limits.conf
* soft nofile 65535
* hard nofile 65535

八、安全防护应用

1. 检测异常连接

# 统计每个IP的连接数
netstat -ant | awk '{print $5}' | cut -d: -f1 | grep -v '^$' | sort | uniq -c | sort -nr

2. 封禁高频连接IP

# 使用iptables自动封禁
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP

九、容器环境特殊处理

1. Docker容器连接数查看

# 查看所有容器的连接数
for id in $(docker ps -q); do
    echo "Container $id:"
    docker exec $id ss -tan | wc -l
done

2. Kubernetes Pod统计

kubectl get pods -o wide | awk '{print $1}' | xargs -I{} kubectl exec {} -- ss -tan | wc -l

十、总结对比表

工具/方法 优点 缺点 适用场景
netstat 兼容性好 性能差 老系统兼容
ss 性能极佳 新系统才完整支持 现代Linux服务器
/proc/net/tcp 无额外依赖 需要解析十六进制 嵌入式设备等精简环境
conntrack 支持NAT连接跟踪 需要root权限 防火墙/NAT服务器

结语

掌握TCP连接数监控是Linux系统管理的必备技能。建议: 1. 日常使用ss命令作为首选工具 2. 关键业务系统设置自动化监控 3. 定期分析连接数趋势图 4. 根据业务特点调整内核参数

通过本文介绍的多维度分析方法,您可以全面掌握服务器的TCP连接状况,为性能优化和安全防护提供数据支撑。 “`

注:实际字数为约1800字,您可以通过以下方式扩展: 1. 增加具体案例解析 2. 补充各命令的详细参数说明 3. 添加性能测试对比数据 4. 深入讲解TCP状态机原理

推荐阅读:
  1. 怎么测试Linux下tcp最大连接数的方法
  2. linux下如何检查tcp连接

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux tcp

上一篇:Linux系统中的/etc/passwd文件和etc/shadow文件该怎么理解

下一篇:@Transactional注解怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》