关于透明代理
有没有哪种代理软件可是实现透明代理,并且要做到服务器要使用客户的真实IP向internet发送请求。试过squid的透明代理模式达不到要求。
我更想知道代理服务器要使用客户IP发送请求时用什么原理来实现呢?也就是服务器要用非本机IP发起connect()? NAT ? :em14::em14: 回复 2# q1208c
问题是经过代理之后 我哪里知道用户源IP是多少?
本帖最后由 phanx 于 2014-07-13 01:19 编辑
回复 3# 飞机塞进菊花
一种方式是透明代理会在 HTTP的头里面加上X-Forwarded-For 字段,包含client的真实地址,这样 Web 程序可以从这个获得。 但这个只对基于HTTP的应用有效,这也是最常见的识别代理后面客户端真实源地址的手段。
另外就是 反向代理, 在透明模式下,反向代理可以实现保留客户端的源地址,但这都是靠近Server端的行为。
具体可以参考http://blog.loadbalancer.org/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/
很多商业的代理服务器 例如 BlueCoat ProxySG, Riverbed SteelApp Traffic Manager, Oracle Enterprise Gateway 等都提供了这种反向代理保留客户端源地址。
传统意义上的正向代理类似squid常用的正向模式,squid必须作为客户端前面的唯一网关设备,那么在理论上才能够实现保留源地址的透明模式代理。
RFC 1919 Classical versus Transparent IP Proxies 也提到了这种透明的IP代理。但很遗憾,目前我还不清楚有什么软件能够实现。
看你前面的帖子提到了haproxy配置反向代理,是不是要让haproxy后面的server获得真实的客户机地址呢?如果是的话,那么可以参考一下我上面提供的地址。
随便说一下RHEL 6.5内核和iptables已经支持TRPXOY,RHEL 6.5自带的haproxy 1.4.24-2 默认也已经加入了TPROXY支持,不用自己重新再重新编译一堆东西了。
https://rhn.redhat.com/errata/RHBA-2013-1619.html 即然是代理, 为什么还要使用客户端原ip发送呢?
乙是甲的代理,甲让乙代理自己发一封信,但乙却完全以甲的身份发了信。
这会引申出另一个问题:
收信人不知道乙的存在, 回信直接给到甲。
你的代理是单向的 只要保证在回信给甲的路上,乙能够截获这封信,然后改的让甲以为是乙帮他发的就行了。
代理使用客户端的源地址可以提供给server真实的信息,这样对于某些例如限定IP地址才可以登录或者基于不同IP地址有不同策略的程序就需要代理支持不隐藏客户端源地址。
页:
[1]