4. 弹性网络接口与流量镜像
在 AWS 的 VPC 中,实例真正“接入网络”的落点并不是 EC2 本身,而是弹性网络接口(Elastic Network Interface,ENI)。ENI 是一个绑定在子网内的虚拟网卡,承载私有 IPv4/IPv6 地址、MAC 地址、安全组、源/目的检查等属性。理解 ENI,是理解多网卡、流量镜像以及生产抓包定位的基础。
一、ENI 的类型与关键属性
按用途和生命周期,生产环境常见的 ENI 可分为几类:
- 主网络接口(Primary ENI):创建实例时自动生成,eth0 对应它,实例的默认私有 IP 与主 MAC 都绑定在此,通常不可分离。
- 辅助网络接口(Secondary ENI):可独立创建并热挂载/卸载,用于多网卡、双栈、管理面与业务面分离等场景。
- 流量镜像目标 ENI:作为镜像会话的接收端,通常挂在专门的抓包/分析实例上。
- 服务托管 ENI:由 NAT 网关、ALB/NLB、Lambda、RDS 等服务自动创建,用户一般只读,不应手动改动。
每个 ENI 的核心属性包括:所在子网、私有 IP(可多个)、弹性 IP 关联、MAC 地址、安全组集合、Source/Destination Check、以及是否启用流量镜像。其中源/目的检查尤其关键:当 ENI 需要转发“不是发给自己的”流量(如 NAT 实例、防火墙实例、镜像目标)时,必须关闭该检查,否则内核会丢弃转发包。
二、多网卡绑定的实践要点
多网卡常用于:管理流量与业务流量分离、跨子网部署、构建自建 NAT/防火墙、以及作为流量镜像接收端。绑定辅助 ENI 时需注意:
- 辅助 ENI 必须与实例处于同一可用区,但可位于不同子网。
- 实例类型决定可挂载的 ENI 数量上限,例如
c5.large最多 3 张网卡,m5.4xlarge可达 8 张,规划前先查实例规格。 - Linux 中辅助网卡通常显示为
eth1、ens5等,需确认其路由与策略路由,避免默认路由被覆盖。 - 多网卡实例的默认路由只能走主网卡,若要让辅助网卡承载出向流量,需配置策略路由(ip rule + 独立路由表)。
下面这张图展示了 ENI 与实例、子网、安全组、镜像会话之间的结构关系,以及多网卡与镜像目标的数据流向:
三、流量镜像配置流程
流量镜像(Traffic Mirroring)用于把 ENI 上的入向/出向流量复制到指定目标,是生产环境无侵入抓包的核心手段。配置分三步:
- 创建镜像目标:指定接收流量的目标 ENI(或 NLB)。目标 ENI 所在实例需关闭源/目的检查,并放行来自镜像源的 UDP 4789 端口(VXLAN 封装)。
- 创建镜像过滤器:定义要复制的流量,可按方向(ingress/egress)、协议、源/目的 CIDR、端口范围过滤。例如只镜像
TCP 443出向流量,可显著降低开销。 - 创建镜像会话:绑定源 ENI、过滤器、目标 ENI,并设置会话编号(同一源 ENI 最多 3 个会话)。会话建立后状态变为
Active。
四、生产环境抓包与故障定位
假设某 Web 实例(主 ENI 10.0.1.10)出现间歇性 502,需要定位是客户端、实例还是后端问题。可按以下方式操作:
# 在抓包分析实例上监听镜像目标网卡
sudo tcpdump -i eth0 -nn -s 0 -w /tmp/mirror.pcap udp port 4789
# 若镜像目标直接解封装,可过滤业务流量
sudo tcpdump -i eth0 -nn 'tcp port 443 and host 10.0.1.10'
# 观察 TCP 握手与重置
sudo tcpdump -i eth0 -nn 'tcp[tcpflags] & (tcp-syn|tcp-rst) != 0'
抓包后重点看三类信号:
- SYN 无 SYN-ACK:请求到达实例但未响应,多为安全组、实例内服务未监听或端口未放行。
- 大量 RST:连接被主动拒绝,常见于后端进程崩溃、连接数打满或健康检查失败。
- 重传与乱序:网络路径丢包或 MTU 问题,可结合
tcp.analysis.retransmission过滤。
若镜像会话显示 Active 却抓不到包,排查顺序为:目标实例源/目的检查是否关闭 → 安全组是否放行 UDP 4789 → 过滤器方向是否与预期一致 → 源 ENI 是否真的承载了该流量。生产环境建议把镜像过滤器收窄到必要端口,避免全量复制带来的带宽与成本开销。
五、关键参数速查
| 项目 | 典型值/说明 |
|---|---|
| 镜像封装 | VXLAN over UDP 4789 |
| 单源 ENI 会话数 | 最多 3 个 |
| 目标类型 | ENI 或 Network Load Balancer |
| 源/目的检查 | 镜像目标实例需关闭 |
| 过滤器维度 | 方向、协议、CIDR、端口 |
掌握 ENI 的属性边界、多网卡的路由约束以及镜像会话的配置链路,就能在生产环境中以最小侵入的方式完成抓包与故障定位,把“看不见的流量”变成可分析的证据。