WireGuard nu are nicio negociere a MTU. Criptează tot ce îi dă interfața și trimite rezultatul, iar dacă pachetul încapsulat depășește traseul, este aruncat sau fragmentat undeva unde nu poți vedea. Cineva trebuie să aleagă MTU-ul interfeței, iar acel cineva este unealta care a ridicat interfața.

Există trei candidați, și sunt ușor de confundat.

Trei locuri de unde poate veni valoarea

Valoarea poate fi stabilită explicit în configurația interfeței, calculată de unealta de configurare din informațiile de rutare, sau stabilită de orice manager de rețea care deține interfața. Un apel obișnuit wg nu face nimic din toate acestea, pentru că wg administrează doar chei și parteneri. MTU-ul locuiește pe interfața de rețea, de aceea ip link show wg0 este locul unde îl citești.

Dacă nu ești sigur care caz se aplică, citește mai întâi MTU-ul, apoi află cine a pornit interfața.

Decide după cine rulează interfața

Dacă o pornește wg-quick, câștigă o linie MTU explicită, altfel calculează o valoare. Dacă o pornește un manager de rețea, decide profilul acelui manager. Dacă o pornește un runtime de containere sau un client de furnizor, citește documentația lor în loc să presupui comportamentul wg-quick.

Decizia nu este care număr este cel mai bun în abstract. Este care componentă poți configura efectiv.

Ce face calculul implicit

wg-quick caută ruta către punctul final al partenerului, ia MTU-ul acelei interfețe de ieșire și scade costul de încapsulare. Cu un antet exterior IPv4 sunt aproximativ 60 de octeți; cu IPv6 sunt aproximativ 80. Rezultatul este limitat astfel încât un traseu de 1500 de octeți să dea 1420, nu o valoare care funcționează doar într-o singură familie de adrese. Aceasta este o valoare implicită rezonabilă, nu o măsurătoare a traseului tău.

Nu poate ști despre un tunel ulterior, o legătură mobilă sau o rută ICMP filtrată.

Limita ascunde o întrebare reală. Dacă traseul tău este într-adevăr 9000 de octeți de la un capăt la altul, 1420 lasă performanță pe masă, iar dacă traseul este 1400, 1420 este deja prea mare. Valoarea implicită este un compromis și trebuie tratată ca atare.

Când traseul se schimbă sub tine

Un laptop care rătăcește de la Ethernet la Wi-Fi și apoi la hotspotul unui telefon păstrează MTU-ul interfeței cu care a pornit. Traseul exterior poate fi acum mai mic, și nimic nu renegociază. Tunelurile imbricate înrăutățesc situația, pentru că fiecare strat scade costul propriu din același buget. Valoarea care funcționa la birou nu este valoarea care funcționează la aeroport.

Un handshake recent dovedește că cheile funcționează. Nu dovedește nimic despre dacă pachetele mari încap.

Testează un singur număr o dată

Păstrează aceeași aplicație și destinație, schimbă o valoare și măsoară. ping -M do -s 1372 testează un pachet de 1400 de octeți cu bitul DF setat, și aceasta este forma de test pe care o vrei. Dacă cererile mici funcționează iar cele mari se blochează, ai o problemă de dimensiune, nu de rutare.

Schimbă doar MTU-ul. Ajustarea mai multor opțiuni de pachet simultan nu îți spune care conta.

Și nu te aștepta ca o schimbare de MTU să repare o rută de întoarcere lipsă, o regulă de forwardare sau o defecțiune DNS. Și acestea produc simptome fără trafic, și au propriile teste. Manualul wg-quick documentează selecția automată.

Articole similare