Miksi VPN jumittuu isoissa siirroissa mutta ei pienissä
Pienet pyynnöt saavat vastauksen, kun taas isot siirrot jäätyvät. Vertaa liitännän rajaa, polun rajaa ja ilmoitettua TCP-hyötykuormaa ennen kiinteän MTU:n kopioimista.
Sivu latautuu, ping onnistuu ja tiedoston kopiointi jumittuu joka kerta samaan kohtaan. Kuvio viittaa paketin kokoon eikä kaistanleveyteen tai tunnistetietoihin. Kapselointi lisää jokaiseen pakettiin tavuja, joten alkuperäiselle reitille mahtunut hyötykuorma voi ylittää rajan, kun se kulkee tunnelin läpi. Näissä keskusteluissa kolmea eri lukua kutsutaan MTU:ksi, ja niiden sekoittaminen johtaa asetukseen, joka korjaa yhden sovelluksen ja rikkoo toisen.
Kolme lukua, joita ihmiset kutsuvat MTU:ksi
Liitännän MTU on sille linkille määritetty paketin raja. Polun MTU on reitin pienin raja, ja se havaitaan eikä sitä määritetä. TCP MSS on hyötykuorman koko, jonka vastapuoli ilmoittaa voivansa vastaanottaa, ja se johdetaan kahdesta muusta eikä ole erillinen fyysinen raja.
Tunnelilla on sisäinen ja ulkoinen näkymä. Ulompi paketti kuljettaa kapseloidun paketin lisäksi ne otsikot, joita protokolla tarvitsee, joten käytettävissä oleva sisäinen koko on pienempi kuin ulompi polku sallii. Myös polku VPN-palvelimelle eroaa palvelimen polusta kohteeseen.
Polun MTU:n haku antaa lähettäjän oppia toimivan koon, mutta se riippuu siitä, että palaute saapuu perille. Kun välilaite suodattaa kyseiset ICMP-viestit, lähettäjä jatkaa pakettien lähettämistä, jotka eivät koskaan valmistu, ja se on klassinen musta aukko. Oire on tunnistettava, kun sen tuntee: kättely onnistuu, ensimmäinen täysikokoinen kuorma katoaa ja yhteys lopulta nollautuu tai jumittuu. Mikään sovelluksen lokissa ei näytä verkkongelmalta.
Tutki polkua kuormalla, jota hallitset
Koe on todiste yhdestä reitistä ja yhdestä koosta, ei suositeltu asetus. Käytä isäntää, joka vastaa, ja vaihtele vain kuorman kokoa.
ping -M do -s 1372 -c 2 203.0.113.20 ping -4 -f -l 1372 vpn.example
Ensimmäinen komento lähettää Linux-koen, jossa pirstoutuminen on pois päältä ja kuorma on 1372 tavua, ja toinen tekee saman Windowsissa, jossa kuorma asetetaan valinnalla -l. Vastaus tarkoittaa, että koko selvisi polusta. Viesti pirstoutumisen tarpeesta on informatiivinen, kun taas aikakatkaisu on monitulkintainen, koska isäntä tai välilaite voi yksinkertaisesti pudottaa ICMP:n.
Laske kokoa muutamassa askeleessa sen sijaan, että tekisit binäärihaun tavuun asti. Yrität selvittää, onko koolle yläraja, et julkaista lukua jokaista verkkoa varten. Löytämäsi luku pätee tähän polkuun, tähän protokollaan ja tähän osoiteperheeseen.
IPv4 ja IPv6 pirstoutuvat eri tavalla, joten yhden perheen koetulos ei kerro toisesta mitään. Testaa perhe, jota sovellus todella käyttää.
MSS:n rajoittaminen auttaa vain TCP:tä
TCP:ssä tehokas kuorma neuvotellaan kättelyn aikana, ja polulla oleva reititin voi kirjoittaa arvon alaspäin, jotta molemmat päät lähettävät pienempiä segmenttejä. Sitä MSS:n rajoittaminen tekee, ja se toimii koskematta asiakkaaseen lainkaan.
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu ip link show tun0
Ensimmäinen sääntö rajoittaa ilmoitetun MSS:n polun MTU:hun välitetyille TCP-kättelyille, ja toinen näyttää tunneliliitännän oman MTU:n, jotta voit verrata sitä siihen, mitä polku sallii. Rajoittaminen on vähiten tunkeileva korjaus TCP-sovellukselle, joka jumittuu kättelyn jälkeen.
UDP:lle se ei tee mitään. Ääni- tai peliasiakas, joka lähettää suuria datagrammeja, jättää MSS-asetuksen kokonaan huomiotta, koska uudelleenkirjoitettavaa kättelyä ei ole. Jos vikaantuva sovellus on UDP, katso sen sijaan asiakkaan omia pakettikokoasetuksia. Kaksi protokollaa vikaantuu eri tavoin ja korjataan eri työkaluilla, siksi protokolla kuuluu tiketin ensimmäiseen lauseeseen.
OpenVPN tarjoaa valintoja kuten tun-mtu, mssfix ja pirstoutumiseen liittyvät asetukset, ja niiden käyttäytyminen riippuu versiosta ja siitä, onko datakanava AEAD. Lue käytössä olevan version käsikirja ja muuta yhtä valintaa kerrallaan.
Muuta yhtä tuettua asetusta ja toista molemmat ajot
Pidä alkuperäinen profiili, muuta yhtä tuettua arvoa ja toista sekä pieni pyyntö, joka toimi, että suuri siirto, joka epäonnistui. Jos vain suuri muuttuu, jahtasit kokoa. Jos molemmat muuttuvat, jotain muuta liikkui sen mukana.
Pienempi arvo voi lievittää oiretta lisäten samalla ylimääräistä kuormaa, joten pienin mahdollinen luku ei ole tavoite. Tavoite on koko, jonka polku kuljettaa luotettavasti ja pienimmällä hukalla. Kirjaa arvo, polku ja asiakkaan versio tikettiin, koska saman luvun käyttäminen muualla on arvaus.
Jos sama profiili toimii toisesta luotetusta verkosta, pidä se ero diagnoosissa sen sijaan, että julistaisit asiakkaan korjatuksi. Muuttunut muuttuja on polku, ja polku on se, mitä koe mittasi.