100.64.0.0/10运营商级(Carrier-grade)NAT保留IP地址
在一次跟踪路由的网络操作时发现自己路由器下一跳路由节点的IP地址比较奇怪,是100.64.0.1
。好奇促使我查询了这个IP地址的归属,结果是保留地址,到这里觉得比较奇怪了,按照常理以IPv4为例保留的IP地址一般为以下几种,常用于内网通讯或者特殊用途:
地址块 | 起始 | 结束 | 备注 |
---|---|---|---|
10.0.0.0/8 | 10.0.0.0 | 10.255.255.255 | 局域网分配 |
172.16.0.0/12 | 172.16.0.0 | 172.31.255.255 | 局域网分配 |
192.0.0.0/24 | 192.168.0.0 | 192.168.255.255 | 局域网分配 |
169.254.0.0/16 | 169.254.0.0 | 169.254.255.255 | 两台主机对等连接,当Windows获取不到IP地址的时候会自动分配此类地址 |
127.0.0.0/8 | 127.0.0.0 | 127.255.255.255 | 回环(loopback)地址,表示本机 |
255.255.255.255/32 | 255.255.255.255 | 255.255.255.255 | 广播地址 |
这个100.64
开头的IP地址又是什么鬼?搜索维基百科的Reserved IP Address词条才发现原来教科书上介绍的只是部分保留地址,整个保留地址家族的成员还是比较多的,那么100.64
打头的IP地址对应地址块为100.64.0.0/10
,地址范围为100.64.0.0
~100.127.255.255
,共包含有4,194,304个IP地址,这个保留地址也是用于内网,但是这个内网不是一般内网而是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使用:
NetRange: 100.64.0.0 - 100.127.255.255
CIDR: 100.64.0.0/10
OriginAS:
NetName: SHARED-ADDRESS-SPACE-RFCTBD-IANA-RESERVED
NetHandle: NET-100-64-0-0-1
Parent: NET-100-0-0-0-0
NetType: IANA Special Use
据此可以推断出电信的黑科技实际上是使用了一个类似路由的设备将我们的网络组织成一个局域网,再通过网址转换NAT技术来实现网络通信,可以这么理解吧,我们以前通过PPPoE拨号获取的是随机分配的公网IP地址,这个IP地址是完全可以被互联网上任何设备访问的无障碍地址,但是现在通过拨号获取的只是一个内网地址,也就是说我们自己的路由器或者电脑拨号连接到了电信运营商的“大路由器”上,再也没有公网IP地址了。
为什么电信要使用这种方式来管理用户上网?首先我们要知道IPv4地址已经告枯竭,2011年2月4日全球顶级IP地址分配机构IANA分配完了最后5个A级地址块,因此IANA宣告IPv4地址告罄。2011年4月15日,APNIC宣布其剩余的可自由分配的IPv4地址已全部分配完毕,亚太地区进入IPv4地址耗尽阶段。随后几个月,中国各大运营商从APNIC以会员资格申请到了最后的几个C,至此各运营商也陷入了IPv4地址耗尽的困境。由于IPv6技术进展缓慢,为了解决IPv4耗尽对电信企业日益增长的用户对于网络需求的影响,NAT444/NAT44的方案由此诞生。
NAT444/NAT44方案说白了就是将过去每个宽带用户独立分配公网IP的方式改为分配内网IP给每个用户,运营商再对接入的用户统一部署NAT设备,NAT的作用就是将用户网络连接发起的内网IP,以端口连接的形式翻译成公网IP,再对外网资源进行连接。这样做以后,可以实现多个用户共享一个IP地址,在技术实现原理上和我们家用的路由器一样,其中NAT444对应传统宽带用户,NAT44则对应3G或者4G移动上网终端。
这样做的好处显而易见,首先延缓了IPv4耗尽对电信业务带来的威胁并进一步为IPv6技术部署留足时间,其次是内网保护,所有接入互联网的主机都不再直接接入,而是出于电信NAT设备的保护之下,没有独立的公网IP,所有端对端的远控软件将会失效,比如以前的灰鸽子木马,由于主机丧失了公网IP,灰鸽子反弹的IP地址将是电信NAT设备所使用的公网IP,黑客无法以此定位到中了灰鸽子木马的具体主机,不过这不影响第三方端口转发的远控软件,比如TeamViewer,但是对传统远控软件杀伤力是巨大的。最后增强了隐私保护,对于远端的网站通过IP地址跟踪等形式采集用户数据,或者以后台记录IP的形式定位用户身份的行为将不再有效,因为这个IP地址可以同一时间段内被大量用户所使用,所以部分广告商可能需要修改广告跟踪代码的相关逻辑,这边顺带说一句并不意味着处于电信NAT保护的用户可以做违法的事情,比较电信公司不是傻瓜,电信级NAT设备会有日志记录系统,所以处于其下的网络设备的上网流量都是得到有效审计的。
这样做的坏处是什么呢?首先丧失了公网IP让极客们的生活失去了不少乐趣,比如原先通过花生壳动态域名解析服务可以定位到我们家的上网设备,然后可以在上面架设一些服务等,从最原始的网站服务(电信封锁了80端口)到远程私有云存储,甚至是个人VPN等等,现在都不能直接使用了,因为动态域名服务解析的IP地址是电信级NAT设备所使用的公网IP,同时也是若干电信用户所共享的IP地址,NAT并不会转发你的请求到特定的电信用户,所以这些服务都失效了,其实这对于安装远程网络监控的公司或者个人带来的麻烦最大,原来只要配置好动态域名解析就可以在任何地方使用网络进行监控查看,现在都不可以了。其次共用IP地址容易让部分网络服务提供商误杀合法用户,比如一位非法的资源滥用电信用户和你在共享同一个公网IP地址,非法的资源滥用者由于滥用某个网络服务商资源从而被加入黑名单,注意这里只有将你们所共享的公网IP地址加入了黑名单,所以导致你这个合法的用户也不能正常使用该网络服务商所提供的资源了。最后这样做的坏处还有影响到电驴等P2P软件的使用,因为处于内网下导致电驴等软件一直是LowID,影响传输速度。
如何解决此问题?要想重新获取公网IP,最后还是要联系电信运营商,不行只有进行投诉解决了。
后来发现这种现象普遍存在,甚至有电信运营商直接分配172或者10开头的内网IP地址,但这种分配方式容易与用户自己的路由器IP地址冲突,所以还是100.64开头这种好一些,毕竟新设立专用于ISP运营的保留地址,个人网络设备占用的可能性较低。
希望IPv6能够尽快全面推广开,从而解决现在尴尬的局面。
100.64.0.0/10运营商级(Carrier-grade)NAT保留IP地址的更多相关文章
- 运营商级NAT(Carrier-grade NAT)
运营商级NAT(Carrier-grade NAT) 运营商级(Carrier-grade)NAT,是用于缓解是IPV4地址枯竭的一种方法,通过这种方法,原来被分配公网ip的端点.家庭网络等可以被 ...
- [视频解说]0基础课程-运营商-Java它J2se
本节解说 运营商应用 Java 算被分成: 算术运算符 颂值运营商 逻辑运算符 位运算符 元运算符 这里录制了 视频解说这几大类运算符,并有练习题提供大家 面试题: 1. 最有效率的方式算出2乘以8等 ...
- 【Win 10 应用开发】获取本机的IP地址
按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...
- 转:100.64. 开头IP地址问题
100.64. 开头IP地址问题 姚洪楼 发表于 学习备忘录 分类,标签: 电信 08二月2015 0 之前调试过一个路由器在成功设置DDNS的情况下外网依旧无法访问的情况,当时没有多想什么,一直以为 ...
- 你的宽带ip地址被100.64了吗?
你的宽带ip地址被100.64了吗? 最近需要用外网的时候发现,宿舍路由wan口的ip变成了100.64.X.X,本以为是一个外网的ip,可事实上并不是,并且从外网无法直接访问. 首先,我们都 ...
- Python查找电话号码归属地、邮编、运营商信息等
# -*- coding: utf-8 -*- 1. 查找单个电话号码 from phone import Phone def get_phone_info(phone_num): phone_inf ...
- Python(phone)模块获取手机号归属地、区号、运营商等
Python(phone)模块获取手机号归属地.区号.运营商等 一.我使用的是python3,可以自行搜索下载 二.安装phone模块, pip install phone 三.测试代码如下: fro ...
- BGP多线 有些BGP IP也会被极少数运营商劫持 取Ip逻辑
小结: 1.租用的服务器只有一个IP,用户的访问路线是由路由器根据访客的实际访问速度选择最优访问路径,来选择访问的.而且不占用任何的服务器资源.服务器的上行和下行都是有路由器来选择最佳的路线,所以这样 ...
- Nginx的server为0.0.0.0/0.0.0.1的作用?
看到kong默认的代理和后台server 都是0.0.0.0,代理到上游的服务器proxy_pass $upstream_scheme://kong_upstream;配置如下, upstream k ...
随机推荐
- Vue(2) : Vue for Gank.io
简介 最近学习Vue2.0,由于不懂前端知识,学习过程比较缓慢.文档学习过程如下: 通读vue官文 通读vue-router 2中文指南 学习axios 通读vuex官文 数据接口 再次感谢代码家的G ...
- runtime 知识点
demo https://github.com/ZOYOOPlus/runtime2 // // ViewController.m // runtime // Copyright © 2017年 ...
- 从小白开始学习iOS开发
从事iOS开发不经意间,已经两年过去了,记得当初看到OC是,我根本就不知道那些个东西是什么?从开始学习开机,到一个个英文开始,为了能找到工作,愣是耐下心去坚持看下去. 现在回想起来,很是庆幸我没有放弃 ...
- [CSAPP笔记]Binary , Unsigned , Signed 之间的相互装换
LaTex+MarkDown+Pandoc组合套件写博客的处女作,试试效果.各自的分工为:Latex下编辑公式,在Sublime Text 2下使用Markdown排版,最后用Pandoc导出. 摘要 ...
- Java之OO的特性与原则
OO(Object-Oriented)面向对象 面向对象,有三个特性.五个原则之说. 特性 封装 顾名思义,封装就好比一个黑盒子,内部被隐藏,只有几个接口与外界相连.具体来说,所谓封装 ...
- vuex(三)actions
actions:既然mutations只能处理同步函数,我大js全靠‘异步回调’吃饭,怎么能没有异步,于是actions出现了... actions和mutations的区别 1.Acti ...
- http协议知识整理
HTTP 协议 作为web开发人员,了解一些http协议的知识很有必要.本文简单介绍了HTTP协议的知识,若有错误的地方,望大家指正. 1.HTTP协议是什么? http协议是一个应用层的协议.规定了 ...
- Mac安装最新tensorflow遇到的坑,记录下方便后人
之前其他mac电脑安装tensorflow时候一切顺利,一行命令sudo pip install tensorflow就高搞定了,但是今天在新mac上安装tensorflow时候出现了一个bug,搞了 ...
- flask第十三篇——url注意事项
先和大家说一下常用的请求方法 get:只是从服务器获取数据,不会对服务器的状态或数据产生任何影响: get方法的参数是放在URL中传递的. post:会对服务器的状态或数据产生影响:通过body形式进 ...
- spring事务的配置
前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ...