Yönlendirme tablosu ZeroTier arayüzü üzerinden bir varsayılan yol gösteriyor, ağ çevrimiçi bildiriyor ve tarayıcı hâlâ yerel ISP adresinden çıkıyor. Bu birleşim yaygındır ve istemci hatası değildir. Varsayılan yol yalnızca paketlerin nereye gitmesi gerektiğini söyler; diğer uçta bir şeyin onları iletmesi ve çevirmesi gerekir. Bir çıkış düğümü çalışmadan önce üç ayrı parçanın doğru olması gerekir.

Yol var ama hiçbir şey çıkmıyor

Önce istemcinin yönlendirme tablosunu kontrol edin. default via 10.147.20.5 dev zt0 gibi bir satır yolun kurulduğunu kanıtlar, hedefin trafiği kabul edeceğini değil. Sonraki atlama, onu iletmeye istekli ve yetenekli bir üye olmalıdır.

Aynı istek hâlâ fiziksel arayüzden çıkıyorsa istemci yolu kurmamıştır ya da yerel varsayılana kaybeden bir metrikle kurmuştur. Yol kurulduktan sonra istek kayboluyorsa çıkış üyesi paketleri alıyor ama iletemiyor veya çeviremiyor. Fiziksel varsayılanı koruyan istemci çıkışa hiç paket göndermez.

Bu ayrım nerede çalışılacağını belirler. Değişiklikten önce ve sonra bir genel adresi karşılaştırmak, hiç kullanılmamış bir yolu kullanılıp atılmış olandan ayırır ve tüm yapılandırmayı gözden geçirmek yerine tek bir komut gerektirir. Karşılaştırmayı başka bir şeyi değiştirmeden önce yapın, böylece iki sonuç da aynı başlangıç durumundan gelsin.

Hepsinin doğru olması gereken üç parça

Çıkış bir zincirdir ve en zayıf halka belirtiyi belirler. Aşağıdaki tablo halkaları genellikle başarısız oldukları sırayla listeler.

PartWhere it livesWhat a failure looks like
Forwarding and NATExit node kernel and firewallTraffic arrives, no reply
Managed default routeZeroTier network controllerNo default via the tunnel on the member
Client acceptanceMember's per-network settingRoute offered but not installed
DNS behaviorClient resolver configurationPages fail by name, IP works

İlk satır, seçenek adının gizlediği satırdır. Bir üye ancak çekirdeği ZeroTier arayüzü ile internete bakan arayüz arasında paketleri ilettiğinde ve yanıt yolu tünele geri çevrildiğinde çıkış olur. Bu iletim olmadan üye bir eş, ağ geçidi değildir.

Denetleyici satırı yetkilendirmedir, yapılandırma değil. 0.0.0.0/0'yi bir üye üzerinden duyurmak her istemciye çıkışın nerede olduğunu söyler; bu, o üyeyi trafiği taşıyabilir kılmaz. Üyenin internete çalışan bir yolu olduğunu da doğrulamaz. ZeroTier'ın çıkış düğümü belgeleri düğüm, yol ve istemci arasındaki aynı ayrımı ele alır.

Çıkış düğümünü iletmek ve çevirmek için yapılandırın

IPv4 iletimini kalıcı olarak etkinleştirin, ardından WAN arayüzünden çıkan trafik için kaynak NAT ekleyin. Filtre kuralları iletilen akışa her iki yönde de izin vermelidir, çünkü iletim ve çeviri izinden ayrıdır:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o zt0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

zt0 ve eth0 yerine ana bilgisayardaki adları koyun; örnek bir arayüz için kaydedilen kural gerçek bir arayüzde paketleri izlemez. Değişiklikleri kuralların sahibi olan güvenlik duvarı yöneticisi üzerinden kalıcı yapın, çünkü etkileşimli kabuktaki bir komut sonraki yeniden başlatmada kaybolur.

Ana bilgisayar UFW veya firewalld gibi bir güvenlik duvarı yöneticisi çalıştırıyorsa, iptables satırlarını yanına yığmak yerine kuralları o yönetici üzerinden ekleyin. Aynı zincirleri düzenleyen iki sahip, önyükleme sırasına bağlı bir politika üretir. Yönetici kendi zincirlerini ürettiğinde sıra önemlidir. Yöneticiyi yeniden yükledikten sonra bir istemciden test edin, öncesinde değil.

Yolu duyurun ve istemcide kabul edin

Ağ denetleyicisinde, sonraki atlaması çıkış üyesinin ZeroTier adresi olan 0.0.0.0/0 için yönetilen bir yol ekleyin. Ardından bunu kullanması gereken üyede o ağ için geçersiz kılmaya izin verin. İzin yereldir: diğer üyeleri yeniden yapılandırmaz ve denetleyiciyi değiştirmez.

zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1

Son komut ZeroTier arayüzünü ve çıkış üyesinin adresini bildirmelidir. Hâlâ fiziksel arayüzü bildiriyorsa yol eksiktir veya rakip bir varsayılanın metriği daha iyidir.

Ayarı yalnızca ihtiyaç duyan ağla sınırlı tutun. Varsayılan yol kabulünü genel olarak veya yalnızca özel bir alt ağ sağlaması gereken bir ağda etkinleştirmek, trafiği bunun için hiç boyutlandırılmamış bir çıkıştan gönderir.

Çıkışı doğrulayın ve diğer adres ailelerini kontrol edin

Kaynağı bildiren bir hizmetten genel bir adres isteyin ve bunu çıkış düğümünün WAN adresiyle karşılaştırın. Ardından DNS'in hâlâ çözümlediğini doğrulamak için adıyla bir site yükleyin ve yalnızca tarayıcı değil, önemli bir uygulamayı da test edin.

Çift yığınlı bir istemci, IPv4 ZeroTier üzerinden çıkarken kendi yerel IPv6 yolunu kullanmaya devam edebilir. Amaç tüm trafiği gizlemek veya denetlemekse ayrı bir ::/0 yolu ve çıkışta IPv6 iletimi gerekir ve bir IPv4 testi bunlar hakkında hiçbir şey söylemez.

Linux'un ters yol filtresi istemcide geçerli çıkış trafiğini de düşürebilir. ZeroTier, katılan üyeler için rp_filter değerlendirmesini belgeler; bu ayarı bilerek ve yalnızca yol ve NAT doğrulandıktan sonra değiştirin, ilk deney olarak değil.

Gereksinim bir NAS'a veya tek bir ofis alt ağına erişimse, o önek için yönetilen bir yol tam çıkıştan daha küçük ve daha güvenli bir değişikliktir. Tüm gezinmeyi başka bir cihaz üzerinden göndermek, tek bir özel kaynağa ulaşmaktan farklı bir karardır ve ayrı bir incelemeyi hak eder.

İlgili makaleler