İki dizayn eyni şeyi vəd edir: tunel düşəndə heç nə açıq şəkildə bayıra çıxmır. Biri bağlanma anında skript işlədir və interfeysləri kəsir. Digəri firewall qaydasını qüvvədə saxlayır və VPN müştərisindən heç nə tələb etmir. Onlar hərəkət etmək imtiyazının kimdə olmasına, boşluq zamanı nə baş verdiyinə və sonra maşının necə yenidən onlayn olduğuna görə fərqlənir. Onları bu üç nöqtədə müqayisə etmək hansının daha sərt olması barədə mübahisə etməkdən faydalıdır.

Eyni iş, iki mexanizm

Müştəri tunel qalxanda və bağlananda qarmaqlar işlədə bilər, bir şərtlə ki, profil skript icrasına icazə versin. Bu qarmaq müştərinin həyat dövrü daxilində, bağlantı bağlanan anda işləyir. Firewall qaydası isə sistemə aiddir və müştərinin işləməsi, çökməsi və ya öldürülməsi onu maraqlandırmır.

PropertyTeardown scriptFirewall unit
Runs when the client is killedNoYes
Needs privilege at teardown timeUsually yesConfigured once, at boot
Acts on the whole machineOften, including recovery pathsOnly on the flows it matches

Bu cədvəl bütün arqumentdir. Yalnız səliqəli bağlanmada işləyən skript ən az narahat olduğunuz halı əhatə edir; vacib olan hal çökmə və ya şəbəkənin yoxa çıxmasıdır və heç biri təmiz bağlanma yaratmır.

Bağlanma qarmağının nə edə bildiyi və nə edə bilmədiyi

Sənədləşdirilmiş nümunə şəbəkə interfeyslərini gəzir və loopback-dan başqa hər şeyi aşağı salır. Fiziki cihaz aşağı olduqda tuneldən kənara heç nə çıxa bilməz, bu da tam olaraq məqsəddir.

#!/bin/sh
for dev in /sys/class/net/*; do
  name=$(basename "$dev")
  [ "$name" = lo ] || ip link set dev "$name" down
done

O, həmçinin yerli şəbəkəni, maşının yerləşdirdiyi hər hansı xidməti və problemi həll etmək üçün istifadə edəcəyiniz yolu da aşağı salır. Noutbukda simsiz cihaz bəzən sonradan əl ilə açılıb-söndürülmə tələb edir, beləliklə qısa fasilə təmir sessiyasına çevrilir. Daha pisi, qarmağa bunların heç birini etməyə icazə verilməyə bilər: müştəri imtiyazlardan imtina etdikdə bağlanma skripti imtiyazsız hesabla işləyir və hər interfeys dəyişikliyi heç kimin jurnalı oxumadığı anda yazılan icazə xətası ilə uğursuz olur.

Qarmağa güvənməzdən əvvəl müştərinin necə başladıldığını yoxlayın. Əl ilə root kimi işlədiləndə işləyən skript yüklənmə zamanı başlayan xidmət barədə heç nə sübut etmir.

Firewall qaydası fərqli nə edir

Yalnız tunel trafikinə icazə verən qayda müştəri prosesi getdikdə də işləməyə davam edir, çünki kernel həmin prosesdən asılı deyil. Qayda həm də daha dardır: yalnız uyğun gəldiyi axınları bloklayır və loopback, yerli alt şəbəkə və bərpa yolunu tək qoyur, buna görə də maşını köməksiz qoymur.

Güzəşt ondadır ki, qayda host firewall-un sahibi tərəfindən yazılmalı və saxlanmalıdır və o, müştərinin həqiqətən yaratdığı tunel cihazını adlandırmalıdır. Bu, qayda ilə profilin birlikdə saxlanmalı olması deməkdir; adı dəyişdirilmiş interfeys hər şeyi bloklayan və heç nə izah etməyən firewall qoyub gedir.

Heç bir mexanizm digərini artıq etmir. Redaktədən sonra heç vaxt yenidən yüklənməyən firewall qaydası heç vaxt işləməyən skript qədər xəyalidir.

persist-tun boşluğun olub-olmadığını həll edir

Tunel cihazı kəsilmədən sonra qalanda ona yönələn marşrutlar da qalır. Trafik onda yönləndirilmək əvəzinə atılır, beləliklə defolt marşrut fiziki şlüzə geri düşmür. Bu davranış hər hansı firewall qaydası işə qarışmadan əvvəl də sızmanı ehtimalsız edir.

Bu parametr olmadan cihaz və onunla birlikdə marşrutlar silinir və defolt marşrut fiziki şlüzə geri dönə bilər. Bunun olub-olmadığı platformadan və müştəridən asılıdır, buna görə də vəziyyət fərz edilməməli, müşahidə edilməlidir. Parametrə kill switch-in hissəsi kimi baxın, performans seçimi kimi yox.

Yenidən qoşulma yolunu canlı saxlayın, sonra dörd vəziyyəti sınayın

Sərt blok müştərinin yenidən qoşulmasına da mane ola bilər, çünki müştəri hələ də fiziki şlüz vasitəsilə serverə marşrut lazımdır, halbuki qalan hər şey rədd edilir. Tunel qalxmadan əvvəl həmin bir ünvan üçün host marşrutu quraşdırın və əvvəlcə adı həll edin, çünki DNS ona ehtiyac duyduğunuz vaxta qədər bloklanmış ola bilər.

ip route add 198.51.100.20/32 via 192.168.0.1 dev wlan0

Sonra etiketə deyil, vəziyyətlərə baxın. Dörd anı qəsdən sınayın: tunelsiz soyuq başlanğıc, sağlam sessiya, heç kimin istəmədiyi düşmə və bərpa olunduqdan sonrakı sessiya. Hər anda defolt marşrutu oxuyun və çıxış ünvanı görünən bir sorğu edin. Tunel aşağıda ikən təslim olan tətbiq poçt müştərisi və ya yeniləyici barədə heç nə demir, ona görə son yoxlamanı bir fon tətbiqi ilə təkrarlayın. Qaydanı, interfeys adlarını və bərpa addımlarını yazın, çünki heç kimin yoxlaya bilmədiyi kill switch bir şayiədir.

Əlaqəli məqalələr