Някой иска да види какво изпращат клиентите през тунела, намира в документацията куката за свързване и започва да пише скрипт, който никога няма да получи нито един пакет. Куката е истинска и полезна, но единицата ѝ на работа е сесия, а не байт. Изборът на правилния компонент е сравнение между три места, където може да се случва работа, а решаващият въпрос е коя единица всяко от тях наистина вижда.

Какво получава куката и какво никога не получава

Куката client-connect се изпълнява веднъж, когато удостоверен клиент установи сесия, в контекста на процеса на сървъра, с документирани аргументи и стойности от средата, като общото име и зададения адрес. Тя може да запише конфигурация за клиента, да вземе решение за допускане, да задели външен ресурс или да отбележи, че връзката се е случила. Това, което не може, е да наблюдава трафик, защото до момента, в който първият пакет прекоси тунела, куката вече се е върнала.

Това не е ограничение, което да се заобикаля. Сесийно връщане назад, което се опитва да обработва поток, би трябвало да работи през целия живот на връзката, а скриптовият договор на демона не е изграден за такава форма. Питайте за какво е куката, преди да решите, че ви пречи.

Повторните свързвания също имат значение. Клиент, който прекъсне и се свърже отново, е нова сесия, затова всичко, което куката заделя, трябва да е идемпотентно или съпроводено със събитие за прекъсване, което да почиства. Състояние, което изтича при всяко повторно свързване, е обичайната първа грешка в дизайн, основан на кука.

Сесийната политика принадлежи на куката

Допускането е естествената работа на куката. Знаете кой се е свързал, откъде и с кой сертификат и можете да решите дали тази сесия да продължи, или да бъде отказана. Това решение е евтино, взема се веднъж и не изисква поглед върху нито един байт товар.

Задаването на конфигурация пасва на същата форма. Куката може да избере адреса на клиента, да изпрати опции, подходящи за тази идентичност, или да запише фрагмент, който сървърът чете за този клиент. Тъй като решението е за сесия, то остава разбираемо, когато нещо се обърка и някой трябва да обясни защо даден клиент е получил даден адрес.

Записването е третото съответствие. Одитен запис, който казва, че сесия е допусната, с нейната идентичност и време, принадлежи точно тук. Това не е журнал на трафика и не бива да се преструва на такъв. Ако по-късно някой попита какво е правил клиент вътре в тунела, отговорът трябва да дойде от другаде.

Работата с пакети принадлежи на пътя на пакетите

Ако изискването е да се виждат или променят байтове в движение, компонентът трябва да е в пътя на препращане: правило на защитна стена с опашка, кука за управление на трафика или препращач в потребителското пространство. Тези механизми виждат пакети и имат собствено състояние, собствени режими на отказ и собствен профил на производителност.

Редактирането на товара на този слой е по-трудно от четенето му. Промяната на един байт може да обезсили поле за дължина, контролна сума или машина на състоянията на протокола, а тунел от трети слой не ви пази от нищо от това. Той само означава, че външните заглавки не са тези, които редактирате. Предвидете този ремонт, преди да обещаете на някого пренаписване на съдържание.

Прихващането на интерфейс е най-евтиният инструмент в тази категория и то е наблюдение, а не редактор. Хората бъркат двете, защото и двете се описват като виждане на трафик, но прихващането произвежда файл, а пътят на пакетите произвежда решение.

Промените в приложението принадлежат на приложението

Когато целта е да се промени какво съдържа заявка или как се формира отговор, правилното място е самата услуга или прокси, което умишлено прекратява протокола. Тези компоненти вече разбират заявки, отговори и удостоверяването, което приложението очаква, а това е точно контекстът, който липсва на филтъра на пакети.

Транслацията на адреси стои в дъното на този списък по причина. Тя пренаписва адреси и портове и оставя товара непокътнат, така че не е инструмент за съдържание, колкото и често да се появява в рецепта, която споменава и съдържание.

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

Където TLS все още приключва разговора

Едно нещо оцелява след всичко изброено: трафикът в тунела, който носи HTTPS, запазва собственото си транспортно шифроване. Притежаването на ключовете на VPN ви дава вътрешния IP пакет и не ви дава сесийните ключове за сайта от другата страна.

Затова куката не може да преглежда съдържание дори по принцип и затова пътят на пакетите вижда шифротекст, освен ако внедряването умишлено не прекратява вътрешния TLS. скриптовият договор описва какво се дава на куката; той не казва нищо за товар, защото няма товар, който да се даде.

Подобни статии