Stroški IPsec: način, NAT-T in algoritmi jih spreminjajo
Ena objavljena številka stroškov opisuje eno inkapsulacijo na eni poti. Seštejte glave, o katerih se vaš tunel v resnici dogovarja, in nato izmerite pot.
Nekje v priročniku je številka, običajno med šestdeset in osemdeset bajti, ki jo je nekdo odštel od 1500, da bi dobil MTU vmesnika. Ta številka opisuje eno določeno inkapsulacijo na eni določeni poti. Spremenite način, zunanjo družino naslovov, šifro ali prisotnost NAT, in aritmetika ne velja več za vaš tunel.
Številka je prišla iz drugega tunela
Stroški niso lastnost IPsec v abstraktnem smislu. So lastnost paketa, ki se v resnici zgradi: dogovorjeni način, zunanja glava, zaščitna glava, zapolnitev, polje celovitosti in morda dodatno ovoj UDP.
Številka, navedena za transportni način z IPv4 in brez NAT, opisuje manjši paket kot tunelski način z IPv6 pod prehodom NAT. Obe sta pravilni za svoj primer. Kopiranje katere koli od njiju v drugo namestitev je način, kako ljudje končajo z MTU, ki lomi velike prenose. Napaka je tiha, ker majhne zahteve še naprej delujejo.
Seštejte plasti, ki v resnici so
Začnite pri zunanji glavi IP in pojdite navznoter. V tunelskem načinu je izvirni paket znotraj, zato je zunanja glava dodatek in ne zamenjava. RFC 4303 opisuje glavo ESP, zapolnitev in podatke celovitosti, ki ji sledijo.
| 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 |
Nobena od teh vrstic ni nespremenljiva med namestitvami, vrstica zapolnitve pa ni nespremenljiva niti znotraj ene namestitve. To je ves razlog, da ena objavljena številka stroškov razočara.
Dve lokaciji se lahko ne strinjata glede istega tunela
Zaščiteni paket mora še vedno prečkati zunanjo pot, zunanja pot pa ni povsod enaka. Dostopna povezava PPPoE nosi manj kot čist segment Ethernet. Mobilno omrežje se lahko še skrči, ponudnik, ki tunelira svoj promet, pa doda še eno inkapsulacijo, ki je nihče ni omenil. Tunel, ki deluje na eni povezavi in odpove na drugi, opisuje drugo povezavo, ne protokola.
Tudi obe smeri se lahko razlikujeta. Asimetrična pot vam lahko da delujočo nadgradnjo in zataknjen prenos, kar se bere kot težava aplikacije, dokler ne pogledate velikosti paketov namesto dosegljivosti. Uspešen majhen ping dokaže o odgovoru polne velikosti zelo malo.
Merite namesto odštevanja
Poiščite največji datagram, ki preživi pot. Nato ga primerjajte z vrednostjo, ki jo poroča vmesnik:
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'
Znižujte velikost pinga, dokler ne začnejo prihajati odgovori, in največjo delujočo vrednost vzemite kot proračun za to pot. Izhod xfrm vam pove, kateri način in kateri algoritmi so bili dogovorjeni, in to je vhod za vsak pošten izračun. Zajem potrdi, ali je na žici ESP ali ESP, zavit v UDP, in to razreši vprašanje NAT brez ugibanja.
Rezervirajte eno vrednost tudi za krmilno ravnino. Paketi rokovanja IKE imajo drugačno zgradbo kot podatkovni paketi, zato velikost, izpeljana iz zajema rokovanja, ni MTU podatkovne ravni.
Postavite številko tja, kamor sodi
Za TCP skozi tunel je omejitev MSS pogosto najmanj invaziven nadzor, ker zmanjša, kar pošiljajo končne točke, ne da bi spremenila sam tunel. Za tunel, ki temelji na poteh, namerno nastavite MTU tunelskega vmesnika in dokumentirajte zakaj. Če naredite oboje hkrati in nato merite, ne izveste ničesar o tem, kaj je pomagalo.
V zahtevku hranite skupaj dogovorjeni način, zunanjo družino, stanje NAT in ponovljiv simptom. Zapisana množica štirih dejstev premaga zapomnjeno konstanto in to je edina različica tega, ki preživi naslednjo posodobitev odjemalca.