网络数据包千奇百怪,特别是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里),此刻顿时知道了自己的渺小了,看样子根本没自己想的那么简单,难道有些是伪造的?