openwrt路由器的连接数
查看连接数的方法
1. 直接统计总连接数
# 统计当前所有连接跟踪条目总数
wc -l /proc/net/nf_conntrack
# 或者更精确地(去掉表头)
cat /proc/net/nf_conntrack | wc -l
2. 按连接状态统计
# 按 TCP 状态分类统计
cat /proc/net/nf_conntrack | awk '/tcp/ {print $5}' | sort | uniq -c | sort -rn
# 按协议类型统计
cat /proc/net/nf_conntrack | awk '{print $3}' | sort | uniq -c | sort -rn
3. 查看 conntrack 表大小和占用率
# 查看当前连接跟踪数
cat /proc/sys/net/netfilter/nf_conntrack_count
# 查看最大连接跟踪数(表大小)
cat /proc/sys/net/netfilter/nf_conntrack_max
# 计算占用百分比
echo "当前连接数: $(cat /proc/sys/net/netfilter/nf_conntrack_count)"
echo "最大连接数: $(cat /proc/sys/net/netfilter/nf_conntrack_max)"
4. 使用 conntrack 工具(更直观)
如果系统安装了 conntrack-tools:
# 安装
# Debian/Ubuntu: apt install conntrack
# OpenWrt: opkg install conntrack
# 统计总连接数
conntrack -C
# 按协议统计
conntrack -L -p tcp | wc -l
conntrack -L -p udp | wc -l
# 查看连接状态分布
conntrack -L -o extended | awk '{print $4}' | sort | uniq -c
5. 实时监控连接数变化
# OpenWrt 上的 watch 包名
opkg install procps-ng-watch
# 或者安装完整的 procps-ng 套件
opkg install procps-ng
# 每秒刷新显示当前连接数
watch -n 1 'cat /proc/sys/net/netfilter/nf_conntrack_count'
# 或者同时显示详细信息
watch -n 1 'echo "当前连接: $(cat /proc/sys/net/netfilter/nf_conntrack_count) / $(cat /proc/sys/net/netfilter/nf_conntrack_max)"'
输出字段说明
cat /proc/net/nf_conntrack 的典型输出格式:
plain复制
ipv4 2 tcp 6 431999 ESTABLISHED src=192.168.1.2 dst=1.2.3.4 sport=54321 dport=443 src=1.2.3.4 dst=192.168.1.2 sport=443 dport=54321 [ASSURED] mark=0 use=1
| 字段 | 含义 |
|---|---|
ipv4 |
地址族 |
2 |
协议编号(TCP=6, UDP=17) |
tcp |
协议名称 |
6 |
协议号 |
431999 |
超时时间(秒) |
ESTABLISHED |
连接状态 |
src/dst/sport/dport |
源/目的 IP 和端口 |
路由器上的实用场景
# 查看某个 IP 的连接数(如内网某台设备)
cat /proc/net/nf_conntrack | grep "src=192.168.1.100" | wc -l
# 查看某个端口的连接数
cat /proc/net/nf_conntrack | grep "dport=443" | wc -l
# 查看处于 TIME_WAIT 状态的连接
cat /proc/net/nf_conntrack | grep "TIME_WAIT" | wc -l
如果你的路由器是 OpenWrt,也可以直接通过 Web 界面查看:
状态 → 防火墙 → 连接跟踪(需要安装 luci-app-conntrack)。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
微信
支付宝