Tailscale alt ağı SNAT'ı kapatıldıktan sonra tek yönlü trafik
Tailscale alt ağı yönlendiricisinde SNAT'ı kapatın, yanıtlar gelmeyi bırakır. Gerçek kaynak adresi korunur, bu yüzden LAN'ın 100.64.0.0/10'a geri dönüş rotasına ihtiyacı vardır.
Bir Tailscale alt ağı yönlendiricisinde kaynak NAT'ı kapatın; tünel çalışmaya devam ederken içinden geçen bağlantılar durur. İstekler hedefe uzak istemcinin kendi overlay adresiyle ulaşır, bu da değişikliğin amacıdır ve yanıtların artık LAN'ın hiç bilmek zorunda olmadığı bir yola ihtiyacı vardır. O yol olmadan paketler iner, yanıtlar olağan ağ geçidinden çıkar ve arıza, hiçbir güvenlik duvarı kuralının açıklamadığı bir güvenlik duvarı sorunu gibi görünür. Tünel sağlıklıdır; dönüş bacağı eksiktir.
SNAT neyi saklıyordu
SNAT açıkken yönlendirici, alt ağa iletmeden önce kaynak adresini kendi LAN adresine yazar, böylece hedef, nasıl ulaşılacağını zaten bildiği bir konağa yanıt verir ve başka hiçbir şeyin yapılandırılması gerekmez. Kapatmak özgün kaynağı korur ve hedef artık kendi kablosundaki bir komşu yerine overlay aralığı içinde bir adres görür. Bu adres gerçektir ve tailnet genelinde yönlendirilebilir, ancak LAN'dan varsayılan ağ geçidi üzerinden erişilemez. Belgelenmiş anahtar --snat-subnet-routes=false olup Linux alt ağı yönlendiricisinin kendisine uygulanır.
Bu, paket başına bir anahtar değil kalıcı bir ayardır, bu yüzden dönüş yolu o yönlendiricinin hizmet verdiği her hedef ağ için mevcut olmalıdır. Değişikliği bir onay kutusu değil dağıtım kararı yapan da budur. O yönlendiricinin hizmet verdiği her şey gereksinimi aynı anda devralır.
Dönüş yolu nerede barınabilir
Üç yerleşim yaygındır ve doğrulukta değil kapsamda farklıdır. Hedef konaktaki statik rota en doğrudan ve en az ölçeklenebilir olanıdır, çünkü her aygıt kendi kopyasına ihtiyaç duyar. VPC'deki veya saha yönlendiricisindeki rota tablosu bütün bir ağı tek seferde kapsar ve sınıfsız statik rotalar taşıyan bir DHCP seçeneği istemcilere otomatik olarak ulaşır ancak onu yok sayan aygıtlarda sessizce başarısız olur.
ip route add 100.64.0.0/10 via 192.168.1.10
ip route get 100.64.0.5
Hangi yerleşimi seçerseniz seçin, sonraki atlama yönlendiricinin LAN adresidir ve asla tailnet adresi değildir. Bir LAN konağı bu rotaya sahip olmadan overlay'e ulaşamaz, bu yüzden overlay içindeki sonraki atlama daireseldir ve paketi hiçbir yere göndermez. Bu tek hata, doğru görünen ve yine de başarısız olan yapılandırmaların çoğunu açıklar ve yalnızca yönlendiricinin kendi tablosunu okuyan her denetimden sağ çıkar. Hangi yerleşimi kullandığınızı yazın, yoksa sonraki kişi yanlış olanı test eder.
Arızayı tek yönlü trafik olarak okumak
Belirtiyi tanımak nedenden daha kolaydır: hizmet yönlendiricinin kendisinde yanıt verir ve uzak istemciden sessiz kalır. Hedefteki yakalama, gelen istekleri ve giden yanıtları gösterir; bu yanıtların nereye gittiğini fark edene kadar başarı gibi görünür. Yanıtlar varsayılan ağ geçidine gider, yani gelen bacak çalışmış, dönüş bacağı çalışmamıştır.
Bunun yerine yönlendiricide yakalayın, çünkü tek bir alışverişin iki yönünü görür ve bir yanıtın hiç gelip gelmediğini gösterir. Yanıt hedefte görünüp yönlendiricide hiç görünmüyorsa rota hedef tarafında eksik veya yanlıştır. Yönlendiricide görünüp orada duruyorsa sorun daha ileridedir ve başka bir soruşturmaya aittir.
sudo tcpdump -ni any host 100.64.0.5
ip route get 100.64.0.5
Gerçek adres bir rotaya değer mi
Hedef ağ yeniden yapılandırılamadığında SNAT'ı korumak her zaman daha basit yanıt olarak kalır ve bedeli, her istemcinin hedefin günlüklerinde ve politikasında yönlendirici gibi görünmesidir. Kapatmak, bir uygulama gerçek kaynak adresine ihtiyaç duyduğunda veya ağ politikası aynı yönlendiriciyi paylaşan istemcileri ayırt etmek zorunda olduğunda haklıdır. Her ikisi de meşru nedendir ve hiçbiri ücretsiz değildir. Fayda, her hedef ağda bir rotayı sürdürmeye ve aşağıda açıklanan güvenlik duvarı incelemesine değmelidir.
Tek bir küçük LAN için takas genellikle kazandırır, statik rota alamayan cihaz yığını için genellikle kazandırmaz. Kararı ve nedeni yönlendirici yapılandırmasının yanına kaydedin, böylece sonraki yönetici hangi davranışın bilinçli olduğunu bilsin. Kimsenin yazmadığı bir varsayılan, bir gözden kaçırmadan ayırt edilemez.
Güvenlik duvarı, günlükleme ve çift rol
Yönlendiricinin LAN adresiyle eşleşen her kural artık farklı bir kaynakla eşleşir; buna izin kuralları ve yönlendiriciyi istemci olarak kaydeden her günlük alanı da dahildir. Bu kuralları ilk testten önce okuyun, ilk başarısızlıktan sonra değil, çünkü yalnızca yönlendiricinin adresine izin veren bir kural yeni kaynağı tamamen engeller. Değişimi ihtiyaç duyan istemciler ve bağlantı noktalarıyla sınırlayın, ardından tüm tailnet'i sessizce kabul etmediğini doğrulayın.
sudo nft list ruleset | grep -n '100\.64'
sudo iptables-save | grep -n '100\.64'
Tek bir düğümün hem çıkış düğümü hem de alt ağ yönlendiricisi olarak hizmet etmesi, alt ağ SNAT'ı kapatıldığında yukarı yönlü trafiği düşürebilen belgelenmiş bir birleşimdir. Bu rolleri farklı düğümlere ayırmak bu çekinceyi ortadan kaldırır ve her rotaya ve güvenlik duvarı politikasına tek bir sahip verir. Roller birlikte kalmak zorundaysa bu davranışı bekleyin ve bir istemciyi suçlamadan önce test edin. Rotayı, anahtar ayarını ve rol atamasını tek bir notta tutun, çünkü sonraki bağlantı başarısız olduğunda bunlar birlikte okunur.