视频传送门往期精彩回顾:
IPv6-1 每家每户都有的IPv6,你会用吗?下载加速?校园网免流?内网穿透了?
IPv6-2 IPv6是否安全?IPv6哪些技术可防网络攻击?IPv6的安全使用方法!
IPv6-3 给你家里每一粒灰尘都分配一个公网IP:IPv6与IPv4到底哪里不同?fe80是干嘛的?
IPv6-4 IPv6网页打不开?fe80 ping不通?IPv6的通讯以及基本使用方法!
Hi,大家好,我是旋律果子,一个专注于网络技术的Geek。关于IPv6的视频已经出了4期了,感兴趣的小伙伴可以点点往期回顾。这一期是第5期视频,主要讲一下有粉丝说的IPv6网络卡顿的问题,
开始之前先回复一下IPv6第3期的一个问题。
1.更正第三期的一个问题第三期在讲IPv6地址分配的时候,提到了运营商分配的前缀一般是64位,在视频中显示的画面也有问题。评论区有粉丝指出来这里面的问题,这里统一更正回复说明一下。
1.1第一点要说明的是内外网前缀是否一致的问题。路由器的Wan口上获得的公网IPv6地址和Lan口以及内网设备获得的公网IPv6,虽然他们都是公网IPv6,前缀长度也是64,但是他们的前缀并不是一样的。
路由器Wan口获得的公网IPv6只能路由器本身用,路由器Lan口获得的公网IPv6和内网设备的公网IPv6前缀是一样的。
大家可以把视频暂停下来看一下区别。
1.2第二点要说的是运营商分配的IPv6前缀长度的问题。我们看到IPv6地址的64位,但是运营商下发的前缀长度不一定是64位的,
比如,大家可以看这里,在武汉电信分配的IPv6前缀就是56位的,
所以上一期说的家庭用户的1800亿亿个公网ip,
在这个基础上还得乘以2的8次方,一共是2的72次方个公网IP。
这个56位的前缀怎么用呢,
如果你有多个内网,可以给不同的接口上分配一个64位的公网IPv6地址块,这个就比较牛逼了。这个前缀才是给路由器的Lan口和内网设备配置地址用的,再强调一下,给内网分配的地址并不是用的路由器Wan口的前缀。
1.3第三点是,如果运营商不给你下发前缀,那么你只有主路由能获得公网IPv6,内网设备是无法获得公网IPv6的。内网就只能像IPv4那样用网络地址转换NAT了。这就产生了另外一个问题,如果你的光猫是路由模式,光猫的lan已经代理了前缀,那么你的内部如果还有路由器的话,是无法获得到前缀的,内网设备就没办法分配公网IPv6地址了。所以你的网络中,包括光猫,有且只能有一个路由器。要么你的光猫是路由模式,其他所有路由器全部桥接模式。要么光猫桥接模式,其他路由器有一个拨号上网,并给下面的设备分配IPv6地址。
这些地方确实是有问题的,再次感谢这位粉丝的指出的问题,欢迎大家评论区交流。
2.如何正确配置IPv6这一期,我们聊一下,为什么,很多人开了IPv6,发现通过浏览器访问网页,卡卡的,或者不能打开网页。那么,我们该如何正确配置IPv6呢?
2.1 找原因:开启IPv6为什么会变卡?开启IPv6为什么网页打不开?之前我们讲过网络协议栈的OSI模型,分析问题常用这个模型。
我们先从最直观的地方开始找原因。
我们发出去的数据包远距离传输时,都是工作在网络层,所以我们最直观的测试,就是测一下网络层的速率。测网络层连通性,以及延迟,可以用最常用的ping命令。
一般来说,我们访问远程主机,如果你知道这个主机的IPv4和IPv6地址,你可以试着同时ping一下,很多时候,你会发现IPv6地址的延迟和IPv4的延迟,相差不过1毫秒。
这说明开启IPv6后,那些很大的延迟,根本就不是IPv6性能本身的问题,同时也不是网络层的问题。所以,我们继续往上找原因。
当我们访问一个网站时,访问的是网站的域名。如果想把数据包发到这个位置,我们需要知道对方的IP地址。DNS就是将域名解析为IP地址的服务器。
那么,是DNS查询的速度过慢造成的吗?
在查询之前,我们先讲一个被很多人误解的地方。大家可以把答案写在评论区。使用IPv6浏览网页,一定要配置IPv6的dns地址吗?给大家3秒钟思考一下。
其实是不需要的。果子之前也出过DNS的视频,
我们在电脑上填写,或者是被路由器分配的DNS地址,只是DNS服务器本身的地址,并不意味着填写IPv6的DNS才能解析出IPv6。
我们填写的这个DNS地址只是让我们找到DNS服务器的位置,所以这个DNS地址,无论是IPv4地址还是IPv6地址,只要能引导我们的电脑找到这个DNS服务器的位置,目标就完成了。
那一个域名对应的IPv6地址在哪里储存的呢?
在DNS服务器上可以储存很多记录,其中A记录储存了IPv4地址,AAAA记录储存了IPv6地址,CNAME记录储存了CDN域名。
浏览器访问一个网站时,如果发现自己有IPv6地址,会同时去查询一个网站域名的A记录和AAAA记录。
2.2IPv6 DNS解析现在以IPv6为例,说一下DNS服务器面对DNS请求的反应。如果DNS服务器支持AAAA记录并且存在记录,那么会立即返回解析结果,正常解析;
如果DNS支持AAAA记录,但是发现域名没有对应的IPv6地址,那么会立即返回空的AAAA记录的,
如果DNS不支持AAAA记录,不去处理IPv6的解析,那么就不会返回AAAA记录,并且会超时。
IPv4和IPv6都有这3种情况。所以一共是3的平方,也就是9种情况。另外应用程序一般会优先使用IPv6。这样就形成了下面的表格:
如果一个DNS服务器没有返回AAAA记录,而A记录正常解析先到达,那么浏览器会等待AAAA记录到达,如果没有等到AAAA记录,并且没有收到回复并且超时,才会去使用A记录的IPv4去访问。
如果AAAA记录正常返回并且为空,浏览器会直接选择IPv4进行访问,不会继续等待。
从这个表格来看,一般IPv4的解析都是正常的,所以表格的下面两行几乎不用考虑。
所以就剩下上面这三种情况。
当IPv6功能开启时,如果DNS服务器不支持AAAA记录,或者AAAA记录到DNS服务器的过程中丢包,那么就很容易出现第一行的第3种情况,这样就导致非常卡了。
如果一个域名没有AAAA记录,那么dns服务器会返回一个空记录,这时浏览器就不会继续等待,直接使用IPv4进行访问,速度也快。
所以,不怕DNS说,“我这里没有你要的IPv6”,怕就怕,DNS服务器什么话都不说,那我们就得干等着了。
2.3 原因:如果DNS服务器出了问题,解析出错误的IPv6地址,服务器的IPv6网络也有问题的话,就会出现网络打不开的情况了。
如果涉及到CNAME记录和CDN,情况要更加复杂一些,也会变得更慢。
知道了这个原理,我们就很好排查故障原因了。
你们可以观察一下自己的DNS服务器,是否很好的支持IPv6,
在macos系统中,可以使用dig命令来测试。
在windows系统中,可以使用nslookup来测试。
不少家用路由器为了提升DNS解析的速度,在自己这里搭建了一个DNS缓存服务器,相当于路由器本身是一个DNS服务器。路由器会通过DHCP将自己的IP地址作为DNS服务器分配给终端设备。你可以观察一下,你的DNS地址是不是路由器的lan口IP地址。
家用路由器经历了长期的更新迭代,在IPv4的时代还好,现在一般没什么问题。但是在IPv6时代,不少家用路由器还没做好准备,对IPv6的支持也不是很完善,导致DNS缓存服务器对IPv6的支持不好,所以,只要一开IPv6,就卡顿。
2.4优化IPv6配置,解决网页卡顿/打不开那么,说到这里,解决方案就很简单了,直接给自己的电脑设置公用DNS就可以了,比如腾讯dnspod的地址,119.29.29.29。
最好是直接在路由器的DHCP服务器中设置DNS地址,将DNS地址设置为119.29.29.29,这样,接入局域网的设备,就能自动被分配设置好的DNS地址了。
设置好这些后,大家再来看看,在开启IPv6的情况下,是否流畅。欢迎评论区留言!
以上是针对大多数用户的情况。还有一部分用户,家里开了特殊的上网环境,而这些特殊的线路不支持IPv6,却默认IPv6优先,导致问题出现,这些也有解决的办法,就是不知道视频发不发得出来了,不过可以先点个关注。
这就是本期视频的全部内容了,如果IPv6能保持较好的热度,IPv6系列会一直出,希望大家多多支持。我是旋律果子,一个网络极客,我们下期再见。
关注博主,学习更多网络知识!还有更多实战经验等着你!
图文编辑: 旋律果子 猫小爪
旋律果子: 网络Geek/Linux开发者/中国科学院大学在读博士/科技数码博主/国家水利水电二级建造师/优质科技领域创作者
〖特别声明〗:本文内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。如有侵犯您的原创版权或者图片、等版权权利请告知 wzz#tom.com,我们将尽快删除相关内容。