Sobrecàrrega d’IPsec: mode, NAT-T i algorismes, tot ho canvia
Una sola xifra publicada de sobrecàrrega descriu un encapsulament en un camí. Sumeu les capçaleres que el vostre túnel negocia de debò i després mesureu el camí.
En algun lloc d’una guia hi ha un número, normalment entre seixanta i vuitanta bytes, que algú va restar de 1500 per obtenir una MTU d’interfície. Aquest número descriu un encapsulament concret en un camí concret. Canvieu el mode, la família d’adreces exterior, el xifratge o la presència de NAT, i l’aritmètica ja no s’aplica al vostre túnel.
El número ve d’un altre túnel
La sobrecàrrega no és una propietat d’IPsec en abstracte. És una propietat del paquet que realment es construeix: un mode negociat, una capçalera exterior, una capçalera de protecció, farciment, un camp d’integritat i potser un embolcall UDP addicional.
Una xifra citada per al mode transport amb IPv4 i sense NAT descriu un paquet més petit que el mode túnel amb IPv6 sota travessa de NAT. Totes dues són correctes per al seu cas. Copiar qualsevol de les dues a un desplegament diferent és com la gent acaba amb una MTU que trenca les transferències grans. La fallada és silenciosa perquè les peticions petites continuen funcionant.
Sumeu les capes que hi són de debò
Comenceu per la capçalera IP exterior i aneu cap endins. En mode túnel el paquet original és a dins, així que la capçalera exterior és un afegit i no un reemplaçament. RFC 4303 descriu la capçalera ESP, el farciment i les dades d’integritat que la segueixen.
| Layer | What it adds | When it applies |
|---|---|---|
| Outer IP header | 20 bytes for IPv4, 40 for IPv6 | Always, and 40 rather than 20 if the outer path is v6 |
| ESP header | 8 bytes of SPI and sequence number | Always |
| Block cipher IV | 8 to 16 bytes depending on the transform | When the negotiated cipher uses one |
| Padding and trailer | Padding to the block size, plus two trailer bytes | Always, and the amount varies with payload length |
| Integrity data | 12 to 16 bytes for common authenticated ciphers | When integrity protection is negotiated |
| UDP encapsulation | 8 bytes | NAT traversal on port 4500, which is common for clients behind NAT |
Cap d’aquestes files no és constant entre desplegaments, i la fila del farciment no és constant ni dins d’un sol desplegament. Aquesta és tota la raó per la qual una sola xifra publicada de sobrecàrrega decep.
Dos llocs poden discrepar sobre el mateix túnel
El paquet protegit encara ha de travessar el camí exterior, i el camí exterior no és igual a tot arreu. Un enllaç d’accés PPPoE porta menys que un segment Ethernet net. Una xarxa mòbil pot encongir-se més, i un proveïdor que tunelitza el seu propi trànsit afegeix un altre encapsulament que ningú no havia esmentat. Un túnel que funciona en un enllaç i falla en un altre està descrivint el segon enllaç, no el protocol.
Les dues direccions també poden diferir. Una ruta asimètrica us pot donar una pujada que funciona i una baixada encallada, cosa que es llegeix com un problema d’aplicació fins que mireu les mides dels paquets en lloc de l’abastabilitat. Un ping petit que té èxit demostra molt poc sobre una resposta de mida completa.
Mesureu en lloc de restar
Trobeu el datagrama més gran que sobreviu al camí. Després compareu-lo amb el valor que informa la interfície:
ip link show eth0 | grep -o 'mtu [0-9]*' ip xfrm state list ping -M do -s 1400 198.51.100.7 ping -M do -s 1372 198.51.100.7 tcpdump -ni any -c 20 'esp or udp port 4500'
Baixeu la mida del ping fins que arribin respostes, i preneu el valor més gran que funcioni com a pressupost per a aquell camí. La sortida d’xfrm us diu quin mode i quins algorismes s’han negociat, que és l’entrada de qualsevol càlcul honest. La captura confirma si a l’enllaç hi ha ESP o ESP encapsulat en UDP, cosa que resol la qüestió del NAT sense endevinar.
Reserveu també un valor per al pla de control. Els paquets d’encaixada de mans IKE tenen una estructura diferent de la dels paquets de dades, així que una mida derivada d’una captura d’encaixada de mans no és una MTU de pla de dades.
Poseu el número on li toca
Per al TCP a través d’un túnel, una limitació d’MSS és sovint el control menys invasiu, perquè redueix el que envien els extrems sense canviar el túnel mateix. Per a un túnel basat en rutes, fixeu la MTU de la interfície del túnel deliberadament i documenteu per què. Fer les dues coses alhora i després mesurar no us dona cap informació sobre quina va ajudar.
Mantingueu junts al tiquet el mode negociat, la família exterior, la condició de NAT i el símptoma reproduïble. Un conjunt registrat de quatre fets supera una constant recordada, i és l’única versió d’això que sobreviu a la propera actualització del client.