Připojovací hák je politika relace, ne filtr paketů
Hák připojení klienta se spustí jednou za relaci a nikdy nevidí obsah. Přijetí patří tam, kde existují relace, a změna obsahu tam, kde existují požadavky.
Někdo chce prozkoumat, co klienti posílají tunelem, najde v dokumentaci připojovací hák a začne psát skript, který nikdy nedostane jediný paket. Hák je skutečný a užitečný, ale jeho jednotkou práce je relace, ne bajt. Volba správné komponenty je srovnání tří míst, kde může práce probíhat, a rozhodující otázkou je, kterou jednotku každé z nich skutečně vidí.
Co hák dostane a co nikdy nedostane
Hák připojení klienta se spustí jednou, když ověřený klient naváže relaci, v kontextu procesu serveru, s dokumentovanými argumenty a hodnotami prostředí, jako je obecné jméno a přidělená adresa. Může zapsat konfiguraci pro klienta, rozhodnout o přijetí, přidělit vnější prostředek nebo zaznamenat, že spojení nastalo. Co nedokáže, je pozorovat provoz, protože v okamžiku, kdy tunelem projde první paket, se hák už vrátil.
To není omezení, které by se mělo obcházet. Relační zpětné volání, které by se pokoušelo zpracovávat proud, by muselo běžet po celou dobu života spojení, a skriptovací smlouva démona není pro takový tvar postavena. Ptejte se, k čemu hák je, než usoudíte, že vám překáží.
Na opětovných připojeních také záleží. Klient, který vypadne a znovu se připojí, je nová relace, takže vše, co hák přidělí, musí být idempotentní nebo spárované s událostí odpojení, která to uklidí. Stav, který uniká při každém opětovném připojení, je obvyklá první chyba v návrhu založeném na háku.
Politika relace patří do háku
Přijetí je přirozená práce háku. Víte, kdo se připojil, odkud a s jakým certifikátem, a můžete rozhodnout, zda tato relace má pokračovat, nebo být odmítnuta. To rozhodnutí je levné, stane se jednou a nevyžaduje pohled na jediný bajt obsahu.
Přiřazení konfigurace odpovídá stejnému tvaru. Hák může vybrat adresu klienta, poslat volby odpovídající této identitě nebo zapsat fragment, který server pro tohoto klienta čte. Protože je rozhodnutí na relaci, zůstává srozumitelné, když se něco pokazí a někdo musí vysvětlit, proč konkrétní klient dostal konkrétní adresu.
Zaznamenávání je třetí shoda. Auditní záznam, který říká, že relace byla přijata, s její identitou a časem, patří přesně sem. Není to protokol provozu a nemělo by předstírat, že jím je. Pokud se někdo později zeptá, co klient uvnitř tunelu dělal, odpověď musí přijít odjinud.
Práce s pakety patří na cestu paketů
Pokud je požadavkem vidět nebo měnit bajty za letu, musí být komponenta na cestě předávání: pravidlo firewallu s frontou, hák pro řízení provozu nebo předávací prvek v uživatelském prostoru. Tyto mechanismy vidí pakety a mají vlastní stav, vlastní režimy selhání a vlastní profil výkonu.
Úprava obsahu na této vrstvě je těžší než jeho čtení. Změna jednoho bajtu může zneplatnit pole délky, kontrolní součet nebo stavový automat protokolu a tunel třetí vrstvy vás před ničím z toho neochrání. Znamená jen, že vnější hlavičky nejsou ty, které upravujete. Naplánujte si tuto opravu, než někomu slíbíte přepis obsahu.
Zachytávání na rozhraní je nejlevnější nástroj v této kategorii a je to pozorování, nikoli editor. Lidé si to pletou, protože obojí se popisuje jako vidění provozu, ale zachytávání vytváří soubor a cesta paketů vytváří rozhodnutí.
Změny aplikace patří do aplikace
Když je cílem změnit, co požadavek obsahuje nebo jak se tvoří odpověď, správným místem je sama služba nebo proxy, která protokol záměrně ukončuje. Tyto komponenty už rozumějí požadavkům, odpovědím a ověřování, které aplikace očekává, a to je přesně kontext, který filtru paketů chybí.
Překlad adres stojí na konci tohoto seznamu z nějakého důvodu. Přepisuje adresy a porty a obsah nechává být, takže to není nástroj pro obsah, ať se v receptu, který zmiňuje i obsah, objevuje jakkoli často.
Právě oddělení těchto hranic dělá návrh vysvětlitelným. Politika relace v háku, práce s pakety na cestě paketů a změna aplikace tam, kde se protokol záměrně ukončuje: tři věty, které zároveň slouží jako kontrolní seznam pro revizi.
Kde TLS ještě ukončuje rozhovor
Jedna věc přežije vše výše uvedené: provoz uvnitř tunelu, který nese HTTPS, si zachovává vlastní transportní šifrování. Držení klíčů VPN vám dá vnitřní IP paket a nedá vám relační klíče k webu na druhém konci.
Proto hák nemůže obsah prohlížet ani v zásadě, a proto cesta paketů vidí šifrovaný text, pokud nasazení vnitřní TLS záměrně neukončí. skriptovací smlouva popisuje, co hák dostane; o obsahu neříká nic, protože není co dát.