网上冲浪卡顿?图片加载不了?ipv6诸多问题&解决办法
说个非常有意思的事情,目前虽然国内ipv6流量占比已经非常大了,但是ipv6现在问题依然一堆,虽然能用,就很影响体验,下面就细说下ipv6的问题以及解决办法。
说个热知识,目前很多app开屏页面标着支持ipv6,实际上真的用纯ipv6去访问就会发现只能访问个首页,其他页面通通加载不出来(首页支持ipv6也是支持),目前国内能纯v6使用的app屈指可数,目前ipv6的路依然很长。
前排叠甲,本人不是专业网工,可能会出现错误,但是大致方向是没问题的,如有错误请及时指正。
一、细说诸多问题
1.mtu黑洞
可以说这个是ipv6最大的问题,直接影响了网上冲浪体验。特别是xhs等大量带图片类的软件,经常图片加载不出来;又或者看视频刷着刷着突然某个视频半天无法加载,令人非常不爽。
出现这个的问题是在于mtu值不匹配,mtu简单的说就说数据包的大小,在ipv4时代,pppoe的ipv4 mtu基本上都是1492(哪怕不一致路由器/光猫也可以mss钳制,关于这个等下会讲)。但到了ipv6就不一样了,可以说每个地区运营商的mtu值都可能不一样,有些可能是1472,有些可能是1452,就没个统一的标准,当路由器/光猫发出的数据包大小(mtu值)比运营商/服务商那边的大,就可能会导致这个数据包被丢掉了,体验上就是图片/视频等内容莫名其妙加载缓慢或者干脆加载不出来。
但是,离谱的来了,手机+移动网络(4g/5g)就不存在这个问题。有些同学会发现,平时用家里wifi(宽带)加载不出来图片,但是只要换到流量就可以了,一切都正常了。这是因为,在移动网络下ipv6基本上mtu值是和运营商/服务商匹配的,所以这就是为什么流量下ipv6一点问题都没有的,但是用回宽带就会卡的原因。
2.mss钳制(mss clamping)问题
这个和刚刚说的“mtu黑洞”其实是一个问题,刚刚说的是mtu过大会导致产生丢弃数据包的情况,那现在这个mss钳制就是用来解决这个问题。
刚刚说了本地发出的mtu比运营商/服务商的大就可能会导致数据包丢弃,聪明的你一定会想到,那在传输的时候先“协商mtu值(我也不清楚这个原理,就这么理解就行了)”不就行了,这也就是我们说的mss钳制,这样路由器就可以发出正确大小的数据包。
确实,在ipv4时代基本上路由器/光猫(以下统称路由器)一来ipv4的mtu基本上都是1492,二来路由器都会自动mss钳制。问题就出来了,在ipv6时代很多路由器都不会开启mss钳制,甚至很多路由器连这个功能开启的选项都没有,傻眼了吧,如果你的路由器不支持mss钳制就只能手动改mtu值,但是非常不幸,很多路由器只能改ipv4的mtu值,ipv6的改不了。
3.dns问题
这个倒是问题不大,但是现在依然有dns不支持解析ipv6,这个更换个dns就可以解决问题了。
4.路由问题
除去上面说的,ipv6现在还有个隐形巨坑。那就是ipv6现在路由比ipv4混乱。什么是路由,举个例子,假设你在北京,要访问上海的网站,可能ipv4路由是直接从北京发往上海,但ipv6路由可能要先发往新疆再发往上海,当然这有些夸大,总之路由决定了你数据包怎么走,路由不行意味着数据包从发出到接收需要更长的时间,也就是延迟变长,而且也会增加丢包的概率。但是目前全球的ipv6路由都不太行,这个只能等运营商慢慢调整了。
5.ipv6不兼容
这个说实话算是个隐形小坑。国内运营商的ipv6协议似乎和海外的有些区别,这导致ros这种路由系统在国内部分地区无法获取到ipv6地址........当然不止ros,一些非大陆设备也可能会有这种问题,也是比较离谱。
二、解决办法
1.终极办法
那就是不用ipv6,直接禁用,就不存在上述说的那些问题了。
有童鞋会说,不行啊,我要用ipv6公网,跑bt/pt啥的,那还不简单,平常的设备不分配ipv6地址,只给有需要的设备例如nas这种单独分配v6地址不就行了。
或者干脆nat66,也就是nat ipv6,让某个单独的设备获取内网ipv6地址,然后向ipv4一样端口映射,避免了常用设备因为ipv6产生的各种问题。
2.dns禁止解析ipv6
上面说了禁用ipv6一劳永逸,但是大部分童鞋应该还是要来当公网的,而且路由器也不能做nat66以及只给某个设备单独分配ipv6地址。那就可以通过dns禁止解析出ipv6地址,解析不到ip自然就不会访问了,同时设备依然可以获取到ipv6地址,也不影响公网访问。
至于dns怎么弄,之前有写过文章,多翻翻就有了。
3.更改ipv6 mtu
刚刚也说了,主要的问题是mtu的锅,那就改mtu值就行了,但是吧,mtu改多少合适?说实话,不知道,一般推荐1240?但是mtu小了会影响网络传输效率,导致无法跑满宽带,改大了还是不匹配直接丢弃。。。。。。
忘记说了为什么mtu改小就可以,因为当运营商/服务商收到你的数据包,如果是比自己能接受的包大就会丢弃,如果是一致或者比自己能接收的包小就会正常处理。
4.启用mss钳制
也可以选择在路由器上启用mss钳制,这样就会“协商发出合适大小的包”,不用操心mtu值。but,刚刚也说了很多路由器改不了ipv6值,甚至mss钳制也开不了,那就只能换路由器了。
5.优先使用ipv4
当然也可以在系统中设置优先使用ipv4,但是需要每个设备都做修改,而且像安卓这些往往都需要root后才能修改,不如上面几个方法简单。
三、最后
实在不行,,,,就按照我封面图的那样吧,,,,,