Туннель үзүлөт, kill switch иштетилет, ал эми төрттөн үчү бүткөн жүктөө же катып калат, же дароо ишке ашпайт. Бул эки жыйынтык коргоонун ар башка деңгээлинен эмес, аткаруунун ар башка тандоосунан келип чыгат. Ташталган пакет байланышты күтүүдө калтырат, ал эми четке кагылган пакет аны жабат жана колдонмого билдирет. Кайсы жүрүм-турум керек экенин чечүү — дизайн маселеси, ал эми аны текшерүү — өзүнчө көнүгүү.

Таштоо, четке кагуу жана кайра коюу ар башка

Трафикти таштаган firewall эрежеси пакетти ыргытып, эч нерсе кайтарбайт, ошондуктан жөнөтүүчү өз таймерлери менен кайра жөнөтүүнү улантат. TCP reset менен четке кагуучу эреже байланышты дароо жабат жана колдонмо катаны көрөт. Көпчүлүк kill switch таштайт, анткени четке кагуу саясатты ачып берет жана таштоо өлгөн тармактын жүрүм-турумуна окшош.

Бөгөттөө — socketти жабуу деген эмес. Колдонмо дагы эле орнотулган абалдагы дескрипторду кармап турат, жетишпеген нерсе — пакеттер гана. Ошондуктан баракча операциялык система байланыш бар деп талашканча бир нече мүнөт спиннерде тура алат. Колдонмонун билдирүүсүнөн божомолдобой, документтелген аткаруу эрежесин окуңуз, анткени эки жүрүм-турум тең тармак өчкөндөй көрүнөт.

Үзүлүш уланганда колдонмо эмне кылат

TCP өсүп жаткан кечигүүлөр менен кайра жөнөтөт, ал эми Linuxтун демейки кайра аракет бюджети секунддарда эмес, болжол менен он беш мүнөттө бүтөт. Ошого чейин socket пайдалуу түрдө ачык да, жабык да эмес. Өз keepalive же суроо күтүү убактысы бар колдонмолор көбүнчө эртерек баш тартат, ошондуктан бир машинадагы эки программа бир үзүлүш учурунда ар башка жүрүм-турум көрсөтөт.

Туннель кайтканда жергиликтүү socket өзгөрбөйт, бирок жол өзгөрүшү мүмкүн. Жаңы коомдук баштапкы дарек серверде башка төрттүктү жаратат, ошондуктан алыскы тараптагы абалдуу firewall эми сессияга дал келбейт. Клиент эч качан ката көрбөсө да байланыш өлүк.

Калыбына келүү керекпи, аны чечиңиз

Эки келишимдин бирин тандаңыз. Же сессия кыска үзүлүштү өтүшү керек, бул туруктуу даректоону жана абалын сактаган серверди талап кылат, же колдонмо таза кайра туташышы керек, бул кайталоого коопсуз кайра аракет логикасын талап кылат. Ортодогу нерсе эң начар жыйынтык берет: сервер мурун эле жазып койгонду кайра жөнөткөн клиент же эч ким көрө албаган сессия үчүн ийгилик билдирген клиент.

Туруктуу даректоо — адамдар унутуучу бөлүк, анткени башка коомдук дарекке конгон кайра туташуу клиенттин socketи соо көрүнсө да сервер тараптагы абалды жараксыз кылат. Эки келишимдин кайсынысы кайсы колдонмого тиешелүү экенин жазыңыз, анткени алар сейрек баары дал келет.

Блоктоону жана калыбына келүүнү өзүнчө текшериңиз

Агып кетүүдөн коргоону жана сессиянын тирүү калышын эки касиет катары караңыз, анткени бирөөнүн өтүшү экинчиси жөнүндө эч нерсе айтпайды. Тирүү калган сессия түз трафиктин блоктолгонуна далил эмес, ал эми өлгөн сессия ар бир түз маршруттун блоктолгонуна далил эмес.

ss -tnp state established '( dport = :443 )'
sudo conntrack -L -p tcp --dport 443
sudo tcpdump -ni any 'tcp port 443 and tcp[tcpflags] & tcp-syn != 0'

Калыбына келүүнү байкоодо зыянсыз сынак аракетин колдонуңуз, ошентип кайталанган жөнөтүү окуяга айланбайт. Чындыгында көргөн ишке ашпоо түрүн жазыңыз: колдонмо эмнени көрсөттү, socket тирүү калдыбы жана ал өзү качан калыбына келди.

Күтүлгөн жүрүм-турумду аткаруу эрежесинин жанына жазып, күнүн коюңуз. Бул эрежени кийинки өзгөрткөн адам жайылтуу кайсы келишимге убада бергенин билиши керек.

Тектеш макалалар