本文主要介紹路由器開啟ipv6的弊端(路由器開啟ipv6能做什么?2020),下面一起看看路由器開啟ipv6的弊端(路由器開啟ipv6能做什么?2020)相關(guān)資訊。
最近經(jīng)常提到ipv6連接打開速度慢。目前國內(nèi)支持ipv6的服務(wù)器和cdn節(jié)點(diǎn)都不夠,ipv6的國際帶寬比ipv4小,但不會(huì)打開國內(nèi)網(wǎng)站。通常,這個(gè)問題意味著在你到目標(biāo)服務(wù)器的鏈接上有一個(gè)pmtu黑洞。
關(guān)于pmtu黑洞mtu(最大傳輸單位)是一個(gè)鏈路可以通過的三層包(包括ip頭)的最大大小。以太網(wǎng)上的默認(rèn)mtu是1500字節(jié),但是在您和目標(biāo)服務(wù)器之間的路徑上可能有一個(gè)小于1500字節(jié)的鏈路。這條路徑上的最小mtu值就是整條路徑的pmtu值。路由器轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí),超過mtu大小的數(shù)據(jù)包會(huì)被分片,即一個(gè)大的數(shù)據(jù)包會(huì)被分割成幾個(gè)不超過mtu的數(shù)據(jù)包進(jìn)行傳輸,傳輸效率會(huì)下降。
終端設(shè)備也可以設(shè)置測(cè)向(don t fragment)標(biāo)志來告訴路由器不要分段。此時(shí),中間路由器將丟棄超過mtu的數(shù)據(jù)包,并回復(fù)icmp碎片需要消息。發(fā)送方收到這個(gè)包后,下次會(huì)發(fā)送一個(gè)更小的包。這個(gè)過程稱為pmtu發(fā)現(xiàn)。實(shí)際上,我們可以看到https (tls)的流量大部分都標(biāo)有df。
然而,互聯(lián)網(wǎng)上有大量的中間設(shè)備不支持。;t為了所謂的 安全與健康或者配置不正確,使得一個(gè)超過pmtu的包在訪問一些網(wǎng)站時(shí)會(huì)被默默丟棄,直到tcp協(xié)議發(fā)現(xiàn)超時(shí)重新傳輸,非常慢。在這種情況下,我們可以說在您和目標(biāo)服務(wù)器之間的路徑上有一個(gè)pmtu黑洞。
另外,ipv6不支持分片,換句話說,可以理解為ipv6下的所有數(shù)據(jù)包都標(biāo)有df。當(dāng)數(shù)據(jù)包大于mtu時(shí),中間路由器應(yīng)響應(yīng)icmpv6數(shù)據(jù)包太大消息。同樣,由于各種原因,一些中間設(shè)備可能會(huì)不響應(yīng)icmpv6包太大消息而直接丟包,直到tcp協(xié)議發(fā)現(xiàn)超時(shí)丟包后重新傳輸。。。
為什么 t ipv4有這個(gè)問題嗎?其實(shí)ipv4也有這個(gè)問題。我不止一次看到網(wǎng)友說自己的軟路由訪問一些網(wǎng)站很慢,但是切換回硬路由很正常。。這是因?yàn)榇蠖鄶?shù)家用路由器默認(rèn)開啟ipv4下tcp的mss(最大段尺寸)鉗位(使用openwrt軟路由的朋友可以在防火墻設(shè)置中找到mss鉗位開關(guān))。mss箝位是pmtu黑洞的變通方法。簡(jiǎn)單來說,有一個(gè)mss字段決定了tcp握手時(shí)單個(gè)tcp包的最大大小。路由器可以通過嗅探tcp握手包來降低mss值,使得最終三層ip包的大小(mss tcp header size ip header size)不超過某個(gè)值。
總結(jié):目前國內(nèi)isp普遍通過pppoe虛擬撥號(hào)建立wan連接。以太網(wǎng)默認(rèn)的mtu是1500,但是pppoe隧道的開銷是8字節(jié),所以pppoe虛連接的mtu是15008=1492。減去ipv4頭(20字節(jié))和tcp頭(20字節(jié))后,我們可以知道,ipv4下的mss需要設(shè)置在1452以下。
ipv6的報(bào)頭是40字節(jié),所以需要在ipv6下設(shè)置1432以下的mss。
這時(shí)候,問題來了。目前很多光貓和家用路由器對(duì)ipv6的優(yōu)化較差,不支持ipv6下tcp包的mss箝位,導(dǎo)致訪問ipv6網(wǎng)站時(shí),如果路徑中有pmtu黑洞,打開緩慢。
前段時(shí)間我在幫朋友配置ipv6的時(shí)候,發(fā)現(xiàn)了很多光貓和家用路由器的固件問題,導(dǎo)致在國內(nèi)使用ipv6的體驗(yàn)并不理想。我 我準(zhǔn)備抽時(shí)間開個(gè)專帖討論這些問題,聲討那些垃圾制造者。目前國內(nèi)想要理想體驗(yàn)ipv6,需要將光貓改為橋接模式,使用openwrt或vyos等更好支持ipv6的軟路由。
附件:在基于linux的路由器上啟用mss箝位的命令:
自動(dòng)mss,假設(shè)pppoe的虛接口是pppo 0 iptablest manglea post routingptcptcpflags syn,rs syno pppoe 0j tcp mssclampmsstopmtu ip 6 tablest manglea post routingptcptcpflags syn,rst。e0 j tcpmss 夾鉗mss至pmtu
手動(dòng)指定mss,假設(shè)pppoe虛擬接口為pppoe 0 $ iptablest manglea post routingp tcptcpflags syn,rst syno pppoe 0j tcpmsssetmss 1452 $ ip 6 tablest manglea post routingp tcptcpflags syn,rst syno pppoe 0j tcpmsssetmss 1432
在routeros中設(shè)置mss的命令。其中pppoeout1是wan端口,1420是mss值,請(qǐng)根據(jù)需要進(jìn)行修改。
/ipv6防火墻mangle add chain = forward outinterface = pppoeout 1 protocol = tcp tcpflags = syn action = changemss newmss = 1420
ubnt edgerouter系列的mss設(shè)置方法:
設(shè)置防火墻選項(xiàng)mssclamp6接口類型pppoeset防火墻選項(xiàng)mssclamp6 mss 1420
了解更多路由器開啟ipv6的弊端(路由器開啟ipv6能做什么?2020)相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。