Kill switch yoqilganda: ochiq TCP seanslariga nima bo‘ladi?
Bloklangan paket yopilgan ulanish emas. Sessiya tanaffusni o‘tishi kerakmi, shuni hal qiling, so‘ngra bloklash va tiklashni ikki alohida xususiyat sifatida sinang.
Tunnel uziladi, kill switch yoqiladi va to‘rtdan uch qismi tugagan yuklab olish yo qotib qoladi, yo darhol muvaffaqiyatsiz tugaydi. Bu ikki natija himoyaning turli darajalaridan emas, balki tatbiq etishning turli tanlovlaridan kelib chiqadi. Tashlab yuborilgan paket ulanishni kutishda qoldiradi, rad etilgan paket esa uni yopadi va ilovaga xabar beradi. Qaysi xatti-harakat kerakligini hal qilish dizayn masalasi, uni sinash esa alohida mashqdir.
Tashlash, rad etish va qayta o‘rnatish boshqacha
Trafikni tashlaydigan firewall qoidasi paketni uloqtiradi va hech narsa qaytarmaydi, shuning uchun jo‘natuvchi o‘z taymerlari bo‘yicha qayta yuborishda davom etadi. TCP reset bilan rad etadigan qoida ulanishni darhol yopadi va ilova xatoni ko‘radi. Aksariyat kill switch tashlaydi, chunki rad etish siyosatni oshkor qilardi va tashlash o‘lgan tarmoq xatti-harakatiga o‘xshaydi.
Bloklash soketni yopish bilan bir xil emas. Ilova hali ham o‘rnatilgan holatdagi deskriptorni ushlab turadi, faqat paketlar yetishmaydi. Shuning uchun operatsion tizim ulanish borligini ta’kidlab turganda sahifa bir necha daqiqa spinnerda qolishi mumkin. Ilova xabaridan taxmin qilish o‘rniga hujjatlashtirilgan tatbiqni o‘qing, chunki ikkala xatti-harakat ham tarmoq qulaganiga o‘xshaydi.
Tanaffus davom etayotganda ilova nima qiladi
TCP ortib boruvchi kechikishlar bilan qayta yuboradi va Linux’ning standart qayta urinish byudjeti soniyalarda emas, taxminan chorak soatda tugaydi. Ungacha soket na foydali ochiq, na yopiq. O‘z keepalive yoki so‘rov muddati bo‘lgan ilovalar ko‘pincha ertaroq taslim bo‘ladi, shuning uchun bir mashinadagi ikki dastur bitta uzilish paytida turlicha tutadi.
Tunnel qaytganda mahalliy soket o‘zgarmaydi, lekin yo‘l o‘zgargan bo‘lishi mumkin. Yangi ommaviy manba manzili serverda boshqa to‘rtlik hosil qiladi, shuning uchun narigi tomondagi holatli firewall endi seansga mos kelmaydi. Mijoz hech qachon xato ko‘rmagan bo‘lsa ham ulanish o‘lgan.
Tiklash zarurligini hal qiling
Ikki shartnoma o‘rtasidan birini tanlang. Yo sessiya qisqa tanaffusni o‘tishi kerak, bu barqaror manzillash va holatini saqlaydigan serverni talab qiladi, yo ilova toza qayta ulanishi kerak, bu takrorlash uchun xavfsiz qayta urinish mantiqini talab qiladi. Ular orasidagi har qanday narsa eng yomon natijani beradi: server allaqachon qayd etganini qayta yuboradigan mijoz yoki hech kim ko‘ra olmaydigan seans uchun muvaffaqiyat haqida xabar beradigan mijoz.
Barqaror manzillash — odamlar unutadigan qism, chunki boshqa ommaviy manzilga tushadigan qayta ulanish mijoz soketi sog‘lom ko‘rinsa ham server tomonidagi holatni bekor qiladi. Ikki shartnomadan qaysi biri har bir ilovaga tegishli ekanini yozib qo‘ying, chunki ular kamdan-kam hammasi mos keladi.
Bloklash va tiklashni alohida tekshiring
Sizib chiqishdan himoya va seansning omon qolishini ikki xususiyat deb biling, chunki biridan o‘tish ikkinchisi haqida hech narsa demaydi. Omon qolgan seans to‘g‘ridan-to‘g‘ri trafik bloklanganiga dalil emas, o‘lgan seans esa har bir to‘g‘ridan-to‘g‘ri yo‘l bloklanganiga dalil emas.
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'
Tiklashni kuzatayotganda zararsiz sinov amalidan foydalaning, shunda takroriy yuborish hodisaga aylanmaydi. Haqiqatda ko‘rgan nosozlik shaklini yozib oling: ilova nima ko‘rsatdi, soket omon qoldimi va u qachon o‘z-o‘zidan tiklandi.
Kutilgan xatti-harakatni tatbiq qoidasi yoniga yozing va sana qo‘ying. Bu qoidani keyingi o‘zgartiradigan odam joylashtirish ikki shartnomadan qaysinisini va’da qilganini bilishi kerak.