DNS ile beslenen nftables kümesinden WireGuard'a: aktarım nasıl çalışır
Bir DNS yanıtı nftables kümesini besleyebilir, ama küme hiçbir şeyi yönlendirmez. Yönlendirmenin çalışıp çalışmadığını belirleyen dört aktarımı ve üç ömrü izleyin.
Adlar adreslere çözülür ve bu adresler daha sonra yönlendirmeyi etkileyen bir güvenlik duvarı kümesine düşebilir, bu da vekil sunucu olmadan ada dayalı yönlendirmeyi mümkün kılar. İşin püf noktası, dört bileşenin doğru aktarması gerektiğidir: çözümleyici, küme, yeni akışı işaretleyen sınıflandırıcı ve onu taşıyan eş. Her aktarım farklı biçimde başarısız olur ve her biri kendi zamanını tutar.
Tasarımı yapılandırma değil, zincir olarak görün. Her adımdaki soru, hangi bileşenin karara sahip olduğu ve girdisi eksik olduğunda ne olduğudur.
DNS yanıtının yapabildikleri ve yapamadıkları
dnsmasq adresleri yanıtlardan bir nftables kümesine kopyalayabilir; bu bir beslemedir, yönlendirme kararı değildir. dnsmasq kılavuzunda belgelenen bu seçenek aileyi, tabloyu ve kümeyi belirtir ve başındaki 4# yalnızca A kayıtlarını seçer, bu yüzden v6 hedefleri kendi düzenlerini gerektirir. Küme zaten var olmalıdır, çünkü çözümleyici güvenlik duvarı sahibinin oluşturduğu şeye öğe ekler. O adımda hiçbir şey bir arayüz, tablo veya eş seçmez.
İstemci de ad için o çözümleyiciyi kullanmalıdır. Kendi şifreli DNS'si olan bir uygulama veya politika var olmadan önceki önbelleğe alınmış yanıt, kümede hiçbir kayıt oluşturmadan bağlanır.
Küme girdidir, rota değildir
Kümedeki öğe bir eşleşme koşuludur. Bir şeyin ona bakması, bu paketin yeni bir akış başlattığına karar vermesi ve akışı tünelden geçiren politikayı uygulaması gerekir. Linux'ta bu genellikle işaret koyabilen yönlendirme yetenekli bir çıkış yolu, işaretli paketleri ayrı bir tabloya gönderen bir kural ve o tabloda WireGuard aygıtına işaret eden bir rota anlamına gelir. Yalnızca üyelik bunların hiçbirini kurmaz.
nft add set inet vpn_select office_v4 { type ipv4_addr\; }
ip rule add fwmark 0x40 table 200
ip route add default dev wg0 table 200
wg show wg0 allowed-ips
Eş, insanların unuttuğu ikinci bir kapsama denetimi uygular. WireGuard bir paketi yalnızca izin verilen adresleri hedefi içeren eş için şifreler, bu yüzden eşin listesi bu öneki dışladığında arayüze politika rotası yeterli değildir. Listeyi yöneticinin tesadüfen yaptığı rota oluşturmaya güvenmek yerine yönlendirme sahibinin denetiminde tutun.
İşaretler, tablolar ve eş kapsaması
İşaretler ortak bir ad alanıdır, bu yüzden hem değer hem maske onları kullanan diğer her şeyle kararlaştırılmalıdır. İşaretli trafiği ayrı bir tabloya gönderen kural, o tabloda eşleşen rota yoksa tanımlı bir sonuca ihtiyaç duyar, çünkü yanıtsız bir arama sonraki kurala geçip paketi fiziksel arayüzden dışarı çıkarabilir. Ayrı tablo içindeki blackhole varsayılan rotası o sessiz kaçışı görünür bir düşürmeye çevirir. Tasarımın hâlâ yapamadığı şey, kümeye hiç girmemiş bir hedef için hatada kapanmaktır.
Tünelin kendi dış paketleri sınıflandırıcıdan kaçmalıdır. WireGuard araçları tam bu amaçla bir soket işareti sunar ve bunu kullanmak kapsüllemenin kendi kurduğu arayüze geri yönlendirilmesini önler.
Her ömrü ayrı ayrı test edin
Üç depo üç takvime göre yaşlanır: çözümleyici önbelleği, küme öğeleri ve izlenen bağlantı. Bunları bu sırayla test edin ve her biri gerektiğinde hareket ediyor mu bakın. Aşağıdaki komutlar hiçbir şeyi değiştirmeden çözümleyiciyi, kümeyi, bağlantı tablosunu ve politika kurallarını okur.
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
Öğe ekleyen taze bir arama beslemenin çalıştığını kanıtlar, yanıtından daha uzun yaşayan eski bir öğe ise yazılmaya değer bir ömür uyuşmazlığıdır. Bağlantı tablosunda beklenen işaretle yeni bir bağlantının görünmesi sınıflandırıcının çalıştığını gösterir, eski bir bağlantının ilk işaretini koruması ise hata değil doğru davranıştır. Kural listesi politika aramasının var olup olmadığını yanıtlar, bu da eşleşip eşleşmediğinden farklı bir sorudur. Dört çıktıyı bu sırayla okuyun ve başarısız aktarım kendini ele verir.
Belirli bir adın her zaman tek bir yol kullanması gerekiyorsa, DNS ile beslenen bir küme bunu kanıtlayamaz, çünkü paylaşılan adresler başka adları da taşır. Vekil sunucu veya uygulama düzeyinde bir mekanizma bu garantinin aracıdır.