Blackhole marşrutu VPN kill switch ilə müqayisədə: hər biri nə edir
Blackhole marşrut uyğun trafiki atır və uğursuzluqda bağlı qalan yol tətbiq edir. Onun əhatə dairəsini və kor nöqtələrini paket filtri əsaslı kill switch ilə müqayisə edin.
Paket noutbukdan çıxır, VPN şlüzünə heç vaxt çatmır və heç bir firewall sayğacı tərpənmir. Marşrut cədvəli artıq paketin taleyini həll etmişdi: blackhole qeydi ona uyğun gəldi və kernel onu heç bir interfeys görməmişdən əvvəl atdı. Bu davranış hədəf bağlı şəkildə uğursuz olmalı olduqda faydalıdır, lakin dar əhatəli marşrut əməliyyatıdır. Onu tam kill switch kimi qəbul etmək dizaynların səhv getdiyi yerdir.
Atma əməliyyatı əslində nəyə uyğun gəlir
Marşrut axtarışı cədvəl seçir, sonra onun içində ən uzun uyğun prefiksi seçir. Blackhole marşrutu əməliyyatı atmaq olan adi qeyddir, ona görə yalnız bütün qərar tamamlandıqdan sonra həmin qeydi seçəcək paketlərə təsir edir. Cədvəli siyasət qaydası ilə dəyişin və ya daha konkret prefiks əlavə edin, atma artıq tətbiq olunmur.
Buna görə blackhole-un əhatəsi dəqiq və asan izah edilir: prefiksi, cədvəldə, həmin ünvan ailəsi üçün əhatə edir. Başqa cədvəlin qazanacağı hədəfi əhatə etmir və yalnız IPv4 prefiksi atıldığı üçün IPv6-nı əhatə etmir.
ip route get heç nə yerləşdirməmişdən əvvəl qərarı göstərir, o cümlədən cədvəli və marşrut növünü. Bu çıxışı oxumaq uğursuz sorğudan hansı qayda və ya prefiksin işə düşdüyünü çıxarmaqdan sürətlidir.
Blackhole unreachable və ya prohibit ilə eyni deyil
Linux atmağa bənzər üç marşrut növü təklif edir və onlar göndərənin nə gördüyündə fərqlənir. Blackhole paketi cavabsız atır, buna görə müştəri timeout görür. Unreachable marşrutu ICMP unreachable mesajı qaytarır, buna görə bağlantı host və ya şəbəkə xətası ilə tez uğursuz olur. Prohibit marşrutu inzibati qadağa xətası qaytarır ki, bu da qəsdən siyasət imtinasına daha yaxındır.
Tətbiqin görməsini istədiyiniz davranışı seçin. Səssiz atma siyasəti açıqlamaq istəmədikdə uyğundur, dərhal xəta isə istifadəçilərin hədəfin niyə əlçatmaz olduğunu başa düşməsi lazım olduqda daha yaxşıdır. Növləri şəbəkə üzrə qarışdırmaq eyni siyasəti üç fərqli nasazlıq kimi təsvir edən dəstək biletləri yaradır.
Bağlantını diaqnoz edərkən hər atma qeydinin bir-birini əvəz etdiyini güman etməyin. Xəta mətni, vaxt və paket tutumu fərqlənir, cədvəldəki marşrut növü isə hansına baxdığınızı bildirir. ip-route təlimatı növləri və onların xəta davranışını sadalayır.
Kill switch ilə necə müqayisə olunur
Kill switch paket filtrləməsidir: tuneldən kənara çıxacaq çıxış trafikini atan firewall qaydası. Blackhole marşrutu isə yığında daha əvvəl verilən yönləndirmə qərarıdır. Hər ikisi trafiki dayandıra bilər, lakin fərqli şeylər görür və fərqli halları qaçırır.
| Mechanism | What it blocks | What it misses | How failure looks |
|---|---|---|---|
| Blackhole route | Destinations matching the prefix and table | Other tables, other address families, traffic with a different route | Silent timeout |
| Firewall kill switch | Egress not bound to the tunnel interface | Rules that are too broad can break the endpoint or DHCP | Dropped packets with counters |
| WireGuard AllowedIPs | Destinations not routed into the interface | Traffic that never enters the interface at all | No tunnel route, direct egress |
Əhatə müqayisənin əhəmiyyətli olduğu yerdir. Firewall sahibi, portu və ya interfeysi uyğunlaşdıra və tətbiqi bloklaya bilər, endpoint isə əlçatan qalır; marşrut bunu edə bilməz. Əksinə, marşrut heç bir paket filtri yüklənmədən bütöv prefiksi atmağa göndərə bilər ki, bu da minimal sistemdə faydalıdır.
WireGuard-ın AllowedIPs kriptoaçar marşrutlaşdırmasıdır, firewall deyil. Hansı hədəf prefikslərinin interfeysə qəbul edildiyini həll edir və yalnız tunel alt şəbəkəsini sadalayan profil digər hədəfləri adi default marşruta buraxır. Buna görə tam tunel profilləri 0.0.0.0/0 istifadə edir və buna görə wg-quick imkan olduqda firewall qaydaları da quraşdırır.
Tunel endpointini atmanın xaricində saxlayın
Endpointin xarici ünvanı fiziki interfeys vasitəsilə əlçatan qalmalıdır. Həmin ünvanı da tutan atma handshake-in çıxmasına mane olur və tunel heç vaxt qalxmır ki, bu da marşrut siyasətindən çox VPN nasazlığı kimi görünür. Dəyişiklikdən əvvəl və sonra endpoint üçün marşrutu yoxlayın.
İdarəetmə girişi də eyni baxışa aiddir. Əgər routerə və ya müştəriyə yeganə yol tuneldirsə, həddindən artıq geniş atma onu silməyə imkan verəcək maşından sizi kilidləyə bilər. Sənədləşdirilmiş bantdankənar marşrut, konsol və ya vaxtlı geri qaytarma saxlayın.
IPv6 öz qeydini və öz baxışını tələb edir. IPv4-ü blackhole-a salıb IPv6-nı default marşrutda saxlayan dizayn məhz siyasətin dayandırmaq istədiyi trafiki sızdırır və səhv yalnız IPv4 yoxlayan testdə görünmür.
Taymer və geri qaytarma ilə mərhələli tətbiq edin
Marşrutu qısa avtomatik silinmə ilə tətbiq edin ki, səhv yenidən başlatmadan sonra da qalmasın. Aşağıdakı əmrlər sənədləşdirmə diapazonundan istifadə edir; onu dizaynınızın həqiqətən atdığı prefikslə əvəz edin:
sudo ip route replace blackhole 10.0.0.0/8
ip route get 10.1.2.3
sudo systemd-run --on-active=60 /sbin/ip route del blackhole 10.0.0.0/8İkinci əmr blackhole marşrutunu və onun hansı cədvəldən gəldiyini bildirməlidir. Üçüncü əmr silinməni bir dəqiqə sonraya planlaşdırır ki, bu siyasəti təsdiqləmək üçün kifayət qədər vaxt və uzaq hostda səhvdən bərpa olmaq üçün kifayət qədər qısadır. Davranış təsdiqləndikdən sonra qeydi digər marşrutlara sahib olan konfiqurasiya idarəetməsi ilə davamlı edin.
Dəyişikliyi prefiksi, cədvəli, ünvan ailəsini və geri qaytarma üsulunu qeyd etməklə bağlayın. Atma marşrut dizaynında qəsdən edilən istisnadır və növbəti mühəndis onun hələ də aid olub-olmadığına qərar verməzdən əvvəl hansı trafiki dayandırmaq üçün nəzərdə tutulduğunu bilməlidir.