SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor

Tailscale Türkiye'de çalışır mı? Bağlantı rehberi

Türk Telekom, Superonline veya Vodafone hattında Tailscale bağlanır mı? Açık olması gereken üç adres, CGNAT'ın etkisi ve netcheck çıktısını okuma.

Tailscale Türkiye'de çalışır mı?

Tailscale Türkiye'deki bir ev ya da ofis hattından kurulur ve makineleriniz birbirini bulur. Bunun sebebi basit: Tailscale bir VPN servisi değil, sizin zaten sahip olduğunuz cihazlar arasında kurulan bir ağdır. Kiralık bir çıkış sunucusu filosu yoktur, dolayısıyla kapatılacak tek bir adres listesi de yoktur.

Bağlantının kurulması için üç şeyin erişilebilir olması gerekir: giriş yaptığınız kimlik sağlayıcı, Tailscale'in koordinasyon sunucusu ve doğrudan yol kurulamadığında devreye giren bir DERP relay'i. Bu üçünün arızası birbirine benzemez. Aşağıda her birinin nasıl göründüğünü ve kendi hattınızda hangisinin sorun çıkardığını iki komutla nasıl anlayacağınızı anlatıyorum.

Bu rehberdeki bütün komutlar sizin makinenizde çalışacak komutlardır. Çıktının ne yazacağını buradan tahmin etmiyorum, çünkü sonuç operatöre, şehre, saate ve modeminize göre değişir. Doğru cevap sizin ekranınızdadır.

Tailscale neden ticari bir VPN uygulamasından farklı

Ticari VPN ürünleri bir sunucu filosu kiralar. Uygulamayı kurarsınız, listeden bir ülke seçersiniz, trafiğiniz o şirketin çıkış sunucusundan çıkar. Bu modelin bütün adresleri herkese açıktır: sunucu listesi yayınlanır, IP blokları bilinir, uygulama mağazada durur. Yani kısıtlamak isteyen taraf için sabit ve tek bir hedef vardır.

Tailscale'de öyle bir filo yoktur. Tailscale, dizüstünüzü, telefonunuzu, ofisteki sunucunuzu ve VPS'inizi WireGuard ile doğrudan birbirine bağlar. Trafik bir şirketin çıkış havuzundan değil, sizin kendi makinenizden çıkar. Merkezde duran koordinasyon sunucusunun işi veri taşımak değildir: kimin hangi genel anahtara sahip olduğunu ve hangi adresten görüldüğünü dağıtır. Bu ayrım pratik bir sonuç doğurur, çünkü trafiğinizi şifreleyen özel anahtarlar hiçbir zaman sunucuya çıkmaz ve engellenecek bir "Tailscale çıkış IP'si" havuzu ortada yoktur.

Kavram tarafını daha baştan almak isterseniz Tailscale'in ne olduğu ve hangi problemi çözdüğü ayrı bir yazıda duruyor. Ürün karşılaştırması arıyorsanız da Tailscale'in ticari bir VPN sayılıp sayılmayacağı sorusunun cevabı orada.

Bağlanmak için erişilebilir olması gereken üç şey

Birincisi kimlik sağlayıcı. İlk tailscale up komutu size bir giriş adresi verir ve tarayıcıda Google, GitHub, Microsoft veya Apple hesabınızla oturum açmanızı ister. Bu adım tailnet'inize hangi makinenin gireceğine karar verir. Kimlik sağlayıcıya ulaşamazsanız makine hiç katılamaz, çünkü ortada imzalanmış bir kayıt yoktur. Belirti nettir: tailscale up sizi beklemede bırakır ve tailscale status cihazın oturum açmadığını bildirir. Şirket hesabıyla giriş yapıyorsanız kurumsal oturum açma sayfasının da açılması gerekir.

İkincisi koordinasyon sunucusu. Tailscale istemcisi controlplane.tailscale.com adresine TCP 443 üzerinden bağlanır. Buradan eş listesini, genel anahtarları, ACL kurallarını ve DERP haritasını alır. Bu bağlantı koparsa istemci elindeki son bilgiyle bir süre çalışmaya devam eder, ama yeni bir cihaz ekleyemezsiniz, anahtar yenilemesi yapılamaz ve değişen adresler kimseye duyurulmaz. Yani ağ birden ölmez, yavaşça eskir.

