我有时会看到一些我不完全理解的交通模式,我希望能够得到一些帮助。
假设我运营一个网站。我查看了 http 站点的日志,发现有一个请求由 squid 代理(标头Via
告诉我有关 squid 的信息)。没问题,有人正在通过 squid 代理。
但随后我查看了 IP。连接 IP (1.2.3.4) 与最终用户实际物理位置一致。但是,X-Forwarded-For
标头显示的 IP 是 — — 为便于讨论 — — EC2 (2.3.4.5)。
因此,这可以告诉我,使用 2.3.4.5 的人正在通过代理连接到在 1.2.3.4 上运行的 squid。但这没有意义,因为我知道此人位于 1.2.3.4。因此,总体而言,看起来像是 1.2.3.4 上的某个人在 EC2 上使用 squid,它会执行某些操作(可能是安全操作?),添加 XFF 和 Via 标头,然后通过隧道返回 1.2.3.4 并进入互联网。
最后一种情况似乎很复杂(并且增加了一个额外的“跳跃”,速度非常慢),但也许我错过了一些 IT 部门可能决定做的用例或设置。
有人知道发生了什么吗?谢谢!
附言:我们假设没有欺骗标头!因为这种情况确实经常发生,尽管我称之为极端情况。
答案1
我能想到两种情况。
- 您或您的托管服务提供商正在使用反向代理
- 您的客户端位于“公司”代理后面(或通过使用 squid 的 ec2 实例模拟 vpn 出口节点 - 又称复杂的穷人 vpn)
第三种是将以上两种结合起来:
- 有人通过公司代理通过反向代理连接到您的网络服务器。
可能X-Forwarded-For
会显示客户端以及代理 IP 地址,如下所示:X-Forwarded-For: client, proxy1, proxy2
。通常,此标头对于日志分析器等很有用,以便获得用于分析或其他目的的原始 IP,如果您有反向代理,则必须正确设置它,以免将所有内容都记录为来自它。该行上的最后一个 IP 应该是倒数第二个代理。如果您在那里只获得一个 IP,则配置不正确或只有一个跳转。
如果请求已经来自公司代理(情况 2),则根据配置,它可能会到达您的反向代理(情况 1),并且如果反向代理在添加它自己的标头之前没有清理标头,则最终会出现令人困惑的标头(情况 3)。
在我看来,最可能的情况可能是有人正在使用 EC2 实例(如果您指的是亚马逊服务,但任何 VPS 都可以)作为代理以避免某种阻塞。
资料来源:
- https://en.wikipedia.org/wiki/X-Forwarded-For
- https://supporthandbook.wordpress.com/2011/01/10/using-squid-hosted-on-ec2-to-bypass-corporate-proxy/
- http://hackingonstuff.net/post/23929749838/setting-up-a-squid-proxy-on-aws
- http://blog.spench.net/2010/02/24/tips-for-setting-up-squid-in-reverse-proxy-web-accelerator-accel-mode/
答案2
经过一番挖掘,我可以得出结论,这种情况通常不存在,而是由于错误的网络或 squid 配置造成的:
- squid 总是插入一个随机的 XFF
- 网络内部寻址使用公共 IP,而不是私有 IP