Kuka za povezivanje je sesijska politika, a ne filtar paketa
Kuka za povezivanje klijenta izvodi se jednom po sesiji i nikada ne vidi korisni teret. Smjestite prihvat tamo gdje postoje sesije, a promjenu sadržaja tamo gdje postoje zahtjevi.
Netko želi pregledati što klijenti šalju kroz tunel, pronađe kuku za povezivanje u dokumentaciji i počne pisati skriptu koja nikada neće primiti ni jedan paket. Kuka je stvarna i korisna, ali njezina je jedinica rada sesija, a ne bajt. Odabir ispravne komponente usporedba je triju mjesta na kojima se rad može odvijati, a odlučujuće je pitanje koju jedinicu svako od njih doista može vidjeti.
Što kuka prima i što nikada ne prima
Kuka za povezivanje klijenta izvodi se jednom kada autentificirani klijent uspostavi sesiju, u kontekstu procesa poslužitelja, s dokumentiranim argumentima i vrijednostima okoline kao što su zajedničko ime i dodijeljena adresa. Može pisati konfiguraciju po klijentu, donijeti odluku o prihvatu, dodijeliti vanjski resurs ili zabilježiti da se veza dogodila. Ono što ne može jest promatrati promet, jer u trenutku kada prvi paket prijeđe tunel kuka se već vratila.
To nije ograničenje koje treba zaobilaziti. Povratni poziv sesije koji bi pokušao obrađivati tok morao bi raditi cijeli životni vijek veze, a skriptni ugovor demona nije napravljen za takav oblik. Pitajte čemu kuka služi prije nego zaključite da vam smeta.
Ponovna povezivanja također su važna. Klijent koji padne i ponovno se poveže nova je sesija, pa sve što kuka dodijeli mora biti idempotentno ili upareno s događajem prekida koji počisti. Stanje koje curi pri svakom ponovnom povezivanju uobičajena je prva pogreška u dizajnu zasnovanom na kuki.
Sesijska politika pripada kuki
Prihvat je prirodni posao kuke. Znate tko se povezao, odakle i s kojim certifikatom, i možete odlučiti hoće li se ova sesija nastaviti ili biti odbijena. Ta je odluka jeftina, donosi se jednom i ne zahtijeva gledanje u ijedan bajt korisnog tereta.
Dodjela konfiguracije odgovara istom obliku. Kuka može odabrati adresu klijenta, poslati opcije primjerene tom identitetu ili napisati ulomak koji poslužitelj čita za ovog klijenta. Budući da je odluka po sesiji, ostaje razumljiva kada nešto pođe po zlu i netko mora objasniti zašto je određeni klijent dobio određenu adresu.
Bilježenje je treće poklapanje. Revizijski zapis koji kaže da je sesija prihvaćena, s njezinim identitetom i vremenom, pripada točno ovdje. To nije dnevnik prometa i ne treba se pretvarati da jest. Ako netko kasnije pita što je klijent radio unutar tunela, odgovor mora doći s drugog mjesta.
Rad s paketima pripada putu paketa
Ako je zahtjev vidjeti ili mijenjati bajtove u letu, komponenta mora biti na putu prosljeđivanja: pravilo vatrozida s redom čekanja, kuka za nadzor prometa ili prosljeđivač u korisničkom prostoru. Ti mehanizmi vide pakete i imaju vlastito stanje, vlastite načine kvara i vlastiti profil učinkovitosti.
Uređivanje korisnog tereta na tom sloju teže je od čitanja. Promjena jednog bajta može poništiti polje duljine, kontrolni zbroj ili stroj stanja protokola, a tunel trećeg sloja ne štiti vas ni od čega od toga. Samo znači da vanjska zaglavlja nisu ona koja uređujete. Planirajte taj popravak prije nego ikome obećate prepisivanje sadržaja.
Snimanje sučelja najjeftiniji je alat u ovoj kategoriji i ono je promatranje, a ne uređivač. Ljudi brkaju to dvoje jer se oboje opisuje kao viđenje prometa, ali snimanje stvara datoteku, a put paketa stvara odluku.
Promjene aplikacije pripadaju aplikaciji
Kada je cilj promijeniti što zahtjev sadrži ili kako se oblikuje odgovor, pravo je mjesto sama usluga ili proxy koji namjerno prekida protokol. Te komponente već razumiju zahtjeve, odgovore i autentifikaciju koju aplikacija očekuje, a to je upravo kontekst koji filtru paketa nedostaje.
Prevođenje adresa nalazi se na dnu ovog popisa s razlogom. Prepisuje adrese i portove i ostavlja korisni teret na miru, pa nije alat za sadržaj ma koliko se često pojavljivao u receptu koji također spominje sadržaj.
Razdvajanje ovih granica čini dizajn objasnjivim. Sesijska politika u kuki, rad s paketima na putu paketa i promjena aplikacije tamo gdje se protokol namjerno prekida: tri rečenice koje služe i kao kontrolni popis za pregled.
Gdje TLS još uvijek završava razgovor
Jedna stvar nadživi sve navedeno: promet unutar tunela koji nosi HTTPS zadržava vlastito transportno šifriranje. Držanje VPN ključeva daje vam unutarnji IP paket i ne daje vam sesijske ključeve za web stranicu na drugom kraju.
Zato kuka ne može pregledavati sadržaj čak ni u načelu i zato put paketa vidi šifrirani tekst, osim ako implementacija namjerno ne prekine unutarnji TLS. skriptni ugovor opisuje što se daje kuki; ne govori ništa o korisnom teretu jer nema što dati.