Üçüncüsü DERP relay'i. DERP, Tailscale'in kendi yazdığı relay sunucusudur (Designated Encrypted Relay for Packets). İki işi vardır: iki eşin birbirini bulması için ilk mesajları taşımak, ve doğrudan yol hiç kurulamazsa şifreli paketleri aktarmak. DERP sunucuları da TCP 443 üzerinden konuşur. Tailscale'in belgelerine göre bu sunucular derp1-all.tailscale.com biçiminde adlandırılır ve sayıları zaman içinde değişir, bu yüzden güvenlik duvarı kuralı yazacaksanız IP değil alan adı kullanın. Güncel liste https://login.tailscale.com/derpmap/default adresinden JSON olarak gelir.

Bu üçünün yanında iki tane de yardımcı yol vardır. İstemci NAT arkasındaki dış adresini öğrenmek için UDP 3478 portuna STUN isteği gönderir, ve doğrudan tünel için UDP 41641 kaynak portundan dışarı paket açar. Bir kurum ağında Tailscale'i açacaksanız izin vermeniz gereken kalıp şudur:

  • Dışarı TCP 443, koordinasyon ve DERP için
  • Dışarı UDP 3478, STUN ile adres keşfi için
  • Dışarı UDP, kaynak port 41641, doğrudan WireGuard tüneli için
  • Dışarı TCP 80, captive portal tespiti ve sunucu tercihi için

UDP tamamen kapalıysa Tailscale yine çalışır. Sadece her şey 443 üzerinden relay'e düşer ve gecikme artar.

Kurulum ve ilk iki komut

Linux tarafında kurulum tek satırdır. Resmî betik dağıtımı tanır ve paket deposunu kendisi ekler.

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

sudo tailscale up ekrana bir giriş adresi yazar. O adresi tarayıcıda açıp kimlik sağlayıcınızla oturum açarsınız, makine tailnet'e katılır. Depo ekleme adımında hata alırsanız sorun Tailscale'de değil apt yapılandırmasındadır ve Ubuntu'da Tailscale kurulum hatalarının tek tek çözümü ayrı bir yazıda duruyor.

Katıldıktan sonra hattınızı ölçün. İki komut yeter.

tailscale netcheck
tailscale status

tailscale netcheck sizin bağlantınızın NAT davranışını raporlar. Çıktıda UDP'nin geçip geçmediği, IPv4 ve IPv6 durumu, modeminizin port eşleme desteği (UPnP, NAT-PMP, PCP), hedefe göre dış portunuzun değişip değişmediği ve size en yakın DERP bölgeleri ile milisaniye cinsinden gecikmeleri yer alır. Hangi bölgeyi seçtiğini ve gecikmenin ne çıktığını kendi ekranınızdan okuyun. İstanbul'daki bir fiber hat ile Ankara'daki bir mobil hat aynı sonucu vermez, aynı hat bile akşam ile sabah farklı çıkabilir.

tailscale status her eş için tek satır basar. Satırın sonunda o eşle aranızdaki yolun ne olduğu yazar: ya doğrudan bir adres ve port, ya da bir relay bölgesi. Bu tek kelime, ağınızın gerçek durumudur. Belirli bir eşi test etmek için:

tailscale ping <eş-adı>

tailscale ping önce relay üzerinden cevap alır, sonra doğrudan yol kurulana kadar denemeye devam eder. Kaç denemede doğrudan yola geçtiğini izleyin. Hiç geçmiyorsa oturum kalıcı olarak relay üzerinden yürüyor demektir, ve bunun ne kadar hız kaybettirdiğini doğrudan ve relay üzerinden bağlantı arasındaki farkı ölçen yazıda anlattım.

Üç arıza birbirine benzemez

Sorunu doğru katmanda aramak zamandan kazandırır. Ayırt etmenin yolu şu sırayla bakmaktır.

Makine hiç katılamıyorsa sorun kimlik sağlayıcıdadır. tailscale up giriş adresini yazar ama tarayıcıda sayfa açılmaz veya oturum tamamlanmaz. Bu durumda Tailscale'in kendisi test edilmemiştir bile. Farklı bir kimlik sağlayıcı deneyin, ya da cihazı bir kez ön yetkilendirme anahtarıyla katın.

Makine katılıyor ama eş listesi güncellenmiyorsa sorun koordinasyon sunucusuna erişimdedir. Yeni eklediğiniz cihaz tailscale status çıktısında görünmez, eski cihazlar görünmeye devam eder. Ağın eski bilgiyle çalışması tam olarak bu tabloyu üretir.

Eşler listeleniyor ama trafik akmıyorsa sorun yol kurmadadır. tailscale ping cevapsız kalıyorsa ne doğrudan yol kurulabiliyor ne de relay'e ulaşılabiliyor demektir. Bu noktada tailscale netcheck çıktısındaki DERP satırlarına bakın: gecikme ölçülebiliyorsa relay'e erişiminiz vardır ve sorun başka yerdedir.

