加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

处事器怎样获取真实客户端 IP

发布时间:2018-12-20 22:02:40 所属栏目:业界 来源:键盘侠之路
导读:0x01 先查个题目 测试情形微信付出通道提醒收集情形未能通过安详验证,请稍后再试,呈现这种环境一样平常主要 想到也许是两边收集交互中微信方验参加我们呈现纷歧致,翻了动手册确定是这类题目开始排查环节。 1.也许获取真实IP方法错误 getenv('HTTP_CLIENT_IP
副问题[/!--empirenews.page--]

 0x01 先查个题目

测试情形微信付出通道提醒收集情形未能通过安详验证,请稍后再试,呈现这种环境一样平常主要 想到也许是两边收集交互中微信方验参加我们呈现纷歧致,翻了动手册确定是这类题目开始排查环节。

1.也许获取真实IP方法错误

  • getenv('HTTP_CLIENT_IP')
  • getenv('HTTP_X_FORWARDED_FOR')
  • getenv('REMOTE_ADDR')
  • filter_var($remote_ip, FILTER_VALIDATE_IP)
  • 已经依次获取并过滤
  • 固措施没有任何题目,往上发散

处事器怎样获取真实客户端 IP

2.是否反向署理

颠末反向署理后,因为在客户端和web处事器之间增进了中间层,因此web处事器无法直接拿到客户端的ip,只能通过$remote_addr变量拿到的将是反向署理处事器的ip地点,搜查不存在此类题目,再往上,善于收集工程的同窗暗示毫不认输

3.也许NAT分派出口IP,或负载平衡处事分发呈现非常

  1. # 本机IPifconfig | grep -A 1 "en" | grep broadcast | cut -d " " -f 2 
  2. # 外网IPcurl --silent http://icanhazip.com 
  3. netstat -tn|grep 80|akw '{print $5}'|awk -F '{print $1}' | grep [当地IP] 

这里呈现题目,竟然没有我的IP,再以nginx $remote_addr拿到的IP作为参考,这是nginx最后一次握手的IP,$remote_addr = 10.168.0.0/16 段 在nginx处打印$remote_addr,并在server_name添加当前呆板ip,别离以负载平衡IP与当地IP做测试,最终确定题目呈此刻负载平衡处事器呈现非常

搜查与80端口成立毗连方针都有谁

先拿到我当地内网外网IP 利便之后题目排查

0x02 LNMP栈拿真实IP

LNMP栈内PHP全部获获得的TCP操纵信息都是由前面Nginx通过fastcgi转达给它的,就好比$_SERVER['REMOTE_ADDR']由include fastcgi.conf;引进,其便是nginx的$remote_addr

Nginx中的几个变量:

  • $remote_addr

代表客户端的IP,,但它的值不是由客户端提供的,而是处事端按照客户端的ip指定的,icanhazip的道理也是这样, 当你的赏识器会见某个网站时,假设中间没有任何署理,那么网站的web处事器就会把remote_addr设为你在公网袒露的IP,假如你用了某个署理,那么你的赏识器会先会见这个署理,然后再由这个署理转发到网站,这样web处事器就会把remote_addr设为这台署理呆板的IP, 除非署理将你的IP附在哀求header中一路转交给web处事器。

  • $proxy_add_x_forwarded_for

$proxy_add_x_forwarded_for变量包括客户端哀求头中的"X-Forwarded-For",与$remote_addr两部门,他们之间用逗号分隔。X-Forwarded-For(简称XFF),X-Forwarded-For 是一个 HTTP 扩展头部。RFC 2616 协议并没有对它的界说,它最开始是由 Squid 这个缓存署理软件引入,用来暗示 HTTP 哀求端真实 IP。现在它已经成为究竟上的尺度,被各大HTTP 署理、负载平衡等转发处事普及行使,并被写入 RFC 7239(Forwarded HTTP Extension` 尺度之中。

  • $proxy_set_header

已在排盘查题中声名,可配置署理后 header

  1. proxy_set_header Host $http_host;  proxy_set_header X-Real-IP $remote_addr;  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  proxy_set_header X-Forwarded-Proto $scheme; 
  • X-Real-IP

一样平常好比X-Real-IP这一个自界说头部字段,凡是被 HTTP 署理用来暗示与它发生TCP 毗连的装备 IP,这个装备也许是其他署理,也也许是真正的哀求端,这个要看颠末署理的层级次数或是是否始终将真实IP一起传下来。(紧记:任何客户端传上来的对象都是不行信的)

当多层署理或行使CDN时,假如署理处事器不把用户的真实IP转达下去,那么处事器将永久不行能获取到用户的真实IP。

0x03 用户的真实IP从何而来

1.宽带供给商提供独立IP 好比家里电信宽带上网,电信给分派了公网ip,那么一个哀求颠末的ip路径如下:

  1. 192.168.0.1 (用户) –>  
  2.   192.168.0.1/116.1.2.3 (路由器的局域网ip及路由器获得的电信公网ip)–>  119.110.0.0/16 (负载平衡处事器)–>  10.168.0.0/32  (营业处理赏罚处事器) 

这种环境下,119.147.19.234 会把获得的116.1.2.3附加到头信息中传给10.168.0.0/32,因此这种环境下,我们取得的用户ip则为:116.1.2.3。 假如119.110.0.0/16没有把116.1.2.3附加到头信息中传给营业处事器,营业处事器就只能取上上一级ip地点

2.宽带供给商不能提供独立IP

宽带提供商没有足够的公网ip,分派的是个内网ip,好比长宽等小的isp。哀求路径则也许如下:

  1. 192.168.0.1 (用户) –>  
  2.   192.168.0.1/10.0.1.2(路由器的局域网ip及路由器获得的运营商内网ip)–>  211.162.78.1  (收集运营商长城宽带的公网ip) 
  3.   119.110.0.0/16 (负载平衡处事器)–>  10.168.0.0/32  (营业处理赏罚处事器) 

这种环境下获得的用户ip,就是211.162.78.1。 这种环境下,就也许呈现一个ip对应稀有十上百个用户的环境了

3.手机2g上网

收集提供商没法直接提供ip给单个用户终端,以中国移动cmwap上网为例,因此哀求路径也许为:

  1. 手机(手机上没法查察到ip)–>  
  2.   10.0.0.172(cmwap署理处事器ip)–>  10.0.1.2(移动运营商内网ip)–>  202.96.75.1(移动运营商的公网ip)–>  119.110.0.0/16 (负载平衡处事器)–>  10.168.0.0/32  (营业处理赏罚处事器) 

这种环境下获得的用户ip,就是202.96.75.1。2008年的时辰整个广东联通就三个手机上网的公网ip,因此这种环境下,统一ip呈现数十万用户也是正常的。

有几万或数十万员工的公司,这种也会呈现来自统一ip的超多用户,也许到达几万人,但出口IP也许就那么几个。

0x04 NAT [Network Address Translation]

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读