WireGuard çalıştıran bir hub, her grup için ayrı bir arayüz veya yönlendirme tablosu olmadan eş gruplarını ayrı tutabilir. İşi iki mekanizma yapar ve bunları karıştırmak, bir politikanın doğru görünüp hiçbir şey yapmamasının olağan nedenidir. Bir katman kimin kaynak adresi talep edebileceğine karar verir. Diğeri o paketin nereye gidebileceğine karar verir.

İki iş, ayrı tutulur

Tünel katmanı dar bir soruya yanıt verir: bu eşin anahtarı bu iç kaynak adresini yetkilendirdi mi. Yönlendirme katmanı daha geniş bir soruya yanıt verir: bu paket o hedefe doğru çıkabilir mi. Hiçbiri diğerinin sorusunu yanıtlamaz ve hiçbiri tek başına eksiksiz bir erişim politikası değildir.

Bu ayrım, bir eşin kimliği doğrulanmış ve adresi doğru olduğu hâlde gitmemesi gereken bir konağa ulaşamamasının nedenidir. Tersini de açıklar: her şeye izin veren bir güvenlik duvarı kuralı, kimin hangi adresi talep edebileceği konusunda hiçbir şey kanıtlamaz.

İki katmanı birlikte tasarlayın, sonra ikisini de test edin. Bir katmanda doğru, diğerinde test edilmemiş bir yapılandırma varsayılana göre açık ya da kapalı olarak başarısız olur.

Her eşe yalnızca kendi adresini verin

Çok konaklı eşler sizi sunucu tarafında tüm grup aralığını vermeye iter. Bu izin bir kaynak adres talebidir, bu yüzden ele geçirilmiş veya yanlış yapılandırılmış bir istemci aralıktaki herhangi bir adresi sunabilir ve tünel onu kabul eder. Kendi iç adresi için her eşe bir /32 atayın. Grup aralıklarını yalnızca istemcilerde ayarlayın; orada hangi kaynakları kullanabileceğini değil, o istemcinin hangi hedeflere ulaşabileceğini tanımlarlar.

Güvenlik duvarı ardından güvenebileceği bir kaynakla eşleştirir. Grubun aralığı için yazılmış bir kural yine yararlı bir gruplamadır ve ancak tek bir eş bile başka bir üyeye ait adresi talep edemediğinde anlamlı olur.

Grupları ayıran yönlendirme politikasını yazın

Buradaki ilginç trafik aynı tünel arayüzünden girer ve çıkar, bu yüzden konağın giriş yolunu değil yönlendirme yolunu geçer. Kurallar konağa sahip olan güvenlik duvarı yöneticisinin var olan yönlendirme zincirine aittir ve bunlar tam bir kural kümesi değil, parçalardır.

iifname "wg0" oifname "wg0" ip saddr 10.66.10.0/24 ip daddr 10.66.10.0/24 accept
iifname "wg0" oifname "wg0" ip saddr 10.66.20.0/24 ip daddr 10.66.20.0/24 accept
iifname "wg0" oifname "wg0" drop

İlk iki kural her grubun içindeki trafiğe izin verir. Sonuncusu o arayüzden geçen diğer her şeyi engeller ve gruplar arasındaki yalıtımı üreten budur. Gerekirse diğer adres ailesi için açık kurallar ekleyin, çünkü IPv4 için yazılmış bir drop IPv6 davranışını ne yetkilendirir ne de tanımlar.

Sıra, politikanın uygulanıp uygulanmayacağını belirler

Kural sırası parçanın kendisinden daha önemlidir. Kurulmuş bağlantıları kabul eden genel bir kural bu girdilerin önüne yerleştirilirse eski bir gruplar arası akış sürer, böylece yalıtım yalnızca yeni bağlantılara uygulanır. Yeniden yüklemeden önce bu iki sonuçtan hangisini istediğinize karar verin.

Kabul kararı da aynı kanca üzerindeki zincirler arasında her zaman kesin değildir. Başka bir temel zincir daha sonra çalışırsa etkin politika bunların birleşimidir, bu yüzden düzenlediğiniz dosyaya değil sayıcılara bakın. Sayıcılar mevcut en ucuz kanıttır. Paket sayısı olmayan bir kural eşleşmiyor demektir ve sonraki zincir kabul ederken eşleşen bir kural size drop'un yanlış yerde olduğunu söyler.

Dosya sayısını değil matrisi test edin

Beklenen sonuçlardan küçük bir matris kurun ve her hücreyi kontrol edin. A grubundan A grubuna çalışmalı, B grubundan B grubuna çalışmalı ve A'dan B'ye çalışmamalı; iki yönde ve destekliyorsanız iki adres ailesi için.

nft list ruleset
wg show wg0 allowed-ips
ping -c 2 10.66.10.5
conntrack -L -s 10.66.20.7 2>/dev/null | head

İlk ikisi neyin yapılandırıldığını gösterir. Yanlış gruptan bir üyenin ping'i gerçekte ne olduğunu gösterir. conntrack listesi daha eski bir akışın hâlâ kabul edilip edilmediğini gösterir ve bir yalıtım değişikliğinin sessizce yürürlüğe girmemesi tam olarak böyle olur.

Hub üzerindeki konak hizmetleri ve arkasındaki bir LAN'a erişim, ayrı politikaya sahip ayrı yollardır. Matrisin bunlardan hangilerini kapsadığını kaydedin, çünkü yalnızca eşler arası trafiği denetleyen bir test ikisi hakkında da hiçbir şey söylemez.

İlgili makaleler