首页/网络/抓包与流量分析速查/tcpdump portrange 端口范围

tcpdump portrange 端口范围

匹配端口区间:portrange 5000-5100,比写一串 or port 更简洁;常用于 RPC、Kubernetes NodePort、数据库代理等端口段场景。

portrange 做什么

portrange 是 pcap 过滤语言里的端口区间原语:tcp portrange 30000-32767 一次覆盖整段端口,比把每个端口用 or 串起来短得多,也不容易漏写。它只按端口号匹配,不涉及应用层内容;区间必须写全起止值。常用于成段分配端口的场景,如 Kubernetes NodePort、RPC 动态端口、数据库代理。

基本信息

适用平台Linux / macOS / BSD 上的 tcpdump 与 libpcap 过滤器
语法[tcp|udp] [src|dst] portrange 起-止
可组合与 and / or / not 及其他原语混用
限制起止值必须都写,区间不支持省略
等价写法port 5000 or port 5001 …(不推荐,改动时易漏)

典型使用场景

  • 排查 Kubernetes NodePort 段(默认 30000-32767)的服务暴露问题
  • 抓取 RPC 框架成段分配的动态端口流量
  • 分析访问 Linux 临时端口段(默认 32768-60999)的连接情况
  • 把一段高位端口作为自定义业务端口段做定向取证

常用示例

常用示例
tcpdump -i eth0 -nn 'tcp portrange 30000-32767' -c 30     # NodePort 段
tcpdump -i eth0 -nn 'udp portrange 5000-5010'               # UDP 区间
tcpdump -i eth0 -nn 'dst portrange 8000-8010 and tcp[tcpflags] & tcp-syn != 0'   # 只抓该段的新建连接
tcpdump -i eth0 -nn 'src portrange 32768-60999' -c 20      # 本机发起的临时端口

常用区间速查

区间典型用途备注
0-1023系统与知名服务端口属于特权端口范围
30000-32767Kubernetes NodePort 默认段集群可配置改动
32768-60999Linux 临时端口默认段由 ip_local_port_range 控制
5000-5010示例 RPC 或自建服务段按实际部署口径调整
区间写法必须完整,portrange 80- 这类省略端点会被过滤器直接判为语法错误并在启动时报出。
区间越宽抓到无关流量越多,先按嫌疑段收窄,必要时再叠加 host 条件。

进阶要点

  • 把 portrange 与 host 组合能显著缩小结果集,排障时先限定对端地址
  • 临时端口段由内核参数决定,容器与宿主机口径可能不同,取值前先确认
  • 统计区间内各端口的流量分布时,先落盘再用 tshark 按端口聚合更准确
  • 加密流量里端口区间只能定位连接方向,看不到业务内容
  • 区间连续变化时改写成参数化脚本,避免手工改错
区间跨度越大过滤器编译与匹配开销越高,能在服务端或镜像口抓就不要在核心链路上全量抓。

易错点

  • 区间过宽等于没有过滤,海量无关包会淹没目标流量并增加丢包风险
  • 把 portrange 与 port 混写在同一条件里却忘了括号优先级,导致逻辑与预期不符
  • 在容器或宿主机不同命名空间抓包:可能一个看到 NAT 前端口、一个看到 NAT 后端口,区间对不上就以为没流量

数据来源与参考

  • man 8 pcap-filter(portrange 原语)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