Tailnet di mana setiap perangkat bisa menjangkau semua perangkat lain saja sudah berguna. Tiga tambahan berikut mengubahnya dari sekadar kumpulan tunnel menjadi sebuah jaringan sungguhan, dan ketiganya berbagi satu sifat yang sering menjebak orang: klien yang mengumumkan sebuah kapabilitas, tapi server yang harus menyetujuinya. Rute yang diumumkan tapi belum disetujui begitu saja dianggap tidak ada, secara senyap, dan gejalanya adalah Anda bisa ping router-nya tapi tidak ada apa pun di baliknya yang merespons.
Subnet router — menaruh seluruh LAN ke dalam tailnet. Satu mesin di jaringan rumah atau kantor mengumumkan rentang alamat jaringannya; setiap perangkat lain lalu bisa menjangkau printer, NAS, dan antarmuka manajemen di baliknya tanpa perlu memasang apa pun lagi di sana. Aktifkan dulu forwarding di kernel-nya, kalau tidak paket-paketnya akan berhenti begitu saja di router tanpa pesan error apa pun.
# On the machine that sits inside the LAN:
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-ts.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-ts.conf
sudo sysctl -p /etc/sysctl.d/99-ts.conf
sudo tailscale up --login-server https://vpn.example.com \
--advertise-routes=192.168.1.0/24 --accept-routes
# On the control server — approve it, or it does not exist.
# The subcommand moved between releases; check `hs nodes --help` first.
hs nodes list
hs nodes approve-routes --identifier 3 --routes 192.168.1.0/24
Exit node — mengirim semuanya keluar lewat VPS. Mekanisme yang sama dengan rute yang lebih lebar: perangkat yang mengumumkan dirinya sebagai exit node menawarkan diri untuk membawa seluruh koneksi internet perangkat lain. Di jaringan kafe atau hotel yang tidak tepercaya, itulah persis yang Anda butuhkan, dan ini adalah hal paling mendekati VPN pribadi di seluruh panduan ini.
# On the VPS that will do the exiting (forwarding must be on, as above):
sudo tailscale up --login-server https://vpn.example.com --advertise-exit-node
# Approve it on the control server, then on the laptop:
tailscale set --exit-node=100.64.0.1 --exit-node-allow-lan-access
tailscale set --exit-node= # turn it off again
Exit node bukan VPN komersial, dan jangan menjualnya ke diri sendiri seolah begitu. Alamatnya hanya milik Anda seorang dan sifatnya stabil — ini sangat efektif melawan Wi-Fi kafe, tapi tidak berguna melawan korelasi jangka panjang lintas situs; trade-off ini dijelaskan lengkap di panduan utama. Perlu dicatat juga, Anda bisa menjalankan exit node di VPS kedua yang lebih murah, sehingga server kontrol tetap bebas sepenuhnya dari trafik yang diteruskan.
Aturan akses — tuliskan sebelum orang kedua bergabung. Kebijakan default-nya adalah mengizinkan semuanya, yang benar untuk tailnet seorang diri dan langsung keliru begitu ada orang lain di dalamnya. Kebijakannya berupa dokumen HuJSON kecil: kelompok user, tag untuk mesin, dan daftar aturan yang menyatakan sumber mana boleh menjangkau tujuan mana di port mana. Arahkan konfigurasi ke file itu, simpan file-nya di version control, dan reload setiap selesai mengedit.
{
"groups": {
"group:admin": ["alice"],
"group:contractor":["bob"]
},
"tagOwners": {
"tag:server": ["group:admin"],
"tag:exit": ["group:admin"]
},
"acls": [
// Admins reach everything.
{ "action": "accept", "src": ["group:admin"], "dst": ["*:*"] },
// The contractor reaches one machine, on two ports, and nothing else.
{ "action": "accept", "src": ["group:contractor"],
"dst": ["tag:server:22,443"] }
],
"autoApprovers": {
"routes": { "192.168.1.0/24": ["tag:server"] },
"exitNode": ["tag:exit"]
}
}
Dua catatan soal file itu. Bahasa kebijakannya berasal dari Tailscale, dan Headscale mengimplementasikan sebagian besar darinya — dan terus bertambah — bukan seluruhnya, jadi periksa dokumentasi versi Anda sebelum mengandalkan aturan yang eksotis. Dan lokasi kebijakannya sendiri sudah berpindah: rilis lama menyebutkan sebuah path di konfigurasi tingkat atas, rilis baru mengelompokkannya di bawah bagian policy dengan mode yang juga bisa menyimpan aturannya di database. Keduanya terdokumentasi; yang penting adalah yang sesuai dengan versi yang Anda pin.
MagicDNS — nama pendek, dan resolver Anda sendiri di mana pun. Dengan MagicDNS aktif, setiap perangkat menjawab ke nama pendek di dalam suffix yang Anda pilih di langkah 02, jadi ssh nas berfungsi dari mana saja tanpa perlu hosts file. Bagian keduanya yang lebih menarik: server kontrol juga mendorong daftar nameserver ke setiap klien, yang berarti resolver yang Anda bangun di panduan resolver DNS privat kami bisa melayani ponsel Anda di jaringan seluler — dengan filtering, dengan cache, dan tanpa mencatat log apa pun — sambil tetap hanya mendengarkan di alamat tailnet yang sama sekali tidak bisa dijangkau dari internet.
dns:
magic_dns: true
base_domain: ts.example.com
override_local_dns: true # beat whatever DHCP handed the device
nameservers:
global:
- 100.64.0.5 # your resolver, on the tailnet