00:00
Hello,同学们好,那接下来呢,我们跟大家一起看一下,呃,N和客户端相关的一些配置,首先我们看的第一个呢是呃,我们怎么去获得用户的IP地址,那有同学可能会想啊,那我写一些程序是不是就能够得到用户的IP地址啊,那我们来看这就是嗯,拿Java实现的呃这么一个小程序简单看一下啊,就是通过request这个对象呢,然后拿到一些相关的一些属性,比如说remote相关的remote host port。和address这个相关的这三个呢,其实就是呃,客户端相关的这些信息啊,然后另外还有一个是在header里的X forwardd,然后杠four。这个也是和IP地址相关的,其实这前面这三个啊,就已经能够拿到这个客户端的IP地址了,那我们为什么还要讲呢?因为他在返修代理过程当中,呃,在后端或者是上游的这个服务器,一般来说我们的Java应用都在上游,对吧,处理用户的请求,如果我想要把某个呃IP址加到白名单,或者是加到黑名单,允许他访问或者不允许他访问的话。
01:10
那么这个IP究竟能不能获得得到,我们先看一下这个现象,这个程序我们写好之后呢,先在咱们本地跑一下啊。我们看一下。嗯,然后现在已经起来了,对吧,然后我们访问一下。Local。然后8080。大家看一下这个它显示出来的信息。前面这一堆呢,呃,这里边儿有一个。嗯。这个hier相关的这些信息,然后呢,拿枚举给他给介绍过来,然后接下来给它迭代出来了,这都是hier里边,就是我们这次请求hier里的一些,呃,属性信息,就在请求的过程当中,浏览器会像服务器发过来的,像一些user agent呀,等等等等等到后边这些呢,你像这个remote host,呃remote port和remote a drr这三个呢,其实它都是有数据的,对吧,但是我们能看到好像诶都是0.0.0对吧,然后。
02:22
呃,Pod这是有的对吧,嗯。这个其实就是我们本机访问本机这这个地址对应的就是127.0.0.1了啊嗯。这样看起来好像没什么问题对吧,但是我们看起来不直观,你还可以试一下把这个logo给换成真正的一个IP地址。然后再看它能访回的呢,就是嗯,本机的IP了,对吧,因为我们之前访问的是个是一个这个主机名啊,然后这个呃,当你真正访问IPV4地址的时候,它才会在这里面给我们显示IPV4的是吧。
03:01
啊,这是自己访问自己,这没有问题,能获得到真正的IP啊,但是本机嘛,这还是我们把它部署到咱们的这个,呃,虚拟机上,我们再看一下。在这呢,我们起一个,呃,有Tom k的机器。然后连一下。这个比较干净,就这个零四这台机器是上边也也没什么其他的东西。怎么这么慢,还没起来?零四已经起来了。断开的。可以了,然后把这个我们的这个刚才这段Java代码呢,给它传上去。嗯,你直你直接拷代码肯定不行啊,你如果要用的这个跟我一样sts的话,呃,这边集成的我们常用的一些工具没啊,还有这个spring cloud相关的一些这个组件,我们都不需要额外的去下插件去搞了,对吧,我们在这may store一下,然后他就会帮我们把这个项目,这个外部项目给打包出来。
04:07
这咱们不在这细说啊,打包出来这个位置在这儿。呃,C盘这对吧,我们把这个给它传上去,复制一下它。然后找到我们那个XFDP。然后在这零四是吧,零四连一下。这是零四是吧,然后这。然后找到这个炸包,然后我们把它给传上去。这传闻了是吧,但是没显示是,然后我们刷新一下看看啊,这呢DEMO啊,这名字叫DEMO,这个不重要。然后看一下有没有,这也有,然后起一下知道吧,跟这走。
05:00
正常起来了对吧,然后我们再访问一下,呃,虚拟机里的这个。这个这个这个tomcat。这是104,然后端口号是8080。诶,这个能正常访问,大家看这个remote host的这个地址就已经变了,这是44.1了,对吧,然后等会号,这个我们先暂时不用管,因为每次访问的时候,浏览器都会随机的去搞一个出来。啊,然后这remote a drr remote host和remote remote a drr这两个属性呢,变成了44.1,那其实和它不是我本机的这个IP地址。你看一下,如果你跟我一样在虚拟机里做实验的话,你看一下。嗯。嗯,IP是吧。来我们看一下本机的IP地址呢,啊,有这么几个啊,这是我这无线网的地址。
06:04
这是31.180对吧,然后这儿还有一个虚拟的网络适配器,这就是VV给我们新加的这个IP是176.1,然后这还一个。44.1对吧,这三个IP地址,正经来说啊,我的IP应该是这个和外网相连的,那为啥显示出来这个呢?这就是因为它已经经历过这个代理的中转了,因为我们现在的这个呃,上网的这个呃。这个这个这个环境啊,嗯,或者说我们连这个虚拟机这种方式,它是通过隧道式的这种连接方式,他在中间呢,加了一个。它加了一个这个,呃,额外的网络适配器,相当于这样的,就是这是我的宿主主机。这IP是180,然后,但是他要通过额外的一个网卡才能访问到内部这台虚拟机。
07:02
这里边儿有一个虚拟网卡,然后穿过这虚拟网卡才能到这个,呃。虚拟机里边这个网卡。那这个网卡是44.1。所以我这边跑tomcat这台机器就是这台这台机器真正的虚拟机,这个这台机器里面跑tomcat,它能读到的也就是上一个这个IP地址,而真正的这个IP呢,是在这儿,对吧,我的真正的IP。和。和它相连的呢,应该是在这儿对吧,但是呢,嗯。它有可能啊,还有这么一种情况,它没有没有使用这个外网,而是直接通过我本机的这个S1去连接的,它所以可以认为啊,在这呢,我们可以简单认为这两个呢,它是在一台机器上,所以它也可以,它也可以是不存在这种代理的关系的,它其实真正的这种请求啊,是不存在这个,比如说我把我先把请求发到这个180这个网卡,那180这个网卡呢,再把请求转发到44.1这网卡。
08:13
对吧,这是不存在的,但是在互联网上这种情况就容易出现了,在这儿就特别容易这个变成一个返型代理服务器,就像我们在这中间呢,比如说现在呢,我这是44.1,这是我现在的宿主主机。中间呢,有可能会再透过一层,比如我只加一个NG服务器做反向代理。我们这是44.101是吧?啊,可能会通过这四点一零一再去访问toca,那他可能会他那他会读到哪个IP地址是44.1还是44.101还是180。在这答案很明显应该是他对不对啊,所以它获取不到真正客户端的地址,这两个呢,都属于真正客户端的地址,对吧,但是真正和我们后端的tomcat相连的是这个44.101,你不信我们可以试一下。
09:06
啊,我们现在这个Tom cat已经起来了是吧,然后找到我们这个,呃。反映代理服务器。然后在这儿呢,我们改一下它。Local跟几个词。把这请求呢,给他转发到这个tomcat上。嗯,这在这儿呢。没用的,先出掉,这是104是吧,然后8080。要保存一下,重启一下。我们的这个Tom cat,不是这个N。然后我们再访问一下。44.101。
10:01
嗯,这样是也是通过这个代理服务器过去的。大家能看到我们tomcat在最终读出来的IP地址是44.101对吧?啊,这会也不是44.1了啊,就真正的IP地址了,它是没有获取得到的,那么接下来应该怎么才能够获取到这个客户端的真正的IP地址呢啊。
我来说两句