Bir paket dizüstü bilgisayardan çıkar, VPN ağ geçidine asla ulaşmaz ve hiçbir güvenlik duvarı sayacı hareket etmez. Yönlendirme tablosu paketin kaderini çoktan belirlemiştir: bir blackhole girdisi onunla eşleşti ve çekirdek onu herhangi bir arayüz görmeden önce attı. Bu davranış, bir hedefin kapalı biçimde başarısız olması gerektiğinde yararlıdır, ancak dar kapsamlı bir yönlendirme eylemidir. Onu tam bir kill switch olarak görmek, tasarımların yanlış gittiği yerdir.

Atma eylemi gerçekte neyle eşleşir

Bir rota araması bir tablo seçer, sonra içinde en uzun eşleşen öneki seçer. Blackhole rotası, eylemi atma olan normal bir girdidir, bu yüzden yalnızca tüm karardan sonra o girdiyi seçecek paketleri etkiler. Tabloyu bir ilke kuralıyla değiştirin veya daha belirgin bir önek ekleyin, atma artık geçerli olmaz.

Bu yüzden bir blackhole'un kapsamı kesin ve söylemesi kolaydır: öneki, tabloda, o adres ailesi için kapsar. Başka bir tablonun kazanacağı bir hedefi kapsamaz ve yalnızca IPv4 öneki atıldığı için IPv6'yı kapsamaz.

ip route get bir şey dağıtmadan önce kararı gösterir, tablo ve rota türü dahil. Bu çıktıyı okumak, başarısız bir istekten hangi kuralın veya önekin etkili olduğunu çıkarsamaktan daha hızlıdır.

Blackhole, unreachable veya prohibit ile aynı şey değildir

Linux, atma benzeri üç rota türü sunar ve bunlar gönderenin ne gözlemlediği bakımından farklıdır. Blackhole paketi yanıt vermeden düşürür, bu yüzden istemci bir zaman aşımı görür. Unreachable rotası bir ICMP unreachable iletisi döndürür, bu yüzden bağlantı bir ana bilgisayar veya ağ hatasıyla hızla başarısız olur. Prohibit rotası yönetsel bir yasak hatası döndürür, bu da kasıtlı bir ilke reddine daha yakındır.

Uygulamanın görmesini istediğiniz davranışı seçin. İlkeyi açıklamak istemediğinizde sessiz atma uygundur ve kullanıcıların bir hedefin neden kullanılamadığını anlaması gerektiğinde anında hata daha iyidir. Türleri ağ genelinde karıştırmak, aynı ilkeyi üç farklı arıza olarak tanımlayan destek biletleri üretir.

Bir bağlantıyı teşhis ederken her atma girdisinin birbirinin yerine geçebileceğini varsaymayın. Hata metni, zamanlama ve paket yakalama farklıdır ve tablodaki rota türü hangisine baktığınızı söyler. ip-route kılavuzu türleri ve hata durumundaki davranışlarını listeler.

Bir kill switch ile nasıl karşılaştırılır

Kill switch paket filtrelemedir: tünelin dışına çıkacak giden trafiği atan bir güvenlik duvarı kuralıdır. Blackhole rotası yığında daha erken alınan bir iletme kararıdır. İkisi de trafiği durdurabilir, ancak farklı şeyler görürler ve farklı durumları kaçırırlar.

MechanismWhat it blocksWhat it missesHow failure looks
Blackhole routeDestinations matching the prefix and tableOther tables, other address families, traffic with a different routeSilent timeout
Firewall kill switchEgress not bound to the tunnel interfaceRules that are too broad can break the endpoint or DHCPDropped packets with counters
WireGuard AllowedIPsDestinations not routed into the interfaceTraffic that never enters the interface at allNo tunnel route, direct egress

Karşılaştırmanın önemli olduğu yer kapsamdır. Bir güvenlik duvarı sahibi, bağlantı noktasını veya arayüzü eşleştirebilir ve uç nokta erişilebilir kalırken bir uygulamayı engelleyebilir; bir rota bunu yapamaz. Tersine, bir rota herhangi bir paket filtresi yüklenmeden bütün bir öneki atmaya gönderebilir, bu da asgari bir sistemde yararlıdır.

WireGuard'ın AllowedIPs'i kripto anahtar yönlendirmesidir, güvenlik duvarı değildir. Hangi hedef öneklerinin arayüze kabul edileceğine karar verir ve yalnızca tünel alt ağını listeleyen bir profil diğer hedefleri olağan varsayılan rotaya bırakır. Bu yüzden tam tünel profilleri 0.0.0.0/0 kullanır ve bu yüzden wg-quick de yapabildiğinde güvenlik duvarı kuralları kurar.

Tünel uç noktasını atmanın dışında tutun

Uç noktanın dış adresi fiziksel arayüz üzerinden erişilebilir kalmalıdır. Bu adresi de yakalayan bir atma, el sıkışmanın çıkmasını engeller ve tünel asla yükselmez; bu, bir yönlendirme ilkesi değil VPN arızası gibi görünür. Değişiklikten önce ve sonra uç noktaya giden rotayı kontrol edin.

Yönetim erişimi de aynı incelemeye girer. Yönlendiriciye veya istemciye giden tek yol tünel ise, aşırı geniş bir atma sizi onu kaldırmanıza izin verecek makinenin dışında kilitleyebilir. Belgelenmiş bant dışı bir rota, bir konsol veya zamanlı bir geri alma bulundurun.

IPv6 kendi girdisine ve kendi incelemesine ihtiyaç duyar. IPv4'ü blackhole'a atıp IPv6'yı varsayılan rotada bırakan bir tasarım, ilkenin durdurmak istediği trafiği tam olarak sızdırır ve hata yalnızca IPv4 içeren bir testte görünmez.

Zamanlayıcı ve geri alma ile aşamalı uygulayın

Rotayı kısa bir otomatik kaldırma ile uygulayın ki bir hata yeniden başlatmadan sonra kalmasın. Aşağıdaki komutlar bir belge aralığı kullanır; bunu tasarımınızın gerçekten attığı önek ile değiştirin:

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 komut blackhole rotasını ve hangi tablodan geldiğini bildirmelidir. Üçüncüsü kaldırmayı bir dakika sonrasına planlar; bu, ilkeyi doğrulamak için yeterli ve uzak bir ana bilgisayardaki hatadan kurtulmak için yeterince kısadır. Davranış doğrulandıktan sonra girdiyi diğer rotalara sahip olan aynı yapılandırma yönetimi aracılığıyla kalıcı hale getirin.

Öneki, tabloyu, adres ailesini ve geri alma yöntemini kaydederek değişikliği kapatın. Atma, yönlendirme tasarımında kasıtlı bir istisnadır ve bir sonraki mühendisin, hâlâ oraya ait olup olmadığına karar vermeden önce hangi trafiği durdurması gerektiğini bilmesi gerekir.

İlgili makaleler