Shimo jeusi la MTU: kwa nini maombi madogo hufanya kazi lakini upakiaji hukwama
Maombi madogo hukamilika wakati upakiaji mkubwa unaning'inia milele, na mtumaji huwahi kujua kwamba njia ni nyembamba. Pima saizi kamili ambapo huvunjika.
Ukurasa hupakiwa, wito mdogo wa API hurudi, kisha upakiaji wa faili huning'inia hadi mteja akate tamaa. Hakuna kitu kwenye kumbukumbu ya seva kinachoeleza hili, kwa sababu pakiti zilitupwa katikati ya njia bila jibu la maana kurudishwa. Mtindo huo ni shimo jeusi la MTU: kiungo chembamba kuliko mtumaji anavyodhani, pamoja na kukataa kimya kusema hivyo. Saizi inayoshindikana inaweza kurudiwa, na hiyo ndiyo inayoifanya iweze kutambuliwa.
Nini hufanya shimo kuwa jeusi
Kila kiungo kina kitengo cha juu cha usambazaji, na pakiti kubwa kuliko kikomo cha hop inayofuata lazima igawanywe au ikataliwe kwa ujumbe wa ICMP unaosema hivyo. Ugunduzi wa MTU ya njia hutegemea ujumbe huo kufika na kuheshimiwa. Kuuchuja au kuupuuza humwacha mtumaji akirudia pakiti ambayo haitaweza kamwe kutoshea.
Ufungaji wa ndani hufanya hili kuwa la kawaida kuzunguka VPN, kwa sababu handaki huongeza kichwa cha nje kwenye pakiti iliyokuwa imepimwa tayari kwa kiungo halisi. Pakiti ya ndani ni halali kwa baiti 1500 na ile iliyofungwa siyo, kwa hiyo hufa kwenye mpaka wakati pakiti ndogo hupita. Ushirikiano wa mikono uliokamilika na ukurasa wa kuingia unaofanya kazi huthibitisha tu kwamba pakiti ndogo zinafanya kazi. Pakiti kubwa zaidi ambayo programu hujaribu kutuma ndiyo muhimu.
Tafuta saizi ambapo huvunjika
Tafuta kwa njia ya jozi saizi ya mzigo kwa jaribio la kutogawanya, kutoka kwa mwenyeji upande mmoja wa handaki hadi mwenyeji upande mwingine. Mzigo mkubwa zaidi unaopita ni MTU ya njia inayoweza kutumika ukiondoa gharama ya kichwa.
ping -M do -s 1400 -c 2 192.0.2.20
ping -M do -s 1200 -c 2 192.0.2.20
ping -f -l 1372 192.0.2.20
Mzigo wa baiti 1472 hupita kwenye njia safi ya Ethernet ya baiti 1500 pindi baiti 28 za vichwa vya IPv4 na ICMP zinaongezwa. Wakati jaribio hilo hilo likifaulu tu kwa mzigo mdogo baada ya handaki kuinuka, tofauti ni gharama ya ufungaji, na mpaka wa handaki ni mahali ambapo ujumbe wa kukataa ulipaswa kuzalishwa. Andika namba zote mbili, kabla na baada ya kuunganisha, kwa sababu jozi hiyo ndiyo uthibitisho. Rudia jaribio kwa IPv6 wakati programu inaitumia, kwa kuwa kichwa ni kikubwa na kizingiti cha kushindikana husogea.
Soma uthibitisho kabla ya kulaumu handaki
Makosa ya programu za mbali, msongamano na upotevu wa kawaida pia hukwamisha upakiaji, kwa hiyo uhamishaji mmoja ulioshindikana hautambui shimo jeusi. Kinachowatenganisha ni uhusiano wa saizi: mafanikio yanayoweza kurudiwa kwa baiti 1200 na kukwama kunakoweza kurudiwa kwa baiti 1400, katika mwelekeo ule ule, kupitia ncha ile ile ya mwisho.
Kukamata katika ncha zote mbili kunaonyesha pakiti kubwa zikitoka na kamwe kufika, bila kukataa katikati. Huo ndio wakati wa kuangalia kifaa cha mpaka badala ya seva, ambayo hujibu kila ombi ambalo huipokea kweli. Msongamano pia hukwama, lakini hukwamisha saizi tofauti kwa nyakati tofauti, na hiyo ni saini tofauti.
Hakiki ukarabati kwenye usafirishaji wote wawili
Ukarabati unaoungwa mkono ni kuruhusu mpaka kuripoti kikomo halisi, au kukaza hapo saizi ya juu ya sehemu ya TCP ili sehemu kubwa isijaribiwe. Kupunguza kila MTU kwenye mtandao, au kuzima firewall, huficha dalili na kuacha usanidi ambao hakuna mtu atakayeweza kufikiria juu yake baadaye.
ip link show dev tun0
sudo nft list ruleset | grep -i -E 'mtu|mss'
sysctl net.ipv4.tcp_mtu_probing
ping -M do -s 1400 -c 2 192.0.2.20
Thibitisha kwa jaribio lile lile la saizi, kisha kwa programu iliyoshindikana, na angalia itifaki ya pili, kwa sababu programu za UDP huwa hazipati kamwe marekebisho ya saizi ya sehemu ya TCP. Hifadhi thamani za awali kwenye tiketi, kwa sababu ukarabati ambao hauwezi kurudishwa ni tatizo la pili linalosubiri kutokea. Ikiwa jaribio la saizi linapita na upakiaji bado unakwama, shimo jeusi halikuwa sababu, na uchunguzi unapaswa kuendelea badala ya kupanua mabadiliko.