True-Client-IP和X-Real-IP

网络数据包千奇百怪,特别是7层HTTP信息,我膜拜一下,再一次重新读一遍这个全称Hypertext Transfer Protocol,超文本传输协议

一个真实的用户,通过了几层代理服务器的话,HTTP头部有可能会放一个X-Forwarded-For域,可以查到真实的IP,今天又碰到了另两个类似名字的域

True-Client-IP

根据这个域的名称,我觉得应该代表的就是用户的真实IP,假如经过了代理服务器,HTTP头部的X-Forwarded-For域包含了几层IP地址,那么最左边的一个IP地址应该就是True-Client-IP,但是HTTP域都以\r\n结束,所以应该补在IP地址末尾

如果这种说法成立,HTTP包头只要有True-Client-IP这个字段,肯定还有X-Forwarded-For这个字段才对,否则不是吃多了没事做,不过网络这东西就是太多不可思议,太多奇怪的数据包了,所以不能一概而论,还是通过解析结果查看

由于这个字段不是太好通过wireshark过滤条件得到,推荐命令行通过tshark将整个数据包完整信息打印出来,重定向到文件中分析,命令是:

tshark -r pcap_file_name -V > pcap.txt

这样就将详细信息都保存起来了,然后搜索True-Client-IP字段:

 306446 Hypertext Transfer Protocol
 306447     GET /do_not_delete/nocbig.jpg HTTP/1.1\r\n
 306448         [Expert Info (Chat/Sequence): GET /do_not_delete/nocbig.jpg HTTP/1.1\r\n]
 306449             [Message: GET /do_not_delete/nocbig.jpg HTTP/1.1\r\n]
 306450             [Severity level: Chat]
 306451             [Group: Sequence]
 306452         Request Method: GET
 306453         Request URI: /do_not_delete/nocbig.jpg
 306454         Request Version: HTTP/1.1
 306455     X-Akamai-TestObject: true\r\n
 306456     True-Client-IP: 127.0.0.1\r\n
 306457     Pragma: no-cache\r\n
 306458     X-Akamai-CONFIG-LOG-DETAIL: true\r\n
 306459     TE:  chunked;q=1.0\r\n
 306460     Connection: TE\r\n
 306461     Accept-Encoding: gzip\r\n
 306462     Akamai-Origin-Hop: 2\r\n
 306463     X-Forwarded-For: 127.0.0.1, XX.XX.XX.XX\r\n

的确可以搜到True-Client-IP的IP地址就是X-Forwarded-For的第一个IP地址

 

X-Real-IP

这名字看上去也是真实IP地址,真是渴望有一个nginx专家此刻就在眼前,好吧,事实胜于雄辩,还是拿数据包开刀,同样重定向文件,搜索字段

52321828 Hypertext Transfer Protocol
...(省略)
52321836         Request Version: HTTP/1.1
52321837     Host: ...(省略)\r\n
52321838     X-Real-ip: 11.22.33.44\r\n
52321839     Accept: */*\r\n
52321840     Referer: ...(省略)\r\n
52321841     Accept-Language: zh-cn\r\n
52321842     Accept-Encoding: gzip, deflate\r\n
52321843     User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; CIBA; TheWorld)\r\n
52321844     [truncated] Cookie: ...(省略)
52321845     X-Forwarded-For: 10.20.30.40\r\n
52321846     X-Forwarded-For: 1.2.3.4\r\n
52321847     X-Forwarded-For: 20.30.40.50\r\n

看到这信息我也是醉了,居然和X-Forwarded-For的第一个IP不一致(这里所有IP地址我经过了修改,但事实就是X-Real-IP并不在XFF里),此刻顿时知道了自己的渺小了,看样子根本没自己想的那么简单,难道有些是伪造的?

发表回复