Tres ajustos en un client Linux sonen tots a «fes els paquets més petits» i actuen en capes diferents. La MTU de la interfície limita cada paquet que envia el dispositiu. La MTU d'una ruta limita els paquets que fan servir aquesta ruta, que sovint és el que realment voleu per a una destinació VPN. El límit TCP MSS canvia el que negocien els dos extrems i no fa res per a UDP.

Tres controls que semblen el mateix botó

Poseu-los costat a costat abans de triar, perquè triar la fila equivocada explica la majoria dels consells que no funcionen:

ControlScopeWhat it cannot fix
Interface MTUEvery packet the device sendsNothing, but it over-constrains unrelated traffic
Route MTUPackets using that routeA send that the lookup never routes there
MSS clampTCP handshake on that pathUDP payload sizes and ICMP

Baixar la MTU d'Ethernet per a tota la màquina és la versió grollera d'aquesta solució. Funciona, i també penalitza qualsevol altra aplicació de l'amfitrió, incloses les que tenien camins correctes. Un valor per ruta expressa la mateixa intenció sense el cost col·lateral.

La comparació només val per al trànsit que genera l'amfitrió. Reenviar un paquet per a un altre client implica el camí propi d'aquest client i el pressupost exterior del túnel, i una mètrica de ruta en aquest amfitrió no arriba més enllà d'aquesta frontera.

Fixeu el pressupost a la ruta que guanya la cerca

Un registre il·lustratiu de ruta IPv4 té aquest aspecte:

ip -4 route get 10.60.0.20
ip -4 route add 10.60.0.0/16 dev tun-office src 10.90.0.2 mtu 1380

Llegiu el registre com una descripció d'intenció, no com un valor per enganxar. El prefix, el dispositiu i la font preferida han de coincidir amb la configuració real, i el número ha de venir d'evidència sobre el camí encapsulat, no d'una entrada de blog. La MTU de la ruta limita el paquet IP interior, que no és el mateix que una càrrega TCP de 1380 octets ni un paquet exterior xifrat de 1380 octets.

Mireu on es resol realment la cerca abans d'afegir res. Un amfitrió amb regles de política pot encaminar una destinació donada per una taula diferent de main, i una mètrica que només existeix a main és invisible per a aquesta petició. Compareu ip -4 route show table all amb la resposta de ip route get, incloent-hi el context de marca o d'espai de noms quan les regles els fan servir. Si els dos no coincideixen, la taula que ha respost és la que necessita la mètrica, no la que sembla més ordenada.

mtu no és mtu lock

Per defecte el nucli encara pot actualitzar la MTU del camí a partir de la retroalimentació ICMP, que és per a què serveix el descobriment de MTU de camí. Afegir lock ho atura. És una decisió diferent, no una manera més forta de desar el mateix número, i per a IPv4 canvia el tractament documentat del bit de no fragmentació.

Bloquejar és raonable quan heu mesurat el camí i voleu que el valor es quedi fix passi el que passi. És un mal valor per defecte quan la xarxa envia retroalimentació legítima de mida, perquè el nucli ja no pot ajustar-se i la fallada es trasllada a un altre símptoma.

Si ICMP es filtra en algun lloc del camí, cap ajust de ruta ho arregla. La solució pertoca al filtre, i una MTU més petita és una solució improvisada que amaga la fallada real fins al proper canvi de camí.

El programari de túnel afegeix els seus propis controls de mida

OpenVPN- mssfix ajusta la mida dels segments TCP per al seu cas documentat de túnel UDP. Actua sobre la conversa TCP, així que no és una altra escriptura de la MTU de ruta del sistema operatiu, i no pot ajudar un servei UDP que ignora la negociació.

No apileu una MTU de ruta, un canvi de MTU d'interfície i un límit MSS en una sola finestra de canvis. Si el problema desapareix, no sabreu quin va importar, i els que conserveu limitaran el trànsit durant anys sense un motiu que algú recordi.

Feu-ho reversible i després demostreu-ho

El propietari real de la ruta decideix si el canvi sobreviu a una reconnexió. Un client VPN que instal·la la ruta dinàmicament normalment la reconstruirà sense la vostra mètrica, i una comanda ip route add manual aleshores sembla una solució que va fallar un dia després. Posa el valor a la configuració del gestor i, si necessiteu un experiment temporal, enregistreu primer la ruta original.

Proveu amb una connexió nova que faci l'operació que s'havia encallat, i després confirmeu que la ruta privada prevista encara guanya i que les destinacions no relacionades no han canviat. Torneu a connectar el túnel i llegiu la ruta, perquè un valor que desapareix en reconnectar no és una solució.

Si l'evidència no dona suport al canvi, traieu la substitució pel seu gestor i restaureu els atributs originals de la ruta en lloc d'esborrar-la. Després anoteu què heu mesurat i en quin camí, perquè la propera persona pugui distingir una millora real d'un experiment que s'ha deixat funcionant.

Articles relacionats