代理如何在不伪造 IP 的情况下改变你的出口 IP
了解为什么即使客户端没有在数据包中伪造源地址,网站看到的仍是代理地址。
“伪造我的 IP”常被随口用来表示“让网站看到另一个地址”。正向代理可以做到后者而不做前者。
在普通的显式代理配置中,你的计算机使用真实网络路由连接到代理。代理再向目标打开另一条连接。目标收到的连接来自代理的出站地址,或来自其前面的 NAT 设备。
Your application -- connection A -- proxy -- connection B -- website
连接 A 和连接 B 并不是同一条 TCP 连接上刷了一层地址标签。它们各有自己的传输状态。代理可以转发相同的应用字节,但周围的 TCP 分段、确认时序和包边界并不相同。
为什么回程流量仍然可用
网站沿连接 B 回复。代理收到这些回复,并把相关数据沿连接 A 送回。两段连接各有一个能在其使用的地址上接收流量的参与者。
伪造数据包的源地址是另一种操作。它改变的是接收方会把响应发往哪里。普通的 TCP 连接建立依赖收到握手响应;仅仅把别人的地址写进出站数据包,并不能在那个地址上提供可用的 Web 会话。TCP 规范定义了这种连接建立过程。
一个可见地址并不是身份故事的全部
网站仍可能收到账号凭据、Cookie 或转发信息。代理仍然接收客户端的连接。这些事实并不会把该操作变成源地址伪造;它们说明,改变目标所观察到的网络对端,比让整个交互匿名要窄得多。
排查问题时,要问是哪个连接、哪个观察者产生了地址。“我的 IP 变了”只有在确定它是在哪里被观察到的之后才有用。