设为首页 - 加入收藏 安康站长网 (http://www.0915zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 系统 手机 打造 优势
当前位置: 首页 > 幸运飞艇倍投靠谱吗 > 外闻 > 正文

服务器如何获取真实客户端 IP

发布时间:2019-01-01 15:22 所属栏目:[外闻] 来源:键盘侠之路
导读:0x01 先查个问题 测试环境微信支付通道提示网络环境未能通过安全验证,请稍后再试,出现这种情况一般首要 想到可能是双方网络交互中微信方验参与我们出现不一致,翻了下手册确定是这类问题开始排查环节。 1.可能获取真实IP方式错误 getenv('HTTP_CLIENT_IP

?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]

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章