IPsec trošak: mod, NAT-T i algoritmi sve to mijenjaju
Jedna objavljena brojka troška opisuje jednu inkapsulaciju na jednoj putanji. Saberite zaglavlja koja vaš tunel zaista dogovori, pa izmjerite putanju.
Negdje u nekom vodiču postoji broj, obično između šezdeset i osamdeset bajtova, koji je neko oduzeo od 1500 da bi dobio MTU interfejsa. Taj broj opisuje jednu konkretnu inkapsulaciju na jednoj konkretnoj putanji. Promijenite mod, vanjsku porodicu adresa, šifru ili prisustvo NAT-a i aritmetika više ne važi za vaš tunel.
Broj je došao iz drugog tunela
Trošak nije svojstvo IPsec-a u apstraktnom smislu. To je svojstvo paketa koji se zaista gradi: dogovoreni mod, vanjsko zaglavlje, zaštitno zaglavlje, dopuna, polje integriteta i moguće dodatni UDP omotač.
Brojka navedena za transportni mod s IPv4 i bez NAT-a opisuje manji paket od tunelskog moda s IPv6 pod NAT prolazom. Obje su tačne za svoj slučaj. Kopiranje bilo koje od njih u drugu instalaciju je način na koji ljudi završe s MTU-om koji lomi velike prenose. Kvar je tih jer mali zahtjevi nastavljaju raditi.
Saberite slojeve koji zaista postoje
Pođite od vanjskog IP zaglavlja i idite prema unutra. U tunelskom modu originalni paket je unutra, pa je vanjsko zaglavlje dodatak, a ne zamjena. RFC 4303 opisuje ESP zaglavlje, dopunu i podatke integriteta koji ga slijede.
| 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 |
Nijedan od tih redova nije stalan među instalacijama, a red s dopunom nije stalan ni unutar jedne instalacije. Upravo je to razlog zašto jedna objavljena brojka troška razočara.
Dvije lokacije mogu se ne složiti oko istog tunela
Zaštićeni paket ipak mora prijeći vanjsku putanju, a vanjska putanja nije svuda ista. PPPoE pristupna veza nosi manje od čistog Ethernet segmenta. Mobilna mreža može se dodatno smanjiti, a provajder koji tunelira vlastiti promet dodaje još jednu inkapsulaciju koju niko nije spomenuo. Tunel koji radi na jednoj vezi, a pada na drugoj, opisuje drugu vezu, a ne protokol.
Oba smjera se također mogu razlikovati. Asimetrična ruta može vam dati radni upload i zaglavljeni download, što izgleda kao problem aplikacije dok ne pogledate veličine paketa umjesto dostupnosti. Uspješan mali ping dokazuje vrlo malo o odgovoru pune veličine.
Mjerite umjesto da oduzimate
Nađite najveći datagram koji preživi putanju. Zatim ga uporedite s vrijednošću koju interfejs prijavljuje:
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'
Spuštajte veličinu pinga dok ne stignu odgovori i uzmite najveću radnu vrijednost kao budžet za tu putanju. Izlaz xfrm-a kaže koji su mod i koji algoritmi dogovoreni, a to je ulaz za svaku poštenu računicu. Snimak potvrđuje je li na žici ESP ili ESP umotan u UDP, što rješava pitanje NAT-a bez nagađanja.
Odvojite jednu vrijednost i za kontrolnu ravan. IKE paketi rukovanja imaju drugačiju strukturu od podatkovnih paketa, pa veličina izvedena iz snimka rukovanja nije MTU podatkovne ravni.
Stavite broj tamo gdje mu je mjesto
Za TCP kroz tunel, MSS stezanje je često najmanje invazivna kontrola, jer smanjuje ono što krajnje točke šalju bez promjene samog tunela. Za tunel zasnovan na rutama, postavite MTU tunelskog interfejsa namjerno i dokumentirajte zašto. Ako uradite oboje odjednom i zatim mjerite, ne dobijate nikakvu informaciju o tome šta je pomoglo.
Držite dogovoreni mod, vanjsku porodicu, stanje NAT-a i ponovljivi simptom zajedno u tiketu. Zabilježen skup od četiri činjenice pobjeđuje zapamćenu konstantu i to je jedina verzija ovoga koja preživi sljedeću nadogradnju klijenta.