为什么在不同网站查询本机的公网IP不一样?

    笔者最近使用阿里云CDN(内容分发网络)来给 OSS 源站点做加速,CDN的管理后台可以设置IP黑名单的来屏蔽恶意的流量请求。笔者用手机的这台电脑做了测试,CDN的后台日志记录了笔者最近的IP访问记录,于是笔者想先查看下本机的公网IP地址,然后在后台选择该 IP 地址来做屏蔽黑名单的测试。但是让我笔者疑惑的问题出现了,笔者在不同的网站上面查的公网IP居然是不相同的?笔者接入的带宽运营商是方正宽带。

运营商:「方正宽带」  不同站点IP查询记录
日期|IP查询网站

ipshudi

ip138

baidu chinaz
Day: 10.15

100.102.18.22

(保留地址: 运营商级NAT IP地址)

59.109.149.63

(中国北京北京 方正宽带) 

59.109.121.31 (中国北京北京 方正宽带)

60.10.12.102

(中国河北廊坊安次区 联通) 

Day: 10.16

100.102.3.228

(保留地址: 运营商级NAT IP地址) 

59.109.145.139

(中国北京北京 方正宽带)

59.109.121.175 (中国北京北京 方正宽带)

222.129.60.69

(中国北京北京 联通)

备注:「IP 地址单元格」的括号里面是IP的归属,在ip138首页输入IP地址查询可以获取到。

一、横向比较与分析

    按日期横向来比较,不同网站查询到的IP地址不一样。为了方便说明,这里先忽略第一列的「保留地址」,只看后面三列的数据,ip123 和 baidu 查询 IP 都属于方正宽带,chinaz 查询到的IP属于联通,这是因为长城宽带租用了基础运营商-联通的带宽,所以如果走联通的出口获取到的就是联通的公网IP。这里也可以这么理解,当笔者本机请求 ip138、baidu、chinaz 这三个站点时,因为请求的「目标站点」不一样的,选择的出口不一致,因此接入公网的IP就不一样了。 这种情况在小的运营商里很常见(通过基础运营商电信、联网、移动接入公网),尤其是长宽、歌华、宽带通(俗称二手运营商)等,据说接入的是联网、电信这样宽带服务不会出现类似的问题。简单点说,你的网络运营商有多个出口,不同出口的IP公网地址不同。

二、纵向比较与分析

    如果以某个网站为基准纵向对比,同样的运营商(ISP),为什么查询到的IP公网地址也不相同呢?答案是「动态NAT技术」。

1. NAT技术原理介绍:

    这里为了方便理解,先介绍下NAT(一种网络地址转换技术)。简单来说,我们的IP地址分为「公网/外网IP」和「私网/内网IP」,因为ipv4设计的局限性,随着全球联网设备的不断增加,公网IP地址已经接近枯竭,因此采用NAT技术可以实现将一个公网IP和多个内网IP地址之间的转换,解决了IP公网地址短缺的问题。通过这种方式,多个用户能够「共享」同一个公网IP,所以即使运营商只分配了一个公网IP,多个用户也能同时访问 Internet。

    在 IPv4 地址资源越来越紧张的今天,很多电信运营商,已经不再为用户分配公网IP;而是直接在运营商自己的路由器上运营 NAT,为用户分配内网 IP。这样,只需要少量的 IP 地址,就可以支撑大量用户的上网需求。这样的 NAT 又叫做 CGN(Carrier-grade NAT,电信级 NAT)

2、什么是动态NAT?

    使用公有地址池,并以先到先得的原则分配这些地址。当具有私有IP地址的主机请求访问 Internet 时,动态 NAT 从地址池中选择一个未被其它主机占用的 IP 地址一对一的转化。当数据会话结束后,路由器会释放掉公有IP地址回到地址池,以提供其他内部私有IP地址的转换。

3、动态选择公网IP地址

    内网中有设备需要去访问我们公网,需要做一个NAT地址转换,把我们私网的IP地址转换成我们公网的IP地址,这时就需要使用动态NAT了,使用地址池中的公网地址进行IP地址转换,去访问我们的公网,因为选择的公网IP是随机的或者变化的,所以我们查询到IP地址就不一样了。

三、保留地址:运营商级NAT IP地址

    现在来说下最开始提到的「保留地址」,ipshudi 网站查到的两个IP地址有个特点,他们的地址都是在100.64.0.0~100.127.255.255」这个范围以内,这个保留地址也是用于内网,但是这个内网不是一般内网而是Carrier-grade NAT,这个英文对应的翻译是“运营商级NAT”。进一步搜索得知2012年4月的 RFC 6598 (IANA-Reserved IPv4 Prefix for Shared Address Space) 将100.64.0.0/10 (Shared Address Space) 地址块,用于给运营商ISP使用。

    常见的保留地址见下图,这个数据是我们网上可以搜到的,但是因为比较老旧了,所以看不到上面提到的「Carrier-grade NAT」保留地址:

更加「完善」的保留地址:

 

既然在「ipshudi」网站查到的两个IP地址都是NAT处理后的内网地址,它们就是动态生成的,所以不一样也就可以理解了。

    「注意」:为什么一个内网地址可以在「ipshudi」这样的第三方站点查到呢?笔者在CDN后台的请求IP日志里也找到了和「ipshudi」同样的内网地址。内网IP是不可以直接和外网站点就行连接和通信的,那这个地址是怎么获取到的呢?所以笔者的猜想是:「ipshudi」和 「CDN站点」在笔者接入的方正宽带的内网里也有服务器,既然用户和第三方服务器都都在同一个内网,所以获取到的IP地址也是内网地址,见下表的第一行:

四、结语

    既然用户的IP地址是变化的,那么CDN用后台记录的IP来做黑名单管理可能就不是那么准确了。因为用户发起请求的的公网IP在不断变化,恶意请求源IP就无法准确定位了。另外,如果单个公网IP通过NAT由多个用户共享并联网,那么被黑名单屏蔽的公网IP可能会影响到其他的正常请求服务的用户了。

     为了弄明白上面的这个问题,笔者查阅了相关文章,重拾起「计算机网络」的基础知识,对一些疑惑的知识点有了更清晰和更深入的理解。推荐几篇非常好的文章,能帮助你快速建立计算机网络的整体知识结构和图谱,并且轻松掌握一些比较难理解的基础知识,可以进一步帮助你的工作和学习。

互联网协议入门(一) - 阮一峰的网络日志

入网指南 01 | 一文读懂你身边的「网络」

入网指南 02 | 当你发消息的时候,发生了什么

入网指南 03 | 交换机在交换什么? - 少数派

入网指南 04 | IP 地址大揭秘 - 少数派

家庭网络中的「NAT」到底是什么? - 少数派

猜你喜欢

转载自blog.csdn.net/crazestone0614/article/details/127349827