net 在做什么
net 按网段匹配地址,值可以写成带前缀长度的形式(net 10.0.0.0/8),也可以写成传统掩码写法。它同样支持 src net 与 dst net 限定方向。常见误用是省略掩码:net 10 会被按地址类别补全成很大的范围,命中面远超预期。IPv6 网段要用 ip6 net 或直接写带前缀的地址,不能与 IPv4 混写在同一个原语里。排查跨机房或跨网段通信时,网段过滤比逐个写地址高效得多。
基本信息
| 双向匹配 | net 10.10.0.0/16 |
|---|---|
| 方向限定 | src net / dst net |
| 简写风险 | net 10 会被补全成默认掩码,命中范围容易超出预期 |
| IPv6 | net 2001:db8::/32,IPv6 与 IPv4 不可混写 |
| 常用组合 | net 与 port、host 组合收窄范围 |
典型使用场景
- 排查某网段整体访问异常:一次覆盖整个业务网段
- 区分内外网流量:用两个 net 条件分别匹配源与目的
- 排除内部探测流量:not net 10.10.0.0/24 去掉管理网段
- 核对跨机房链路:按源网段与目的网段组合过滤
- 统计某网段的连接量:与端口条件配合做定量分析
常用示例
常用示例
tcpdump -i eth0 -nn net 10.10.0.0/16 # 整个网段
tcpdump -i eth0 -nn 'src net 10.10.0.0/16 and dst port 443' # 网段发往 443
tcpdump -i eth0 -nn 'net 10.10.0.0/16 and net 172.16.0.0/12' # 两个网段之间
tcpdump -i eth0 -nn 'net 10.10.0.0/16 and not net 10.10.9.0/24' # 排除子段
tcpdump -i eth0 -nn 'dst net 203.0.113.0/24' # 只看目的网段
tcpdump -nn -r a.pcap 'net 192.168.0.0/16' # 离线读时同样可用写法与命中范围
| 写法 | 命中范围 | 说明 |
|---|---|---|
| net 10.0.0.0/8 | 该网段全体地址 | 推荐写法,范围明确不含糊 |
| net 10.10.0.0/16 | 某业务网段 | 跨机房排查最常用的粒度 |
| net 10.10.1 | 按传统类别补全掩码 | 容易超出预期,避免使用这一类简写 |
| src net 与 dst net | 单向匹配 | 区分请求来源与目的位置 |
| net 加 not | 排除某个网段 | 去掉管理网与探测源 |
| ip6 net 2001:db8::/32 | IPv6 网段 | 与 IPv4 分开书写 |
写网段一律带前缀长度,既避免歧义,也让别人一眼看出你覆盖了多少地址。排查完成后把实际命中范围写进结论,方便复核。
IPv6 网段不能与 IPv4 写在同一个 net 原语里。双栈环境排查时要分别写两条命令,或者用 ip 与 ip6 关键字明确地址族。
与地址族关键字组合
与地址族关键字组合
tcpdump -i eth0 -nn 'ip net 10.10.0.0/16' # 明确限定 IPv4
tcpdump -i eth0 -nn 'ip6 net 2001:db8::/32' # 明确限定 IPv6
tcpdump -i eth0 -nn 'net 10.10.0.0/16 and arp' # 只看该网段的地址解析
ip route show # 对照本地路由表确认网段划分判读要点
- 网段条件命中量很大时先叠加端口再统计,否则数据量会拖慢分析
- 内网与公网地址混用时,用两个 net 条件配对可精确定位跨边界流量
- 注意网段划分与实际地址规划是否一致,写错一个字节就会得到完全不同的结果
- 排除条件加太多时容易漏掉目标流量,建议先看全量再逐步收窄