摘要

  • RFC 3378 记录了 EtherIP:它只在以太网帧前加一个 16 位首部,再用 IPv4 协议号 97 把帧送过路由网络。
  • 这个首部不提供对端认证、内层完整性、序列、隧道控制或环路防护。解封成功只能证明字节抵达网关,不能证明安全的同一个 LAN 已经跨过远方。

以太网帧看起来像局域网的完整单位:有源地址、目的地址、类型和载荷。但局域网的很多意义从来不在帧内。线缆、交换机、管理边界和邻居假设,共同决定一项本地协议是否安全。EtherIP 保留帧,却把这层地方性抽走了。

RFC 3378 于 2002 年 9 月以 Informational 身份发布,记录的是 1991 至 1992 年设计并实现的早期协议,也为 IANA 分配 IP 协议号 97 提供历史背景。作者明确指出,新的设计应优先考虑后来第二层隧道和伪线工作组的标准路线成果。

格式极小。IPv4 首部把 Protocol 设为 97,后面是四位版本号三和十二位保留零,再后面才是完整 Ethernet 或 IEEE 802.3 帧,但不带原 FCS。接收者要丢弃版本或保留位不符的报文,抽出帧,为远端局域网传输重新计算 FCS。

这些检查只证明语法。版本三和十二个零不会识别发送者,不会授权某个 MAC,也不会说明为什么这帧应该跨越。协议里没有会话标识、序号、重放信号、协商机制或内层校验字段。

FCS 的消失制造了一条证据断点。入口处原链路的 FCS 不进入隧道。RFC 3378 还说明 IPv4 首部校验和并不保护封装的以太网帧,因此期待帧内的更高层协议提供完整性。出口新算出的 FCS 即使完全正确,也只证明新的本地发送;它无法回溯证明隧道中从未发生改变。

终端可以选择自己的部分帧。类似网桥的站点则可混杂监听整个 LAN,再依据源 MAC、目的 MAC、EtherType 或 VLAN 信息决定是否封装。本地可达或能由正常路由处理的流量不必进入隧道。选择规则属于现场政策,不在 16 位首部中。

发送端还要知道远端 EtherIP 站点的 IP 地址,通常需要由目的 MAC 推导。RFC 3378 没有规定统一发现或映射服务。因此,一个格式正确的报文依赖两份外部答案:哪些帧应进入,以及哪个远端网关代表目的地。

网桥模式最危险的是无限循环。多个网关可能不断捕获、封装、解封和再注入同一帧,广播与组播尤其容易触发。文件要求拓扑限制为树,却把建树任务留给配置人员。EtherIP 自己没有生成树协议,也没有能在错误结构中耗尽的跳数。

于是,每台设备都可能忠实执行本地规则,整体仍把帧送回已经走过的网段。封装越成功,错误复制越快。计数器可以不断增长,却不表示应用取得任何进展。

安全边界也被拉长。文件警告,防火墙放行 EtherIP 可能开启任意通信。只在同一物理 LAN 上勉强可接受的弱保护,会因远端网段被模拟成邻居而放大。RFC 3378 以当时的 VRRP 为例,并建议可用 IPsec 保护外层报文。

RFC 2401 描述当时的 IPsec,RFC 4301 后来取代它。外层保护可以认证隧道对端并保护传输,却不能替代帧选择、远端注入授权、树形拓扑或应用结果的验证。

RFC 2003 的 IP-in-IP 与 RFC 2784 的 GRE 提供同期比较。RFC 3931 后来为 L2TPv3 定义控制连接和会话,RFC 3985 给出伪线架构,RFC 4448 讨论以太网伪线。这些是后来的设计背景,不是 EtherIP 自动获得的能力,也不证明其部署。

RFC 2119 的 MUST 也只在这份文件的范围内有效:正确填写字段,错误时丢弃。IANA 登记让 97 可解释,却不证明防火墙放行、对端可信或服务普及。

Lu Heng 的最小初始规范框架解释了极小格式的价值:先规定互通所需的最少共同部分。现实层级框架则要求把选择、封装、对端准入、路由、完整性、解封、FCS 重建、远端注入和终端接收逐层查证。

EtherIP 搬走的是一只信封。LAN 仍然是拓扑、管理、信任和物理后果的组合。十六位足以让帧跨越 IP,却不足以让远方变成本地。

来源