Evdeki CGNAT Tailscale'i bozar mı?

Hayır, bozmaz. Ama bedelini gecikme olarak ödersiniz.

CGNAT (carrier grade NAT, operatör seviyesinde adres çevirisi) Türkiye'deki konut hatlarında sık görülür. Anlamı şudur: modeminizin WAN tarafındaki adres gerçek bir genel IPv4 adresi değildir, operatörün ağı içindeki özel bir adrestir ve yüzlerce abone aynı genel adresi paylaşır. Sonucu da şudur: port yönlendirme yapamazsınız, çünkü yönlendireceğiniz genel port size ait değildir. Dışarıdan gelen bağlantıyı kabul edemezsiniz.

Tailscale zaten dışarıdan gelen bağlantı beklemez. İki eş de kendi tarafından dışarı doğru UDP paketi açar, STUN ile öğrendikleri dış adres ve portu koordinasyon sunucusu üzerinden takas eder, sonra aynı anda birbirine paket gönderir. NAT her iki tarafta da bu paketleri "benim başlattığım oturumun cevabı" diye görür ve içeri alır. Bu yönteme delik açma denir ve çoğu CGNAT yapılandırmasında çalışır.

Çalışmadığı bir durum var. Bazı NAT'lar her farklı hedef IP için size farklı bir dış port atar. Bu davranışa zor NAT denir ve tailscale netcheck çıktısı bunu raporlar. Dış portunuz hedefe göre değiştiğinde karşı tarafa doğru adresi bildiremezsiniz, çünkü bildirdiğiniz port o eşe gönderdiğiniz pakette geçerli olmaz. İki tarafta da bu davranış varsa doğrudan yol kurulamaz ve oturum DERP relay'ine düşer.

Relay'e düşmek bağlantının kopması değildir. Trafik yine uçtan uca şifrelidir ve relay içeriği göremez. Değişen şey rotadır: paket iki makine arasındaki en kısa yol yerine relay sunucusuna gidip oradan döner. Ev ile ofis arasındaki 10 milisaniyelik yol, relay üzerinden çok daha uzun olabilir. SSH oturumunda tuş gecikmesi olarak, dosya kopyalarken düşük hız olarak hissedilir.

Operatörünüz gerçek IPv6 veriyorsa işiniz kolaylaşır, çünkü IPv6'da adres çevirisi yoktur ve doğrudan yol kurma şansı belirgin biçimde artar. Modeminizin IPv6 ayarını açık bırakın.

Kalıcı çözüm 1: yakınınızda bir VPS

CGNAT'ın tek gerçek panzehiri, ağınızda NAT arkasında olmayan en az bir makine bulundurmaktır. Bir VPS'in genel IPv4 adresi vardır ve dışarıdan gelen bağlantıyı kabul eder. Böyle bir düğüm tailnet'inizde durduğunda, CGNAT arkasındaki her cihaz en azından onunla doğrudan konuşabilir. Sunucuyu coğrafi olarak size yakın seçin: paketin fiziksel yolu kısaldıkça gecikme düşer.

VPS'i çıkış düğümü yapmak için yönlendirmeyi açın ve düğümü duyurun.

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
sudo tailscale up --advertise-exit-node

Duyurmak yetmez. Yönetim panelinde o makinenin çıkış düğümü olarak kullanılmasını onaylamanız gerekir, aksi halde istemciler onu listede görmez. Onaydan sonra istemci tarafında:

sudo tailscale set --exit-node=<vps-tailnet-ip>
sudo tailscale set --exit-node=<vps-tailnet-ip> --exit-node-allow-lan-access=true

İkinci satır yerel ağınıza erişimi açık tutar, yani yazıcınız ve NAS'ınız çıkış düğümü açıkken de çalışmaya devam eder. Çıkış düğümünü kapatmak için değeri boş bırakın:

sudo tailscale set --exit-node=

Bu kurulumun tam hâli, güvenlik duvarı ayarları ve hız beklentisiyle birlikte bir VPS'i exit node olarak kurma yazısında adım adım duruyor. Amacınız bütün trafiği çevirmek değil de sadece ofisteki özel ağa ulaşmaksa çıkış düğümü yerine subnet router ile özel IP aralıklarını tailnet'e duyurmak daha az veri taşır ve daha hızlıdır.

Kalıcı çözüm 2: kontrol düzlemi sizin sunucunuzda

Koordinasyon sunucusuna bağımlılık rahatsız ediyorsa, o parçayı kendi donanımınızda çalıştırabilirsiniz. Headscale, Tailscale kontrol sunucusunun açık kaynaklı ve kendi kendine barındırılan bir uygulamasıdır. Tek bir tailnet'i hedefler, yani kişisel kullanım ve küçük ekipler için tasarlanmıştır.

