VPS uzerinden Tailscale exit node kurulumu nasil yapilir
Tailscale exit node kurulumu icin IP forwarding etkinlestirme, route onayi ve DNS ayarlari adimlarini ogrenin. VPS trafigini guvenli hale getirmek icin gereken tum komutlar.
Tailscale exit node ne işe yarar
Tailscale exit node, tailnet ağınızdaki diğer cihazların tüm internet trafiğini taşıyan bir makinedir. Sabit bir genel IP adresine sahip olması ve sürekli çevrimiçi kalması nedeniyle VPS (sanal özel sunucu) bu görev için oldukça uygundur. Kurulum beş adımdan oluşur: sunucuya Tailscale kurmak, exit node duyurusunu yapmak, IP yönlendirmeyi (IP forwarding) etkinleştirmek, yönetim konsolundan rotayı onaylamak ve son olarak dizüstü bilgisayarınızdan ilgili düğümü seçmek. Dördüncü adım bir komut değil, web arayüzündeki bir anahtardır; çoğu kullanıcı bu aşamada takılır.
Özellik etkinleştirildiğinde, dizüstü bilgisayarınız her paketi şifreler ve VPS'e gönderir. VPS, kaynak NAT (ağ adresi çevirisi) uygular ve paketi kendi genel IP adresi üzerinden iletir. Web siteleri trafiği VPS'ten geliyormuş gibi görür. Kafe Wi-Fi ağı ise yalnızca VPS'e giden şifreli bir UDP akışı görür, başka hiçbir veriyi göremez.
Tailscale, veri yolu için WireGuard protokolünü kullanır; anahtarları dağıtan ve iki makinenin NAT arkasında birbirini bulmasını sağlayan bir koordinasyon sunucusu ile çalışır. Bu koordinasyon sunucusu sayesinde aşağıda herhangi bir anahtar kopyalama işlemine gerek kalmaz. Avantaj ve dezavantajların ayrıntılı karşılaştırması için Tailscale ve standart WireGuard karşılaştırması bölümünü okuyabilirsiniz. Tünelin her aşamasını kendiniz yönetmek isterseniz, bunun yerine VPS üzerinde kendi WireGuard VPN'inizi kurun.
Aşağıdaki adımlar, dizüstü bilgisayarınızda Tailscale'in halihazırda çalıştığını ve her iki makinenin de aynı tailnet üzerinde oturum açtığını varsayar. Tailnet, özel Tailscale ağınızdır ve ağdaki her cihaz 100.64.0.0/10 içinde sabit bir adres alır.
VPS üzerinde Tailscale kurulumu
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale upKurulum betiği, dağıtımınız için uygun paket deposunu seçer ve tailscaled daemon'ını kurar. tailscale up komutu daha sonra bir kimlik doğrulama URL'si çıktısı verir. Bu URL'yi bir tarayıcıda açın ve dizüstü bilgisayarınızın kullandığı hesapla giriş yapın; farklı bir tailnet'e bağlı olan bir VPS, dizüstü bilgisayarınıza hizmet veremez.
tailscale status
tailscale ip -4tailscale status komutu artık her iki makineyi de listelemelidir. tailscale ip -4 komutu, daha sonra istemciye vereceğiniz VPS'in tailnet adresini yazdırır.
Tailscale, tüneli oluşturmak için bir TUN aygıtına ihtiyaç duyar. KVM tabanlı bir VPS üzerinde bu aygıt mevcuttur. Ana makine çekirdeğini paylaşan konteyner sanallaştırma tabanlı planlarda /dev/net/tun bazen eksiktir ve tailscaled, tailscale0 arayüzünü oluşturamaz. Devam etmeden önce ls -l /dev/net/tun komutunu çalıştırın.
IP yönlendirmeyi etkinleştirin, aksi takdirde VPS her paketi düşürür
Bir Linux makinesi, kendisine gönderilmeyen her paketi düşürür; çünkü net.ipv4.ip_forward varsayılan olarak 0 değerindedir. Çıkış düğümü trafiğinizi kabul eder, şifresini çözer ve ardından çöpe atar. Ayarın yeniden başlatma sonrasında da kalıcı olması için bir dosyaya yazın.
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.conftee -a ekleme yapar, bu nedenle bu satırları ikinci kez çalıştırmak her iki ayarı da iki kez yazar. Sonuç yine de çalışır ancak cat /etc/sysctl.d/99-tailscale.conf garip görünecektir. Dosyaya güvenmek yerine canlı değeri doğrulayın:
sysctl net.ipv4.ip_forwardÇıktı net.ipv4.ip_forward = 1 olmalıdır. Bunu atlar ve tailscale up --advertise-exit-node kullanırsanız, istemci size şunu söyler:
Warning: IP forwarding is disabled, subnet routing/exit nodes will not work.tailscale set --advertise-exit-node bu kontrolü çalıştırmaz, bu nedenle set tarafından sessiz kalınması yönlendirmenin açık olduğunun kanıtı değildir. sysctl değerini kendiniz okuyun.
Elle bir maskeleme (masquerade) kuralı yazmanıza gerek yoktur. tailscaled, ts-input, ts-forward ve ts-postrouting adında kendi güvenlik duvarı zincirlerini kurar ve çıkış düğümü trafiğine yönelik NAT kuralı ts-postrouting içinde yer alır. Bunları sudo iptables-save | grep ts- ile veya nftables kullanan bir sistemde sudo nft list ruleset ile inceleyin.
VPS'i çıkış düğümü (exit node) olarak duyurma
sudo tailscale set --advertise-exit-nodetailscale set komutu tek bir tercihi değiştirir ve diğerlerini olduğu gibi bırakır. tailscale up --advertise-exit-node komutu ise düğümü duyurur ancak bir yan etkisi vardır: up, komut satırındaki bayrakları varsayılan olmayan ayarların tam kümesi olarak kabul eder; bu nedenle daha sonra çalıştırılan çıplak bir sudo tailscale up komutu çalışmayı reddeder ve şu çıktıyı verir:
changing settings via 'tailscale up' requires mentioning all
non-default flags. To proceed, either re-run your command with --reset or
use the command below to explicitly mention the current value of
all non-default settings:Süregelen değişiklikler için set kullanın; böylece bu mesajla hiçbir zaman karşılaşmazsınız.
Duyuru bir tekliftir. VPS artık koordinasyon sunucusuna çıkış düğümü olmaya istekli olduğunu bildirmektedir. Henüz hiçbir istemci onu kullanamaz.
Tailscale exit node'unu yönetici konsolunda onaylayın
Bu adım herhangi bir komut gerektirmez. Yönetici konsolundaki Machines sayfasına gidin, VPS'i bulun, satırın sonundaki üç nokta menüsünü açın, Edit route settings seçeneğini belirleyin ve Use as exit node seçeneğini aktif hale getirin.
Bu anahtar açık konuma getirilene kadar kontrol düzlemi teklifi bekletir ve kimseye iletmez. Dizüstü bilgisayarınızdaki tailscale exit-node list komutu hiçbir şey göstermez ve trafiğiniz normal rotasını izlemeye devam eder. Her iki makinede de herhangi bir hata mesajı oluşmaz. Exit node hiçbir zaman görünür hale gelmez.
Exit node'ları tailnet politika dosyasındaki bir girdi ile otomatik olarak onaylayabilirsiniz:
"autoApprovers": {
"exitNode": ["tag:exit"],
}--advertise-tags=tag:exit ile ayağa kaldırılan bir cihaz, aynı politika dosyasında tagOwners altında tag:exit tanımlandığı sürece otomatik olarak onaylanır. Etiketleme (tagging) sahipliği değiştirir: etiketli bir cihaz kullanıcı hesabınızdan ziyade tailnet'e aittir ve buna uygulanan erişim kuralları da buna göre değişir. Tek bir VPS için anahtarı kullanmak daha basittir.
Dizüstü bilgisayarınızda çıkış düğümünü seçin
Linux istemcisinde:
tailscale exit-node list
sudo tailscale set --exit-node=vps.your-tailnet.ts.netexit-node list, tailnet ağınızdaki onaylanmış çıkış düğümlerini adresleriyle birlikte listeler. Listenin boş olması, onay adımının gerçekleşmediği anlamına gelir. macOS, Windows, iOS ve Android üzerinde aynı seçim, Tailscale uygulamasındaki Exit Node menü öğesi altında bulunur.
İstemci üzerinden doğrulama yapın, sunucu üzerinden asla yapmayın:
curl -4 https://ifconfig.meBu komutu çıkış düğümünü seçmeden önce bir kez, seçtikten sonra bir kez çalıştırın. Adres, yerel adresinizden VPS'in genel IP adresine değişmelidir. Çıkış düğümünü kullanmayı durdurmak için:
sudo tailscale set --exit-node=İlk gün önemli olan bir bayrak daha vardır. Bir çıkış düğümü seçildiğinde, istemci 192.168.1.50 adresine gönderilen paketler dahil olmak üzere her şeyi tünele yönlendirir; bu nedenle yazıcınız ve ağ depolama biriminiz yanıt vermeyi keser. Yerel ağı yerel rotada tutmak için:
sudo tailscale set --exit-node=<name> --exit-node-allow-lan-access=trueÇıkış düğümü açıkken DNS ayarlarınızın değişme nedeni
Varsayılan olarak, bir çıkış düğümü (exit node) kullanan cihaz, tüm alan adları için bu çıkış düğümünü DNS (alan adı sistemi) çözümleyicisi olarak kullanır ve bu durum, tailnet ağınız için yapılandırılmış genel ve bölünmüş DNS ad sunucularını geçersiz kılar. Bu davranış kasıtlıdır. Sorgular yerel ağın çözümleyicisine gitmeye devam etseydi, trafik özel olsa bile bir kafe yönlendiricisi ziyaret ettiğiniz her sitenin adını görebilirdi. Adlar ve paketler aynı noktadan çıkış yapmalıdır.
Bu durumun, dahili bir çözümleyici çalıştıran kullanıcılar için bir sonucu vardır: bağımlı olduğunuz bir tailnet ad sunucusu, çıkış düğümü açıkken kullanılmaz hale gelir. Bunu düzeltmek için yönetici konsolunun DNS sayfasında ilgili ad sunucusu için Use with exit node seçeneğini etkinleştirin.
MagicDNS adları çalışmaya devam eder; çünkü Tailscale istemcisi bunları herhangi bir veri çıkış düğümüne ulaşmadan önce yerel olarak 100.100.100.100 adresinde yanıtlar. Bunu dig @100.100.100.100 your-vps.your-tailnet.ts.net ile veya resolvectl status kullanan bir systemd-resolved istemcisinde kontrol edebilirsiniz; bu durumda Tailscale arayüzü, DNS sunucusu olarak 100.100.100.100 değerini listeler.
Tailscale'in DNS yönetimini --accept-dns=false ile devre dışı bırakırsanız, istemci yerel ağdan öğrendiği çözümleyiciyi kullanmaya devam eder. Trafik tünellenir ancak sorgular tünellenmez; bu durum elle yapılandırılmış WireGuard tünellerinde karşılaşılan DNS sızıntısı ile aynıdır. Değiştirmek için özel bir nedeniniz yoksa --accept-dns ayarına dokunmayın.
Çıkış düğümü üzerinden IPv6
Bir çıkış düğümü, hem 0.0.0.0/0 hem de ::/0 varsayılan rotalarını duyurur. Eğer VPS'in internete giden çalışan bir IPv6 yolu yoksa, IPv6 paketleri tünel üzerinden gelir ve orada takılır. Güvenmeden önce VPS üzerinde test yapın:
ip -6 addr show
curl -6 https://ifconfig.meBaşarısız bir istek, VPS'in IPv6 üst akışına (upstream) sahip olmadığı anlamına gelir. İstemci IPv6'dan vazgeçip IPv4 üzerinden tekrar denediği için çift yığınlı (dual stack) web siteleri genellikle yine de yüklenir; ancak bu yeniden deneme, her siteye yapılan ilk bağlantıda gecikmeye neden olur. Yalnızca IPv6 destekleyen hedefler ise erişilemez durumda kalır.
İşin diğer yarısı yönlendirmedir. net.ipv6.conf.all.forwarding değeri 0 bırakılmış bir net.ipv4.ip_forward = 1, size çalışan bir IPv4 yolu ve IPv6 için bir kara delik sağlar; bu durum kullanıcı tarafından aranabilir bir hata yerine "bazı siteler yavaş" şeklinde deneyimlenir. Her iki satır da sysctl dosyasına eklenmelidir.
VPS, alt ağ rotalarını da duyurmalı mı?
Bir çıkış düğümü (exit node), tüm internet trafiğini taşır. Bir alt ağ rotası (subnet route) ise, onu duyuran makinenin arkasında yer alan tek bir özel IP aralığını taşır. Bunlar ayrı onay süreçlerine sahip ayrı özelliklerdir ve tek bir makine her ikisini de gerçekleştirebilir.
sudo tailscale set --advertise-routes=10.0.0.0/24VPS, özel IP adresleri üzerinden erişmek istediğiniz diğer sunucularla bir özel ağı paylaşıyorsa bir alt ağ duyurun. Bunu, aynı Edit route settings paneli üzerinden, kendi anahtarı (toggle) ile onaylayın.
Aralığı dikkatli seçin. Duyurulan bir rota, dizüstü bilgisayarınızın varsayılan rotasından daha spesifiktir; bu nedenle VPS üzerinden 192.168.1.0/24 duyurmak, aynı aralığı kullanan bir ev ağının adreslerini devralır ve masanızdaki cihazların bağlantısı kesilir. Ev yönlendiricinizin (router) sizin için seçtiği aralığı değil, kendi belirlediğiniz bir aralığı kullanın.
UDP GRO forwarding ile exit node performansını artırma
Tailscale 1.54 ve sonraki sürümleri, Linux 6.2 ve üzeri çekirdeklerde, iletilen trafik için verimi artıran bir receive offload mekanizması kullanabilir. GRO (generic receive offload), gelen paketleri çekirdek tek tek işlemeden önce birleştirir. Ağustos 2026 itibarıyla bu işlem, exit node üzerinde manuel olarak gerçekleştirilmelidir.
sudo apt install -y ethtool
NETDEV=$(ip -o route get 8.8.8.8 | cut -f 5 -d " ")
sudo ethtool -K $NETDEV rx-udp-gro-forwarding on rx-gro-list offip -o route get 8.8.8.8, internete fiilen erişen arayüzü bildirir; böylece eth0, ens3 ve enp1s0 arasında tahminde bulunmanıza gerek kalmaz. Artık on değerini göstermesi gereken ethtool -k $NETDEV | grep udp-gro-forwarding ile doğrulamayı yapın.
Bu ayar yeniden başlatma sonrasında kaybolur. networkd-dispatcher çalıştıran bir sistemde bunu otomatik hale getirin:
printf '#!/bin/sh\n\nethtool -K %s rx-udp-gro-forwarding on rx-gro-list off \n' "$(ip -o route get 8.8.8.8 | cut -f 5 -d " ")" | sudo tee /etc/networkd-dispatcher/routable.d/50-tailscale
sudo chmod 755 /etc/networkd-dispatcher/routable.d/50-tailscaleÖncelikle /etc/networkd-dispatcher/routable.d/ dosyasının varlığını kontrol edin. Eğer dosya mevcut değilse, makine networkd-dispatcher çalıştırmıyordur; bu durumda ethtool satırını açılışta çalıştıran küçük bir systemd birimi aynı işi görecektir.
Sağlayıcınızın kabul edilebilir kullanım politikasının çıkış trafiği için anlamı
Bir istemcinin çıkış düğümü üzerinden gönderdiği her paket, VPS'in genel IP adresiyle çıkar; bu nedenle trafik sizin hesabınıza atfedilir. Kötüye kullanım bildirimleri (telif hakkı uyarıları, port tarama şikayetleri gibi) doğrudan size ulaşır. Bir ev ağını veya bir ekibi tek bir sunucu üzerinden yönlendirmeden önce sağlayıcınızın AUP (kabul edilebilir kullanım politikası) metnini okuyun ve çıkış düğümünü kefil olamayacağınız kişilere açmayın.
Bant genişliği iki kez sayılır. Trafik, tünel üzerinden VPS'e ulaşır ve ardından internete doğru tekrar çıkar; her iki yön de genellikle planınızdaki veri transferi kotasından düşülür. Bir çıkış düğümü üzerinden izlenen video akışı, çoğu kullanıcının beklediğinden daha fazla veri tüketir.
Veri merkezi IP blokları belirli bir itibara sahiptir. Bazı siteler bu IP adreslerine daha fazla CAPTCHA gösterir, bazı yayın servisleri ise bu adreslerden gelen trafiği doğrudan reddeder. Yapılandırmanızda yapacağınız hiçbir değişiklik bunu düzeltemez; çünkü bu durum, sağlayıcınızın sahip olduğu IP bloğunun bir özelliğidir.
Trafiğin neden hala yerel bağlantınız üzerinden çıktığı
Exit node duyurulmuş ancak onaylanmamıştır. İstemci üzerinde tailscale exit-node list komutu hiçbir çıktı vermez ve hiçbir makinede hata günlüğü oluşmaz. Machines sayfasına gidin ve Use as exit node seçeneğini etkinleştirin.
İstemci çıkış düğümünü seçmemiştir. Onay işlemi, düğümü tailnet üzerinde kullanılabilir hale getirir. Seçim işlemi her cihazda ayrı ayrı yapılmalıdır. sudo tailscale set --exit-node=<name> komutunu tekrar çalıştırın ve ardından curl -4 https://ifconfig.me komutunu tekrar kontrol edin.
Yönlendirme (forwarding) kapalıdır. Belirti belirgindir: tailscale ping <vps> başarılı olur, tünel açıkça kurulmuştur ancak tüm dış adresler zaman aşımına uğrar. sysctl net.ipv4.ip_forward komutu 0 değerini döndürür. sysctl dosyasını düzeltin ve ardından sudo sysctl -p /etc/sysctl.d/99-tailscale.conf komutunu çalıştırın.
Bir güvenlik duvarı yönlendirilen paketleri düşürüyordur. tailscaled kendi ts-forward zincirini ekler; temiz bir VPS üzerinde bu yeterlidir. Halihazırda ufw veya Docker çalıştıran bir sunucuda FORWARD politikası DROP olarak ayarlanmış olabilir veya kurallar Tailscale kurallarından önce işleniyor olabilir. Tahmin etmek yerine, istemci bir sayfa yüklemeye çalışırken sudo iptables -L FORWARD -n -v komutunu çalıştırın ve hangi sayaçların arttığını izleyin. ufw yüklü bir sistemde genellikle /etc/default/ufw dosyası içinde DEFAULT_FORWARD_POLICY="ACCEPT" değişikliği yapılıp ardından sudo ufw reload komutunun çalıştırılması sorunu çözer. Sunucu üzerinde çalışan herhangi bir yazılımdan bağımsız bir kontrol mekanizması olduğundan, servis sağlayıcınızın kontrol panelindeki ağ güvenlik duvarını da kontrol edin.
Çalışıyor ancak yavaş. Her iki makinede de tailscale netcheck komutunu çalıştırın. Eğer UDP'nin engellendiği raporlanıyorsa, iki cihaz doğrudan bir yol oluşturamıyor ve her bağlantıya gecikme ekleyen bir DERP rölesine geri dönüyordur. Servis sağlayıcının ağ güvenlik duvarında 41641 numaralı UDP portuna gelen trafiğe izin vermek genellikle doğrudan yolu geri yükler.
Tailscale koordinasyon sunucusundan ne zaman ayrılmalı
Yukarıdaki her şey, anahtar değişimi ve onay işlemleri için Tailscale'in barındırdığı koordinasyon sunucusuna bağımlıdır. Trafiğiniz doğrudan dizüstü bilgisayarınızdan VPS'e gider ve koordinasyon sunucusu üzerinden geçmez; ancak sunucu, tailnet ağına kimin katılabileceğine ve her cihazın nereye erişebileceğine karar verir. Eğer bu bağımlılığı ortadan kaldırmak istiyorsanız, kendi Tailscale kontrol sunucunuz olarak Headscale çalıştırın ve her iki istemciyi de bu sunucuya yönlendirin. Çıkış düğümü (exit node) adımları sonrasında aynıdır, ancak rota onayı barındırılan konsol yerine Headscale komut satırı üzerinden yapılır. Headscale kontrol düzlemini değiştirir ancak Tailscale istemcilerini kullanmaya devam etmenizi sağlar. Eğer tüm yığını kendiniz yönetmek isterseniz, NetBird kendi koordinasyon sunucusu ve tek bir VPS üzerinde barındırabileceğiniz istemcileriyle birlikte gelir.
FAQ
Çıkış düğümünü seçmeme rağmen trafiğim neden hala yerel bağlantımı kullanıyor?
Bunun iki yaygın nedeni vardır. Çıkış düğümü duyurulmuş ancak onaylanmamış olabilir: yönetici panelindeki Machines sayfasını açın, VPS'i bulun, Edit route settings seçeneğini belirleyin ve Use as exit node ayarını açın. Onay işlemi panel üzerinden yapılan bir anahtar ayarıdır ve sunucu üzerindeki hiçbir komut bunu gerçekleştirmez. İkinci neden ise farklı görünür: IP yönlendirme kapalıdır; bu durumda tünel kurulur, VPS'e tailscale ping erişimi çalışır ancak tüm dış adresler zaman aşımına uğrar. sysctl net.ipv4.ip_forward komutu ile kontrol edin; değer 1 olmalıdır.
Çıkış düğümünü her seferinde manuel olarak onaylamam gerekiyor mu?
Bu anahtar, her makine için tek seferlik bir işlemdir. VPS'i sık sık yeniden oluşturuyorsanız, tailnet politika dosyanıza "exitNode": ["tag:exit"] içeren bir autoApprovers bloğu ekleyin, tagOwners altında tag:exit tanımlayın ve düğümü --advertise-tags=tag:exit ile ayağa kaldırın. Etiketli bir cihaz, kullanıcı hesabınızdan ziyade tailnet'in kendisine aittir; bu nedenle cihaz için geçerli olan erişim kuralları da değişir.
Çıkış düğümü açıkken dizüstü bilgisayarım hangi DNS sunucusunu kullanır?
Çıkış düğümünün kendisini kullanır. Çıkış düğümü kullanan bir cihaz, tüm DNS sorgularını oraya gönderir ve bu durum, tailnet için ayarlanan genel ve bölünmüş DNS ad sunucularını geçersiz kılar. Bu, yerel ağın arattığınız isimleri görmesini engeller. Bir tailnet ad sunucusunun geçerli kalmasını sağlamak için, yönetici panelindeki DNS sayfasında ilgili sunucu için Use with exit node seçeneğini etkinleştirin. MagicDNS isimleri çözümlenmeye devam eder, çünkü Tailscale istemcisi bunları yerel olarak 100.100.100.100 adresinde yanıtlar.
Bir VPS aynı anda hem çıkış düğümü hem de alt ağ yönlendiricisi olabilir mi?
Evet. sudo tailscale set --advertise-exit-node ve sudo tailscale set --advertise-routes=10.0.0.0/24 birbirinden bağımsızdır ve her birinin Edit route settings altında kendi onay anahtarı bulunur. Her ikisi için de VPS üzerinde IP yönlendirmenin etkinleştirilmesi gerekir. Dizüstü bilgisayarınızın ev ağıyla eşleşen bir aralığı duyurmaktan kaçının; çünkü duyurulan rota varsayılan rotadan daha spesifiktir ve yerel cihazlarınıza erişilemez hale gelir.
Çıkış düğümü trafiğimi VPS sağlayıcımdan gizler mi?
Hayır. Tünel VPS'te sonlanır, bu nedenle trafik sunucudan hedefin beklediği biçimde çıkar ve site şifrelenmemişse sağlayıcınız trafiği açık metin olarak taşır. Çıkış düğümü, trafiğinizin internete dahil olduğu noktayı, bulunduğunuz ağdan kiraladığınız sunucuya taşır. Bu, internette gezinme alışkanlıklarınızı kafe Wi-Fi ağından ve evinizdeki İSS'den gizler; ancak aynı gezinme verilerini, hesap adınızla ilişkilendirilmiş şekilde VPS sağlayıcınıza gösterir.