网页服务器记录一个地址,所有人都假定它属于网关自身的进程。它也可能属于一个被转发的客户端,其私有地址在转换环节消失了。目标只能看到可见的网络源,别的什么也看不到。这是一个关于边界的陈述,而不是“来源永远无法确定”的主张。

目标实际看到的是什么

设想一个位于 10.20.0.7 的客户端、一个外部地址为 198.51.100.10 的网关,以及互联网上的一个目标。如果网关转换了客户端的源地址,目标端的套接字记录的便是 198.51.100.10。私有地址从数据包中消失,目标无法再从该报头读回它。这些数字只是示例,并非从你的网络抓取的记录。

这一观察仍然有用:它指出了目标必须放行或封禁的网络源。它只是没有指出其背后的人或进程。对目标方的运营者来说,这一区分决定了封禁是网络层面的决定,还是账户层面的决定。

转换状态对目标不可见

网关保存着转换后的连接与原始客户端之间的映射,而目标恰恰缺少这一状态。传统的 NAT 描述 把转换记录与之后可见的报头分开。读了一侧,并不等于得到另一侧。

不同的设计会产生不同的证据。保留源地址的路由流量会显示客户端的真实地址,而应用代理会终止连接并新建一条连接。保留源的路由还要求客户端地址能从目标端反向路由,而这并非每种部署都能提供。在解读一行日志之前,先问清楚部署的是哪种设计。

conntrack -L -s 198.51.100.10
tcpdump -ni eth0 host 198.51.100.10

TTL 和指纹是线索,不是证据

IPv4 的 TTL 取决于发送方选择的初始值以及数据包经过的跳数。缺少这两个事实,单凭一个值无法证明发生过 VPN 跳转。已知的额外路由跳也无法区分 LAN 路由器、隧道路径或其他转发安排。把 TTL 差异当作问题,而不是结论。

其他信号也是如此。User-Agent 报头可以由应用设置,时间上的相似可能反映共享的基础设施,而不是同一个人。多个用户可能共用一个出口,一个用户也可能在会话之间更换路径。合在一起,若干弱信号或许值得更仔细地查看网关记录,但它们不会因为累积就变成强证据。

按身份授权,而不是按地址

如果目标必须把网关管理与远程用户活动区分开,就为这些角色分配各自经过认证的身份和获准的操作。共享的公网源仍然可以作为网络限制,但它不能替代对用户或设备的认证。

让证据带着标签:观察到的源、经过认证的账户、时间以及正在考虑的推断。不要把“此处看不到内部源”翻译成“任何地方都无法归因”。几个月后,当初没有参与调查的人读到记录时,标签很重要。

记录观察的日期以及产生该记录的系统。没有归因的日志片段,日后很难为之辩护。

相关文章