三个条件决定实验室路由器的端口转发能否真正对外发布:上游边缘究竟交付了什么、它执行什么策略,以及回程是否走同一条路径。一个看起来像公网的地址,回答不了其中任何一条。/30 前缀或可用的出站连接同样回答不了。先厘清这些条件再动 NAT,否则当阻断发生在两跳之外时,本地规则会显得莫名其妙地失效。

三个答案决定你该找谁升级处理

上游所有者描述交付方式,无非三种。目的地址直接交付到你的接口;一段独立前缀被路由到你的下一跳;或者前方有设备在地址到达你之前做了转换。每种答案指向的、必须放行入站连接的设备不同,出问题时该找的团队也不同。

过滤是第四个变量,与前三者相互独立。网络可以过滤保留公网地址的流量,而做地址转换的设备并不自动成为策略边界。询问交付方式的同时,也要问允许的源地址、传输协议和端口,因为被边缘丢弃的转发端口根本到不了你的规则。

把交接读成一份服务契约

动手改实验室路由器之前,先写下五个值:分配到的接口地址、前缀长度、下一跳、外部客户端使用的目的地址,以及确切的协议和端口。最值得关注的是目的地址,因为它可能根本不是你设备上配置的那个地址。如果上游期望客户端访问的是转换后的地址,本地 DNAT 就必须对齐这份契约,而不是你看到的接口地址。

IETF 关于防火墙行为的讨论提醒我们,过滤与转换是两件不同的事。它解释了路由器为何能在不隐藏地址的情况下执行入站策略,也解释了上游某处的 NAT 为何不能证明过滤就发生在那里。请把交接当作一份带责任方和变更流程的服务说明。

在两个边界上观察一次尝试

一次范围很小、经过批准的尝试,在两个点上做关联,胜过一堆猜测。针对确切的五元组在实验室 WAN 接口上抓包,并请上游所有者在边缘观察同一条五元组。两次观察之间的目的地址、协议、端口、源地址和时间戳必须完全一致。

tcpdump -ni wan0 'tcp port 1194 and host 203.0.113.10'

把这对结果当作一次判定来读。边缘看到、实验室 WAN 也看到,说明交付和边缘策略都放行,可以继续检查监听器或 DNAT。边缘看到、实验室 WAN 没看到,指向交付环节或中间策略,下一个该联系的是上游所有者。两处都没看到,说明在问防火墙之前,测试五元组、源地址或路径就已经错了。

一次抓包没有证据,并不等于存在防火墙。它是一个边界结论,告诉你下一个该检查哪台设备。

别让本地 NAT 藏住答案

只有在确认入站可达之后,本地规则才值得深究。确认 DNAT 的目标是 VPN 监听器真实的地址和端口,确认相应协议族的转发已开启,并确认回包从请求进入的那个接口出去。只改写目的地址、不改写回程路径的规则,产生的超时与丢包毫无区别。

排查期间要保留端口安全和生产交接。为了绕过接入控制而更换路由器或伪造其 MAC 地址,是用故障换诊断。镜像端口或经批准的抓包能提供同样的可见性,又不必断开共用这条链路的业务。

最后落在责任地图上:目的地址、交付设备、过滤设备、实验室入口和监听器。这张图能让下一次端口转发评审变得很小,而它对 VPN 本身不构成任何认证。

相关文章