代理服务器是否也为客户端分配内部 IP?

代理服务器是否也为客户端分配内部 IP?

代理服务器在客户端的请求中注入 X-Forwarded-For http 标头。如果 XFF 正在执行其工作以将每个服务器的响应转发给客户端,那么就需要分配内部 IP 并创建 NAT 表。他们是否必须分配内部 IP 才能工作?

答案1

HTTP 代理在应用层工作。NAT 在 IP 层工作。这是两个完全不同的东西,彼此不了解,也不在同一层运行。因此你的问题毫无意义。

当 HTTP 代理收到网页请求时(假设网页尚未在代理的缓存中),它将打开自己的 TCP 连接以连接到目标 HTTP 服务器,发出自己的 HTTP 请求,解析 HTTP 响应,然后将响应转发给客户端,客户端与代理之间有自己的 TCP 连接。HTTP 代理仅理解 HTTP 协议,不会代理任何其他协议(请注意,为了简单起见,我将更令人困惑的内容(如CONNECT或多用途代理)放在一边)。

NAT 则完全不同。通过 NAT 转发 HTTP 连接时,客户端和服务器之间只有一个直接 TCP 连接,NAT 仅负责跟踪哪个内部端点(地址和端口)正在与哪个外部端点(地址和端口)通信。NAT 不会打开 TCP 连接,它不知道 HTTP 是什么,它不会解析请求或响应,当然也不会缓存任何内容。NAT 可以转发任何协议(HTTP、ICMP、DNS……),只要它基于 IP,因为它不需要了解有关协议的任何信息即可运行。

请注意,我在这里仅描述简单的配置。还有更复杂的设置,乍一看可能会令人困惑。一种这样的配置是透明代理(也称为拦截代理),它位于网络路径的中间,并主动拦截客户端尝试与外部建立的 HTTP 连接。当尝试建立此类连接时,透明代理会重写目标地址,以便将连接重定向到代理。此后,一切都像我上面描述的一样。此设置用于强制客户端通过代理,而无需更改其配置。在这种情况下,客户端甚至可能不知道他们的 HTTP 流量正在被代理,而不是简单地进行 NAT。有关拦截代理的更多实用信息,乌贼文档有一个大量信息对这个。

相关内容