Неко жели да прегледа шта клијенти шаљу кроз тунел, пронађе куку за повезивање у документацији и почне да пише скрипту која никада неће примити ни један пакет. Кука је стварна и корисна, али њена јединица рада је сесија, а не бајт. Избор исправне компоненте је поређење три места на којима се рад може одвијати, а одлучујуће питање је коју јединицу свако од њих заиста може да види.

Шта кука прима и шта никада не прима

Кука за повезивање клијента извршава се једном када аутентификовани клијент успостави сесију, у контексту процеса сервера, са документованим аргументима и вредностима окружења као што су заједничко име и додељена адреса. Може да пише конфигурацију по клијенту, донесе одлуку о пријему, додели спољни ресурс или забележи да се веза догодила. Оно што не може јесте да посматра саобраћај, јер у тренутку када први пакет пређе тунел кука се већ вратила.

То није ограничење које треба заобилазити. Повратни позив сесије који би покушао да обрађује ток морао би да ради цео животни век везе, а скриптни уговор демона није направљен за такав облик. Питајте чему кука служи пре него што закључите да вам смета.

Поновна повезивања су такође важна. Клијент који падне и поново се повеже је нова сесија, па све што кука додели мора бити идемпотентно или упарено са догађајем прекида који почисти. Стање које цури при сваком поновном повезивању уобичајена је прва грешка у дизајну заснованом на куки.

Сесијска политика припада куки

Пријем је природни посао куке. Знате ко се повезао, одакле и са којим сертификатом, и можете да одлучите да ли ће се ова сесија наставити или бити одбијена. Та одлука је јефтина, доноси се једном и не захтева гледање у иједан бајт корисног терета.

Додела конфигурације одговара истом облику. Кука може да изабере адресу клијента, пошаље опције примерене том идентитету или напише фрагмент који сервер чита за овог клијента. Пошто је одлука по сесији, остаје разумљива када нешто пође по злу и неко мора да објасни зашто је одређени клијент добио одређену адресу.

Бележење је треће поклапање. Ревизијски запис који каже да је сесија прихваћена, са њеним идентитетом и временом, припада тачно овде. То није дневник саобраћаја и не треба да се претвара да јесте. Ако неко касније пита шта је клијент радио унутар тунела, одговор мора да дође са другог места.

Рад са пакетима припада путањи пакета

Ако је захтев да се виде или мењају бајтови у лету, компонента мора бити на путањи прослеђивања: правило заштитног зида са редом, кука за контролу саобраћаја или прослеђивач у корисничком простору. Ти механизми виде пакете и имају сопствено стање, сопствене начине квара и сопствени профил перформанси.

Уређивање корисног терета на том слоју теже је од читања. Промена једног бајта може да поништи поље дужине, контролну суму или машину стања протокола, а тунел трећег слоја вас не штити ни од чега од тога. Само значи да спољна заглавља нису она која уређујете. Планирајте тај поправак пре него што икоме обећате преписивање садржаја.

Снимање интерфејса најјефтинији је алат у овој категорији и оно је посматрање, а не уређивач. Људи бркају то двоје јер се обоје описује као виђење саобраћаја, али снимање производи датотеку, а путања пакета производи одлуку.

Промене апликације припадају апликацији

Када је циљ да се промени шта захтев садржи или како се одговор формира, право место је сама услуга или прокси који намерно прекида протокол. Те компоненте већ разумеју захтеве, одговоре и аутентификацију коју апликација очекује, а то је управо контекст који филтеру пакета недостаје.

Превођење адреса стоји на дну ове листе с разлогом. Оно преписује адресе и портове и оставља корисни терет на миру, па није алат за садржај ма колико се често појављивао у рецепту који такође спомиње садржај.

Раздвајање ових граница чини дизајн објашњивим. Сесијска политика у куки, рад са пакетима на путањи пакета и промена апликације тамо где се протокол намерно прекида: три реченице које служе и као контролна листа за преглед.

Где TLS још увек завршава разговор

Једна ствар надживи све наведено: саобраћај унутар тунела који носи HTTPS задржава сопствено транспортно шифровање. Држање VPN кључева даје вам унутрашњи IP пакет и не даје вам сесијске кључеве за веб страницу на другом крају.

Зато кука не може да прегледа садржај чак ни у принципу и зато путања пакета види шифровани текст, осим ако имплементација намерно не прекида унутрашњи TLS. скриптни уговор описује шта се даје куки; не говори ништа о корисном терету јер нема шта да се да.

Повезани чланци