IPsec-superkosto: moduso, NAT-T kaj algoritmoj ĉiuj ĝin ŝanĝas
Unu publikigita superkosta nombro priskribas unu enkapsuligon sur unu vojo. Sumu la ĉapojn, kiujn via tunelo efektive interkonsentas, kaj poste mezuru la vojon.
Ie en gvidilo estas nombro, kutime inter sesdek kaj okdek bajtoj, kiun iu subtrahis de 1500 por ricevi interfacan MTU. Tiu nombro priskribas unu specifan enkapsuligon sur unu specifa vojo. Ŝanĝu la moduson, la eksteran adresan familion, la ĉifron aŭ la ĉeeston de NAT, kaj la aritmetiko jam ne validas por via tunelo.
La nombro venis el alia tunelo
Superkosto ne estas eco de IPsec en la abstrakto. Ĝi estas eco de la paketo, kiu efektive konstruiĝas: interkonsentita moduso, ekstera ĉapo, protekta ĉapo, plenigo, integreca kampo kaj eble plia UDP-envolvaĵo.
Nombro citita por transporta moduso kun IPv4 kaj sen NAT priskribas pli malgrandan paketon ol tunela moduso kun IPv6 sub NAT-traveturo. Ambaŭ ĝustas por sia propra kazo. Kopii unu el ili en alian surlokigon estas la maniero, per kiu homoj finas kun MTU, kiu rompas grandajn transigojn. La malsukceso estas silenta, ĉar malgrandaj petoj daŭre funkcias.
Sumu la tavolojn, kiuj vere ĉeestas
Komencu de la ekstera IP-ĉapo kaj iru enen. En tunela moduso la originala paketo estas interne, do la ekstera ĉapo estas aldono, ne anstataŭo. RFC 4303 priskribas la ESP-ĉapon, la plenigon kaj la integrecajn datumojn, kiuj sekvas ĝin.
| 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 |
Neniu el tiuj vicoj estas konstanta inter surlokigoj, kaj la pleniga vico eĉ ne estas konstanta ene de unu surlokigo. Tial unu publikigita superkosta nombro seniluziigas.
Du ejoj povas malkonsenti pri la sama tunelo
La protektita paketo ankoraŭ devas transiri la eksteran vojon, kaj la ekstera vojo ne samas ĉie. PPPoE-aliĝligilo portas malpli ol pura Ethernet-segmento. Mobila reto povas pli mallarĝiĝi, kaj provizanto, kiu tuneligas sian propran trafikon, aldonas plian enkapsuligon, kiun neniu menciis. Tunelo, kiu funkcias sur unu ligilo kaj malsukcesas sur alia, priskribas la duan ligilon, ne la protokolon.
Ankaŭ la du direktoj povas diferenci. Nesimetria vojo povas doni al vi funkcian alŝuton kaj haltintan elŝuton, kio aspektas kiel aplika problemo ĝis vi rigardos pakegajn grandojn anstataŭ atingeblon. Sukcesa malgranda ping pruvas tre malmulte pri plengranda respondo.
Mezuru anstataŭ subtrahi
Trovu la plej grandan datagramon, kiu postvivas la vojon. Poste komparu ĝin kun la valoro, kiun la interfaco raportas:
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'
Malaltigu la ping-grandon ĝis respondoj alvenos, kaj traktu la plej grandan funkcian valoron kiel la buĝeton por tiu vojo. La eligo de xfrm diras al vi, kiu moduso kaj kiuj algoritmoj estis interkonsentitaj, kaj tio estas la enigo por ĉiu honesta kalkulo. La kaptaĵo konfirmas, ĉu ESP aŭ UDP-enkapsuligita ESP estas sur la drato, kaj tio solvas la NAT-demandon sen konjekti.
Rezervu ankaŭ unu valoron por la rega ebeno. IKE-manpremaj paketoj havas alian strukturon ol datumpaketoj, do grando derivita el manprema kaptaĵo ne estas MTU de la datuma ebeno.
Metu la nombron tien, kie ĝi apartenas
Por TCP tra tunelo, MSS-premo ofte estas la malplej invada kontrolo, ĉar ĝi malgrandigas tion, kion la finpunktoj sendas, sen ŝanĝi la tunelon mem. Por vojbazita tunelo, agordu la MTU de la tunela interfaco intence kaj dokumentu kial. Fari ambaŭ samtempe kaj poste mezuri donas al vi neniun informon pri tio, kiu helpis.
Tenu la interkonsentitan moduson, la eksteran familion, la NAT-staton kaj la ripeteblan simptomon kune en la bileto. Registrita aro de kvar faktoj superas memoritan konstanton, kaj ĝi estas la sola versio de tio, kio postvivas la sekvan klientan ĝisdatigon.