Apache 日志显示 NAT 服务器地址而不是真实请求者 IP

tha*_*awg 4 log-files apache-2.2

我的 Apache 服务器位于具有 NAT 转换的防火墙后面。我遇到的问题是我想查看谁实际上发出了请求,而不是我的防火墙地址。很高兴知道防火墙正在工作,但要真正了解流量模式,我需要查看真实世界的 IP 地址。

更新

防火墙是一个 CentOS 5.2 盒子,使用由 fwbuilder 创建的 iptable 规则。

iptables 响应所有接口上的请求,Squid 仅在面向内部的接口上运行。

Jam*_*ger 5

我在代理服务器和负载均衡器中看到过这种情况。通常的情况是入站流量通过代理到达 Web 服务器,但 Web 服务器的默认网关不是代理。通过执行反向 NAT,Web 服务器获取代理的 IP 而不是客户端的 IP。由于它将有一条到代理的路由(实际上可能位于同一子网中),因此可以确保它始终可以将返回流量返回到客户端。

解决此问题的一种方法是让代理将包含客户端真实 IP 的自定义 HTTP 标头插入到 Web 服务器可以解析的 HTTP 请求中。对于 Apache,修改语句LogFormat以使用%{Custom-Header}而不是%h. 当然,这取决于您的设备实际上是否支持 HTTP 并能够将任意标头插入 GET/POST/ 等。要求。这是代理和负载均衡器的常见功能,但对于防火墙来说则不然。此外,除非您的设备正在执行 SSL 终止,否则它不会帮助您处理 HTTPS 请求。正如凯尔所说,我们需要更多地了解您的防火墙。