İstemci tarafında değişen tek şey sunucu adresidir. Önce kullanıcıyı ve anahtarı sunucuda oluşturursunuz:

headscale users create <KULLANICI>
headscale preauthkeys create --user <KULLANICI_ID>

Sonra istemciyi kendi sunucunuza yönlendirirsiniz:

sudo tailscale up --login-server https://hs.ornek.com --authkey <ANAHTAR>

Bunun Türkiye'deki okuyucu için asıl değeri şudur: kontrol düzlemi sizin seçtiğiniz veri merkezinde çalışır ve Headscale kendi DERP haritasını sunabildiği için relay de sizin sunucunuz olabilir. O zaman üç bileşenden ikisi sizin elinizdedir ve geriye yalnızca kimlik sağlayıcı kalır. Kurulum, TLS sertifikası ve yönetim tarafı için Headscale ile kendi kontrol sunucunuzu çalıştırma yazısına bakın.

Ağ protokolü seviyesinde filtreleme yapıyorsa

Tailscale'in relay trafiği TCP 443 üzerinden gider, yani sıradan bir port filtresine takılmaz. Protokol seviyesinde inceleme yapan bir ağ ise ayrı bir konudur ve çözümü Tailscale ayarlarında değil taşıma katmanındadır. Bu yazının konusu kendi makinelerinizi birbirine bağlamak olduğu için o tarafı burada tekrarlamıyorum: bağlantınız protokol seviyesinde engellendiğinde çalıştırabileceğiniz taşıma seçenekleri ayrı bir yazıda toplu hâlde duruyor.

Kısa kontrol listesi

  • Kurun, sudo tailscale up ile katılın, giriş adresini tarayıcıda açın
  • tailscale netcheck çalıştırın ve UDP durumu, IPv6 ve DERP gecikmelerini kendi çıktınızdan okuyun
  • tailscale status ile her eşin doğrudan mı relay üzerinden mi bağlandığına bakın
  • Relay üzerinden kalan oturumlar varsa tailnet'e genel IP'li bir VPS ekleyin
  • Kontrol düzlemini de kendiniz istiyorsanız Headscale'e geçin

Bu beş adımdan sonra elinizde tahmin değil ölçüm olur. "Türkiye'de çalışır mı" sorusunun cevabı da genel bir iddia değil, sizin hattınızdan alınmış bir çıktı olur.

Sıkça sorulan sorular (FAQ)

Tailscale Türkiye'de engelli mi?

Bu yazı gün gün değişebilecek bir engel listesi tutmaz ve hukuki tavsiye vermez. Teknik tarafı söyleyebilirim: Tailscale'in satılan bir çıkış sunucusu filosu yoktur, trafik sizin kendi makineleriniz arasında akar ve relay trafiği TCP 443 üzerinden gider. Kendi hattınızdaki durumu öğrenmenin tek doğru yolu tailscale netcheck ve tailscale status komutlarını çalıştırıp çıktıyı okumaktır.

CGNAT arkasındaki ev hattımda Tailscale çalışır mı?

Çalışır. Tailscale dışarıdan gelen bağlantı beklemez, iki taraf da dışarı doğru UDP açar ve adreslerini koordinasyon sunucusu üzerinden takas eder. CGNAT'ın etkisi bağlantıyı kesmek değil, daha çok oturumu DERP relay'ine düşürmektir. Bedeli gecikmedir. Kalıcı çözüm, tailnet'inize genel IP'li bir VPS eklemektir.

tailscale netcheck çıktısında neye bakmalıyım?

Üç satır önemlidir: UDP'nin geçip geçmediği, dış portunuzun hedefe göre değişip değişmediği, ve listelenen DERP bölgeleri ile gecikmeleri. UDP kapalıysa veya dış portunuz her hedefte değişiyorsa doğrudan yol kurulma ihtimali düşer. Değerleri kendi ekranınızdan okuyun, çünkü operatöre ve saate göre değişir.

Türkiye'deki bir sunucuyu çıkış düğümü yapabilir miyim?

Evet. Sunucuda IP yönlendirmeyi açıp sudo tailscale up --advertise-exit-node komutunu çalıştırın, sonra yönetim panelinden çıkış düğümünü onaylayın. İstemcide sudo tailscale set --exit-node=<ip> yazdığınızda bütün trafik o sunucudan çıkar. Yerel yazıcı ve NAS erişiminizi korumak için --exit-node-allow-lan-access=true ekleyin.