Cara Menjadikan VPS sebagai Exit Node Tailscale
Pelajari cara menjadikan VPS sebagai exit node Tailscale, termasuk instalasi, IP forwarding, persetujuan rute di konsol admin, serta perbaikan DNS dan IPv6.
Apa yang dilakukan exit node Tailscale
Exit node Tailscale adalah mesin di tailnet Anda yang membawa seluruh trafik Internet dari perangkat lain. VPS (virtual private server) cocok digunakan karena memiliki alamat publik tetap dan tetap online. Penyiapannya terdiri dari lima langkah: instal Tailscale di server, iklankan exit node, aktifkan IP forwarding, setujui route di admin console, lalu pilih node tersebut di laptop. Langkah keempat dilakukan dengan mengaktifkan toggle pada halaman web, bukan dengan menjalankan perintah. Pada langkah inilah sebagian besar pengguna mengalami hambatan.
Setelah aktif, laptop mengenkripsi setiap paket dan mengirimkannya ke VPS. VPS menerapkan source NAT (network address translation), lalu meneruskan paket menggunakan alamat IP publiknya sendiri. Situs web melihat VPS. Wi-Fi kafe hanya melihat satu aliran UDP terenkripsi menuju VPS dan tidak melihat trafik lainnya. Tanpa exit node, Tailscale hanya membawa trafik antarperangkat Anda sendiri. Setiap situs web tetap melihat alamat asli Anda. Perbedaan inilah yang menentukan apakah Tailscale dapat disebut VPN.
Tailscale menggunakan WireGuard untuk jalur data, ditambah coordination server yang mendistribusikan key dan membantu dua mesin menemukan satu sama lain melalui NAT. Coordination server tersebut membuat Anda tidak perlu menyalin key pada langkah-langkah di bawah. Untuk penjelasan trade-off secara lengkap, baca perbandingan Tailscale dan WireGuard biasa. Jika Anda ingin mengelola sendiri setiap bagian tunnel, gunakan VPN WireGuard biasa yang di-host sendiri pada VPS.
Langkah-langkah di bawah mengasumsikan Tailscale sudah berjalan di laptop Anda dan kedua mesin masuk ke tailnet yang sama. Tailnet adalah jaringan Tailscale privat Anda. Kecuali admin menonaktifkan IPv4 untuk jaringan tersebut, setiap perangkat di dalamnya memperoleh alamat stabil di 100.64.0.0/10.
Instal Tailscale pada VPS
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale upSkrip instalasi memilih repositori paket untuk distribusi Anda lalu menginstal daemon tailscaled. Setelah itu, tailscale up menampilkan URL autentikasi. Buka URL tersebut di browser dan masuk menggunakan akun yang sama dengan yang digunakan laptop Anda, karena VPS yang masuk ke tailnet berbeda sama sekali tidak dapat melayani laptop Anda.
tailscale status
tailscale ip -4tailscale status kini seharusnya menampilkan kedua mesin. tailscale ip -4 menampilkan alamat tailnet VPS, yang nantinya Anda berikan kepada klien.
Tailscale memerlukan perangkat TUN untuk membangun tunnel. Pada VPS KVM, perangkat tersebut tersedia. Pada paket yang menggunakan virtualisasi berbasis container dan berbagi kernel host, /dev/net/tun terkadang tidak tersedia sehingga tailscaled tidak dapat membuat antarmuka tailscale0. Jalankan ls -l /dev/net/tun sebelum melanjutkan.
Aktifkan IP forwarding, atau VPS akan membuang semua paket
Mesin Linux membuang paket apa pun yang tidak ditujukan kepadanya, karena net.ipv4.ip_forward secara default bernilai 0. Exit node akan menerima trafik Anda, mendekripsinya, lalu membuangnya. Tulis pengaturan ini ke file agar tetap berlaku setelah reboot.
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 menambahkan isi, sehingga menjalankan baris ini untuk kedua kalinya akan menulis kedua pengaturan dua kali. Hasilnya tetap berfungsi, tetapi cat /etc/sysctl.d/99-tailscale.conf akan terlihat aneh. Konfirmasikan nilai yang sedang aktif, bukan hanya mengandalkan file:
sysctl net.ipv4.ip_forwardPerintah tersebut harus mencetak net.ipv4.ip_forward = 1. Jika langkah ini dilewati dan Anda menggunakan tailscale up --advertise-exit-node, client akan memberi tahu Anda:
Warning: IP forwarding is disabled, subnet routing/exit nodes will not work.tailscale set --advertise-exit-node tidak menjalankan pemeriksaan tersebut, sehingga tidak adanya output dari set bukan bukti bahwa forwarding aktif. Baca sendiri nilai sysctl tersebut.
Anda tidak perlu menulis aturan masquerade secara manual. tailscaled memasang chain firewall-nya sendiri, yang bernama ts-input, ts-forward, dan ts-postrouting. Aturan NAT untuk trafik exit node berada di ts-postrouting. Tampilkan aturan tersebut dengan sudo iptables-save | grep ts-, atau gunakan sudo nft list ruleset pada mesin yang memakai nftables.
Iklankan VPS sebagai exit node
sudo tailscale set --advertise-exit-nodetailscale set mengubah satu preferensi dan membiarkan preferensi lainnya tetap. tailscale up --advertise-exit-node juga mengiklankan node, tetapi memiliki efek samping: up menganggap flag pada baris perintahnya sebagai seluruh kumpulan pengaturan non-default. Akibatnya, sudo tailscale up tanpa argumen berikutnya gagal dijalankan dan menampilkan
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:Gunakan set untuk perubahan berikutnya agar pesan tersebut tidak muncul.
Pengiklanan merupakan penawaran. VPS kini memberi tahu server koordinasi bahwa VPS tersebut bersedia menjadi exit node. Belum ada client yang dapat menggunakannya.
Setujui exit node Tailscale di konsol admin
Ini adalah langkah yang tidak memiliki perintah. Buka halaman Machines di konsol admin, cari VPS tersebut, buka menu tiga titik di ujung barisnya, pilih Edit route settings, lalu aktifkan Use as exit node.
Sebelum opsi tersebut diaktifkan, control plane menyimpan tawaran itu dan tidak memberikannya kepada siapa pun. tailscale exit-node list di laptop Anda tidak menampilkan apa pun, dan trafik Anda tetap menggunakan rute normal. Tidak ada pesan error pada kedua mesin. Exit node tersebut tidak pernah muncul.
Anda dapat menyetujui exit node secara otomatis dengan menambahkan entri ke file kebijakan tailnet:
"autoApprovers": {
"exitNode": ["tag:exit"],
}Perangkat yang diaktifkan dengan --advertise-tags=tag:exit akan disetujui secara otomatis, selama tag:exit ditetapkan di bawah tagOwners dalam file kebijakan yang sama. Pemberian tag mengubah kepemilikan: perangkat bertag menjadi milik tailnet, bukan akun pengguna Anda, dan aturan akses yang berlaku untuk perangkat tersebut ikut berubah. Untuk satu VPS, opsi tersebut lebih sederhana.
Pilih exit node pada laptop Anda
Pada klien Linux:
tailscale exit-node list
sudo tailscale set --exit-node=vps.your-tailnet.ts.netexit-node list menampilkan exit node yang disetujui di tailnet Anda beserta alamatnya. Daftar kosong berarti proses persetujuan belum dilakukan. Pada macOS, Windows, iOS, dan Android, pilihan yang sama tersedia sebagai item menu di bawah Exit Node pada aplikasi Tailscale.
Verifikasi dari klien, bukan dari server:
curl -4 https://ifconfig.meJalankan perintah ini satu kali sebelum memilih exit node dan satu kali setelahnya. Alamat tersebut harus berubah dari alamat lokal Anda menjadi IP publik VPS. Untuk berhenti menggunakan exit node:
sudo tailscale set --exit-node=Ada satu flag lain yang penting sejak hari pertama. Saat exit node dipilih, klien mengirimkan semua trafik melalui tunnel, termasuk paket yang ditujukan ke 192.168.1.50, sehingga printer dan penyimpanan jaringan Anda tidak lagi merespons. Pertahankan jaringan lokal pada rute lokal:
sudo tailscale set --exit-node=<name> --exit-node-allow-lan-access=trueMengapa DNS Anda berubah saat exit node aktif
Secara default, perangkat yang menggunakan exit node juga menggunakan exit node tersebut sebagai resolver DNS (domain name system) untuk setiap domain. Konfigurasi ini menggantikan nameserver global dan split DNS yang dikonfigurasi untuk tailnet Anda. Perilaku ini disengaja. Jika kueri tetap dikirim ke resolver jaringan lokal, router kafe masih dapat melihat nama setiap situs yang Anda kunjungi, sementara trafiknya sendiri bersifat privat. Nama dan paket seharusnya keluar dari tempat yang sama.
Salah satu dampaknya dirasakan oleh pengguna resolver internal: nameserver tailnet yang Anda andalkan berhenti digunakan saat exit node aktif. Aktifkan Use with exit node untuk nameserver tersebut pada halaman DNS di konsol admin agar nameserver itu digunakan kembali.
Nama MagicDNS tetap berfungsi karena klien Tailscale menjawabnya secara lokal di 100.100.100.100 sebelum apa pun mencapai exit node. Periksa dengan dig @100.100.100.100 your-vps.your-tailnet.ts.net, atau pada klien systemd-resolved dengan resolvectl status, tempat antarmuka Tailscale mencantumkan 100.100.100.100 sebagai server DNS-nya.
Jika Anda menonaktifkan penanganan DNS Tailscale dengan --accept-dns=false, klien tetap menggunakan resolver yang diperolehnya dari jaringan lokal. Trafik ditunnelkan, tetapi kuerinya tidak, sehingga ini adalah kebocoran DNS yang sama yang memengaruhi tunnel WireGuard yang dibuat secara manual. Biarkan --accept-dns tanpa perubahan kecuali Anda memiliki alasan khusus untuk mengubahnya.
IPv6 melalui exit node
Exit node mengiklankan kedua rute default, 0.0.0.0/0 dan ::/0. Jika VPS tidak memiliki jalur IPv6 yang berfungsi ke Internet, paket IPv6 tiba melalui tunnel lalu berhenti di sana. Uji pada VPS sebelum mengandalkannya:
ip -6 addr show
curl -6 https://ifconfig.mePermintaan yang gagal terhubung berarti VPS tidak memiliki jalur IPv6 keluar yang berfungsi. Jika curl melaporkan "Could not resolve host", masalahnya adalah resolusi nama, bukan IPv6. Perbaiki DNS pada VPS lalu jalankan kembali pengujian. Situs dual-stack biasanya tetap dapat dimuat karena klien yang menerapkan Happy Eyeballs, termasuk curl, memulai percobaan IPv4 secara paralel jika percobaan IPv6 belum terhubung setelah menunggu sebentar. Klien menggunakan koneksi yang berhasil lebih dahulu. Secara default, curl menunggu 200 milliseconds, sehingga waktu tunggu tersebut menambah latensi pada koneksi baru, bukan menghasilkan error. Tujuan yang hanya mendukung IPv6 tetap tidak dapat dijangkau.
Bagian lainnya adalah forwarding. net.ipv4.ip_forward = 1 dengan net.ipv6.conf.all.forwarding tetap bernilai 0 menghasilkan jalur IPv4 yang berfungsi, tetapi IPv6 menjadi black hole. Bagi pengguna, kondisi ini terlihat sebagai "beberapa situs lambat", bukan sebagai error yang mudah dicari. Kedua baris tersebut harus ditambahkan ke file sysctl.
Haruskah VPS juga mengiklankan rute subnet?
Exit node membawa seluruh trafik Internet. Rute subnet membawa satu rentang privat yang berada di belakang mesin yang mengiklankannya. Keduanya merupakan fitur terpisah dengan persetujuan terpisah, dan satu mesin dapat menjalankan keduanya. Keduanya tidak mengekspos service yang berjalan pada VPS itu sendiri. Jadi, jika yang sebenarnya Anda inginkan adalah URL HTTPS untuk aplikasi pada server tersebut, gunakan fitur serve dan funnel.
sudo tailscale set --advertise-routes=10.0.0.0/24Iklankan subnet jika VPS berbagi jaringan privat dengan server lain yang ingin Anda akses menggunakan alamat privatnya. Setujui rute tersebut pada panel Edit route settings yang sama, melalui toggle tersendiri. Klien Linux akan mengabaikan rute yang diiklankan hingga Anda meneruskan --accept-routes. Ini merupakan salah satu perbedaan yang dibahas secara lengkap dalam panduan subnet router.
Pilih rentangnya dengan cermat. Setelah rute disetujui, laptop yang menerimanya (Windows, macOS, iOS, dan Android melakukannya secara default; Linux setelah --accept-routes) dapat mengirim trafik untuk rentang tersebut ke dalam tunnel. Jika Anda menyetujui 192.168.1.0/24 dari VPS, lalu laptop pada jaringan rumah menggunakan rentang yang sama, alamat tersebut dapat dialihkan ke tunnel. Akibatnya, perangkat di meja Anda tidak dapat berkomunikasi. Gunakan rentang yang Anda pilih sendiri, bukan rentang yang dipilihkan oleh router rumah Anda.
Jadikan exit node lebih cepat dengan penerusan UDP GRO
Tailscale 1.54 dan versi setelahnya, pada kernel Linux 6.2 atau versi setelahnya, dapat menggunakan receive offload untuk meningkatkan throughput trafik yang diteruskan. GRO (generic receive offload) menggabungkan paket masuk sebelum kernel memprosesnya satu per satu. Per Oktober 2026, langkah ini masih harus dilakukan secara manual pada exit node.
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 melaporkan interface yang benar-benar terhubung ke Internet, sehingga Anda tidak perlu menebak antara eth0, ens3, dan enp1s0. Konfirmasikan dengan ethtool -k $NETDEV | grep udp-gro-forwarding, yang sekarang seharusnya menampilkan on. GRO hanya membantu jalur yang kondisinya sudah baik. Jika exit node masih lambat setelahnya, ukur jalurnya secara langsung dengan cara yang sama seperti saat mengukur tunnel WireGuard biasa yang lebih lambat daripada link di bawahnya.
Pengaturan ini hilang setelah reboot. Pada sistem yang menjalankan networkd-dispatcher, buat pengaturan tersebut diterapkan secara otomatis:
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-tailscalePeriksa terlebih dahulu apakah /etc/networkd-dispatcher/routable.d/ ada. Jika tidak ada, mesin tersebut tidak menjalankan networkd-dispatcher. Unit systemd kecil yang menjalankan baris ethtool saat boot dapat melakukan hal yang sama.
Makna kebijakan penggunaan yang dapat diterima dari provider Anda untuk trafik keluar
Setiap paket yang dikirim client melalui exit node keluar menggunakan alamat IP publik VPS, sehingga trafik tersebut dikaitkan dengan akun Anda. Laporan penyalahgunaan akan masuk ke inbox Anda, misalnya pemberitahuan pelanggaran hak cipta atau keluhan pemindaian port. Baca AUP (acceptable use policy) provider Anda sebelum merutekan trafik rumah tangga atau tim melalui satu server. Jangan membuka exit node untuk orang yang tidak dapat Anda pertanggungjawabkan.
Bandwidth dihitung satu kali saat trafik keluar. Setiap byte yang melewati exit node melintasi VPS dua kali: masuk dari satu sisi dan keluar dari sisi lainnya. Pada sebagian besar paket VPS, hanya trafik keluar yang dihitung. Per Oktober 2026, SSD Nodes mencantumkan kuota setiap paket KVM sebagai transfer outbound, mulai dari 4TB hingga 48TB per bulan. Dokumentasi Vultr menyatakan bahwa trafik inbound tidak dihitung. Untuk download, bagian yang dihitung adalah perjalanan dari VPS melalui tunnel ke laptop Anda. Untuk upload, bagian yang dihitung adalah perjalanan dari VPS ke internet. Dalam kedua kasus, semua trafik yang Anda rutekan melalui exit node mengurangi kuota satu kali. Streaming video melalui exit node dapat menggunakan kuota lebih besar dari perkiraan. Periksa paket Anda sendiri, karena host yang menghitung kedua arah akan menghitung streaming tersebut dua kali.
Rentang alamat datacenter juga memiliki reputasi tertentu. Beberapa situs menampilkan CAPTCHA lebih sering untuk alamat tersebut, dan beberapa layanan streaming menolaknya sepenuhnya. Tidak ada konfigurasi yang dapat mengubah hal itu karena kondisi tersebut merupakan karakteristik address block yang dimiliki provider Anda.
Mengapa trafik tetap keluar melalui koneksi lokal Anda
Exit node sudah diiklankan, tetapi belum disetujui. tailscale exit-node list pada client tidak menampilkan apa pun, dan tidak ada mesin yang mencatat error. Buka halaman Machines, lalu aktifkan Use as exit node.
Client belum memilihnya. Persetujuan membuat node tersedia untuk tailnet. Pemilihan node merupakan tindakan terpisah pada setiap perangkat. Jalankan kembali sudo tailscale set --exit-node=<name>, lalu periksa curl -4 https://ifconfig.me sekali lagi.
Forwarding dinonaktifkan. Gejalanya spesifik: tailscale ping <vps> berhasil, tunnel jelas sudah aktif, tetapi setiap alamat eksternal mengalami timeout. sysctl net.ipv4.ip_forward menampilkan nilai 0. Perbaiki file sysctl, lalu jalankan sudo sysctl -p /etc/sysctl.d/99-tailscale.conf.
Firewall menjatuhkan paket yang diteruskan. tailscaled membuat chain ts-forward sendiri, dan pada VPS yang bersih hal itu sudah cukup. Server yang sudah menjalankan ufw atau Docker dapat memiliki kebijakan FORWARD DROP, dengan rules yang ditempatkan sebelum rules milik Tailscale. Jangan menebak penyebabnya: jalankan sudo iptables -L FORWARD -n -v saat client mencoba memuat halaman, lalu pantau counter mana yang berubah. Pada server yang menggunakan ufw, perbaikan yang biasanya diperlukan adalah DEFAULT_FORWARD_POLICY="ACCEPT" dalam /etc/default/ufw, lalu sudo ufw reload. Periksa juga network firewall milik provider pada control panel karena firewall tersebut merupakan kontrol terpisah dari semua firewall yang berjalan di server.
Koneksi berfungsi, tetapi lambat. Jalankan tailscale netcheck pada kedua mesin. Jika hasilnya menunjukkan UDP diblokir, kedua perangkat tidak dapat membuat jalur langsung dan akan beralih ke relay DERP, yang menambah latensi pada setiap koneksi. Mengizinkan UDP masuk pada port 41641 ke VPS melalui network firewall provider biasanya memulihkan jalur langsung.
Kapan perlu meninggalkan coordination server Tailscale
Semua hal di atas bergantung pada coordination server yang di-host Tailscale untuk pertukaran key dan persetujuan yang Anda klik. Trafik Anda berjalan langsung dari laptop ke VPS, atau melalui salah satu relay DERP Tailscale jika jalur langsung tidak dapat dibuat. Coordination server tidak pernah membawa trafik tersebut, tetapi server ini menentukan siapa yang boleh bergabung ke tailnet dan perangkat mana yang dapat dijangkau oleh setiap perangkat. Harga jarang menjadi alasan untuk berpindah, karena paket gratis mencakup enam pengguna dengan perangkat pribadi tanpa batas, jadi pertimbangkan ketergantungannya, bukan biayanya. Pengguna ketujuh menjadi titik perubahan. Karena Tailscale mengenakan biaya berdasarkan pengguna, bukan perangkat, hitung berapa biaya sebenarnya untuk rumah tangga atau tim beranggotakan lima orang sebelum mengambil keputusan berdasarkan biaya. Penilaian yang jujur mengharuskan Anda memahami apa saja yang sebenarnya dapat dijangkau oleh coordination server yang telah dibobol atau akun identitas yang dicuri. Hal ini dijelaskan dalam trust model Tailscale. Jika ketergantungan tersebut ingin Anda hilangkan, jalankan Headscale sebagai control server Tailscale milik Anda sendiri dan arahkan kedua client ke server tersebut. Langkah exit node selanjutnya tetap sama. Persetujuan rute dilakukan melalui command line Headscale, bukan console yang di-host. Headscale menggantikan control plane, tetapi Anda tetap menggunakan client Tailscale. Jika Anda ingin menjalankan seluruh stack sendiri, NetBird menyediakan coordination server dan client sendiri yang dapat Anda host pada satu VPS.
FAQ
Mengapa traffic saya masih menggunakan koneksi lokal setelah memilih exit node?
Ada dua penyebab umum. Exit node telah diiklankan, tetapi belum disetujui: buka halaman Machines di konsol admin, cari VPS, pilih Edit route settings, lalu aktifkan Use as exit node. Persetujuan dilakukan melalui toggle di konsol. Tidak ada command di server yang dapat melakukan persetujuan tersebut. Penyebab kedua berbeda: IP forwarding nonaktif, sehingga tunnel aktif, tailscale ping ke VPS berhasil, tetapi setiap alamat eksternal mengalami timeout. Periksa dengan sysctl net.ipv4.ip_forward, yang harus menampilkan 1.
Apakah saya harus menyetujui exit node secara manual setiap kali?
Toggle tersebut hanya perlu diaktifkan satu kali untuk setiap machine. Jika Anda sering membangun ulang VPS, tambahkan blok autoApprovers ke file kebijakan tailnet yang berisi "exitNode": ["tag:exit"], tentukan tag:exit di bawah tagOwners, lalu aktifkan node dengan --advertise-tags=tag:exit. Perangkat bertag dimiliki oleh tailnet, bukan oleh akun pengguna Anda. Karena itu, aturan akses yang berlaku untuk perangkat tersebut juga berubah.
Server DNS mana yang digunakan laptop saya saat exit node aktif?
Exit node itu sendiri. Perangkat yang menggunakan exit node mengirimkan semua kueri DNS ke sana. Hal ini mengesampingkan nameserver DNS global dan split DNS yang ditetapkan untuk tailnet. Jaringan lokal tidak dapat melihat nama yang Anda cari. Untuk tetap menggunakan salah satu nameserver tailnet, aktifkan Use with exit node untuk nameserver tersebut pada halaman DNS di konsol admin. Nama MagicDNS tetap dapat di-resolve karena client Tailscale menjawabnya secara lokal pada 100.100.100.100.
Dapatkah satu VPS menjadi exit node dan subnet router secara bersamaan?
Ya. sudo tailscale set --advertise-exit-node dan sudo tailscale set --advertise-routes=10.0.0.0/24 bersifat independen. Masing-masing memiliki toggle persetujuan sendiri di bawah Edit route settings. IP forwarding harus diaktifkan pada VPS untuk keduanya. Hindari mengiklankan range yang sama dengan jaringan rumah laptop Anda. Setelah route tersebut disetujui dan laptop menerimanya, route itu dapat mengambil alih alamat tersebut dari jaringan lokal. Akibatnya, perangkat lokal Anda tidak dapat dijangkau.
Apakah exit node menyembunyikan traffic saya dari provider VPS?
Tidak. Tunnel berakhir di VPS. Karena itu, traffic meninggalkan server dalam bentuk yang diharapkan oleh tujuan. Provider Anda dapat membawanya dalam bentuk plaintext jika situs tujuan sendiri tidak menggunakan enkripsi. Exit node memindahkan titik tempat traffic Anda terhubung ke Internet, dari jaringan tempat Anda berada ke server yang Anda sewa. Exit node menyembunyikan aktivitas browsing Anda dari Wi-Fi kafe dan ISP rumah. Namun, aktivitas browsing yang sama terlihat oleh provider VPS Anda, beserta nama akun Anda.