Node keluar ZeroTier tidak berfungsi? Periksa rute, NAT, dan klien
Rute 0.0.0.0/0 di klien bukan berarti keluar. Node harus meneruskan dan menerjemahkan, jaringan harus mengumumkan rute, dan klien harus menerimanya.
Tabel rute menampilkan rute default melalui antarmuka ZeroTier, jaringan melaporkan online, dan peramban tetap keluar dari alamat ISP lokal. Kombinasi itu umum dan bukan kesalahan klien. Rute default hanya memberi tahu ke mana paket harus pergi; ada yang harus meneruskan dan menerjemahkannya di ujung lain. Tiga bagian terpisah harus benar sebelum node keluar berfungsi.
Rutenya ada tetapi tidak ada yang keluar
Periksa dulu tabel rute klien. Baris seperti default via 10.147.20.5 dev zt0 membuktikan rute terpasang, bukan bahwa tujuan akan menerima lalu lintas. Lompatan berikutnya harus berupa anggota yang bersedia dan mampu meneruskannya.
Jika permintaan yang sama masih keluar melalui antarmuka fisik, klien tidak memasang rute, atau memasangnya dengan metrik yang kalah dari rute default lokal. Jika permintaan menghilang setelah rute dipasang, anggota keluar menerima paket dan gagal meneruskan atau menerjemahkannya. Klien yang mempertahankan rute default fisik tidak mengirim satu paket pun ke keluar.
Perbedaan itu menentukan di mana harus bekerja. Membandingkan alamat publik sebelum dan sesudah perubahan memisahkan rute yang tidak pernah dipakai dari rute yang dipakai lalu dibuang, dan hanya perlu satu perintah alih-alih meninjau seluruh konfigurasi. Lakukan perbandingan sebelum mengubah hal lain, agar kedua hasil berasal dari keadaan awal yang sama.
Tiga bagian yang semuanya harus benar
Keluar adalah rantai, dan mata rantai terlemah menentukan gejalanya. Tabel di bawah mencantumkan mata rantai sesuai urutan kegagalan biasanya.
| Part | Where it lives | What a failure looks like |
|---|---|---|
| Forwarding and NAT | Exit node kernel and firewall | Traffic arrives, no reply |
| Managed default route | ZeroTier network controller | No default via the tunnel on the member |
| Client acceptance | Member's per-network setting | Route offered but not installed |
| DNS behavior | Client resolver configuration | Pages fail by name, IP works |
Baris pertama adalah yang disembunyikan oleh nama opsi. Anggota menjadi keluar hanya ketika kernelnya meneruskan paket antara antarmuka ZeroTier dan antarmuka yang menghadap internet, dan ketika jalur balasan diterjemahkan kembali ke terowongan. Tanpa penerusan itu, anggota adalah rekan, bukan gerbang.
Baris pengendali adalah otorisasi, bukan konfigurasi. Mengumumkan 0.0.0.0/0 melalui anggota memberi tahu setiap klien di mana keluar berada; itu tidak membuat anggota tersebut mampu membawa lalu lintas. Itu juga tidak memverifikasi bahwa anggota punya jalur yang berfungsi ke internet. Dokumentasi node keluar ZeroTier membahas pemisahan yang sama antara node, rute, dan klien.
Konfigurasikan node keluar untuk meneruskan dan menerjemahkan
Aktifkan penerusan IPv4 secara permanen, lalu tambahkan NAT sumber untuk lalu lintas yang meninggalkan antarmuka WAN. Aturan filter harus mengizinkan aliran yang diteruskan di kedua arah, karena penerusan dan penerjemahan terpisah dari izin:
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 ACCEPTGanti zt0 dan eth0 dengan nama pada host; aturan yang disimpan untuk antarmuka contoh tidak mengikuti paket pada antarmuka nyata. Jadikan perubahan permanen melalui pengelola firewall yang memiliki aturan tersebut, karena perintah di shell interaktif hilang saat boot berikutnya.
Jika host menjalankan pengelola firewall seperti UFW atau firewalld, tambahkan aturan melalui pengelola itu alih-alih menumpuk baris iptables di sampingnya. Dua pemilik yang menyunting rantai yang sama menghasilkan kebijakan yang bergantung pada urutan boot. Urutan penting saat pengelola membuat rantainya sendiri. Uji dari klien setelah memuat ulang pengelola, bukan sebelumnya.
Umumkan rute dan terima di klien
Di pengendali jaringan, tambahkan rute terkelola untuk 0.0.0.0/0 yang lompatan berikutnya adalah alamat ZeroTier anggota keluar. Lalu, pada anggota yang seharusnya memakainya, izinkan penimpaan untuk jaringan itu. Izin itu lokal: tidak mengonfigurasi ulang anggota lain dan tidak mengubah pengendali.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1Perintah terakhir seharusnya melaporkan antarmuka ZeroTier dan alamat anggota keluar. Jika masih melaporkan antarmuka fisik, rutenya hilang atau rute default pesaing punya metrik lebih baik.
Batasi pengaturan pada jaringan yang membutuhkannya. Mengaktifkan penerimaan rute default secara global, atau pada jaringan yang seharusnya hanya menyediakan subnet privat, mengirim lalu lintas melalui keluar yang tidak pernah dirancang untuk itu.
Verifikasi keluar dan periksa keluarga alamat lain
Minta alamat publik dari layanan yang melaporkan sumbernya, dan bandingkan dengan alamat WAN node keluar. Lalu muat situs berdasarkan nama untuk memastikan DNS masih resolve, dan uji satu aplikasi penting, bukan hanya peramban.
Klien dual-stack dapat terus memakai jalur IPv6 aslinya sementara IPv4 keluar melalui ZeroTier. Jika tujuannya menyembunyikan atau mengendalikan semua lalu lintas, rute ::/0 terpisah dan penerusan IPv6 di keluar diperlukan, dan uji IPv4 tidak mengatakan apa pun tentang itu.
Penyaringan jalur terbalik Linux juga dapat membuang lalu lintas keluar yang sah di klien. ZeroTier mendokumentasikan pertimbangan rp_filter untuk anggota yang berpartisipasi; ubah pengaturan itu dengan sengaja dan hanya setelah rute dan NAT terkonfirmasi, bukan sebagai eksperimen pertama.
Jika kebutuhannya akses ke NAS atau satu subnet kantor, rute terkelola untuk prefiks itu adalah perubahan yang lebih kecil dan aman daripada keluar penuh. Mengirim semua penjelajahan melalui perangkat lain adalah keputusan berbeda dari menjangkau satu sumber daya privat, dan itu layak ditinjau terpisah.