Dokumen ini ditulis untuk audiens pengembang perangkat lunak. Untuk informasi tentang penggunaan ZeroTier, lihat: Situs Web, Situs Dokumentasi, dan Forum Diskusi.
ZeroTier adalah saklar Ethernet cerdas yang dapat diprogram untuk planet Bumi. Hal ini memungkinkan semua perangkat jaringan, VM, container, dan aplikasi untuk berkomunikasi seolah-olah semuanya berada di pusat data fisik atau wilayah cloud yang sama.
Hal ini dicapai dengan menggabungkan jaringan peer to peer yang dialamatkan secara kriptografis dan aman (disebut VL1) dengan lapisan emulasi Ethernet yang agak mirip dengan VXLAN (disebut VL2). Lapisan virtualisasi Ethernet VL2 kami mencakup fitur SDN perusahaan tingkat lanjut seperti aturan kontrol akses yang terperinci untuk segmentasi mikro jaringan dan pemantauan keamanan.
Semua lalu lintas ZeroTier dienkripsi secara end-to-end menggunakan kunci rahasia yang hanya Anda kendalikan. Sebagian besar arus lalu lintas bersifat peer to peer, meskipun kami menawarkan relai gratis (namun lambat) bagi pengguna yang tidak dapat membuat koneksi peer to peer.
Sasaran dan prinsip desain ZeroTier terinspirasi antara lain oleh makalah asli Google BeyondCorp dan Forum Jericho dengan gagasan "deperimeterisasi".
Kunjungi situs ZeroTier untuk informasi lebih lanjut dan paket biner siap pakai. Aplikasi untuk Android dan iOS tersedia gratis di Google Play dan Apple App Store.
ZeroTier dilisensikan di bawah BSL versi 1.1. Lihat LICENSE.txt dan halaman harga ZeroTier untuk detailnya. ZeroTier gratis untuk digunakan secara internal di bisnis dan institusi akademik dan untuk tujuan non-komersial. Jenis penggunaan komersial tertentu seperti membuat aplikasi dan perangkat sumber tertutup berdasarkan ZeroTier atau menawarkan pengontrol jaringan ZeroTier dan manajemen jaringan sebagai layanan SaaS memerlukan lisensi komersial.
Sejumlah kecil kode pihak ketiga juga disertakan dalam ZeroTier dan tidak tunduk pada lisensi BSL kami. Lihat AUTHORS.md untuk daftar kode pihak ketiga, di mana kode tersebut disertakan, dan lisensi yang berlaku padanya. Semua kode pihak ketiga di ZeroTier dilisensikan secara bebas (MIT, BSD, Apache, domain publik, dll.).
Segala sesuatu di dunia ZeroTier dikendalikan oleh dua jenis pengidentifikasi: alamat ZeroTier 40-bit/10-digit dan ID jaringan 64-bit/16-digit . Pengidentifikasi ini mudah dibedakan berdasarkan panjangnya. Alamat ZeroTier mengidentifikasi node atau "perangkat" (laptop, ponsel, server, VM, aplikasi, dll.) sedangkan ID jaringan mengidentifikasi jaringan Ethernet virtual yang dapat digabungkan dengan perangkat.
Alamat ZeroTier dapat dianggap sebagai nomor port pada saklar pintar Ethernet perusahaan besar yang mendukung VLAN. ID Jaringan adalah ID VLAN yang dapat ditetapkan ke port ini. Satu port dapat ditetapkan ke lebih dari satu VLAN.
Alamat ZeroTier terlihat seperti 8056c2e21c
dan ID jaringan terlihat seperti 8056c2e21c000001
. ID Jaringan terdiri dari alamat ZeroTier pengontrol utama jaringan tersebut dan ID 24-bit arbitrer yang mengidentifikasi jaringan pada pengontrol ini. Pengontrol jaringan secara kasar analog dengan pengontrol SDN dalam protokol SDN seperti OpenFlow, meskipun analogi antara VXLAN dan VL2 tidak boleh dibaca untuk menyiratkan bahwa protokol atau desainnya sama. Anda dapat menggunakan pengontrol yang dihosting SaaS kami yang nyaman dan murah di my.zerotier.com atau menjalankan pengontrol Anda sendiri jika Anda tidak keberatan mengotak-atik file konfigurasi JSON atau menulis skrip untuk melakukannya.
Jalur dasar berisi titik masuk utama layanan ZeroTier One ( one.cpp
), kode pengujian mandiri, makefile, dll.
artwork/
: ikon, logo, dll.attic/
: barang lama dan kode eksperimental yang ingin kami simpan sebagai referensi.controller/
: implementasi pengontrol jaringan referensi, yang dibuat dan disertakan secara default pada target pembuatan desktop dan server.debian/
: file untuk membuat paket Debian di Linux.doc/
: halaman manual dan dokumentasi lainnya.ext/
: perpustakaan pihak ketiga, binari yang kami kirimkan untuk kenyamanan pada beberapa platform (Mac dan Windows), dan file dukungan instalasi.include/
: menyertakan file untuk inti ZeroTier.java/
: pembungkus JNI yang digunakan dengan aplikasi seluler Android kami. (Keseluruhan aplikasi Android bukanlah open source namun mungkin akan dibuat demikian di masa mendatang.)node/
: inti switch Ethernet virtual ZeroTier, yang dirancang untuk sepenuhnya terpisah dari kode lainnya dan dapat dibangun sebagai pustaka OS-independen yang berdiri sendiri. Catatan untuk pengembang: jangan gunakan fitur C++11 di sini, karena kami ingin ini dibangun pada platform tertanam lama yang tidak memiliki dukungan C++11. C++11 dapat digunakan di tempat lain.osdep/
: kode untuk mendukung dan berintegrasi dengan OS, termasuk hal-hal khusus platform yang hanya dibuat untuk target tertentu.rule-compiler/
: Kompiler bahasa aturan JavaScript untuk mendefinisikan aturan tingkat jaringan.service/
: layanan ZeroTier One, yang membungkus inti ZeroTier dan menyediakan konektivitas seperti VPN ke jaringan virtual untuk desktop, laptop, server, VM, dan container.windows/
: File solusi Visual Studio, kode layanan Windows, dan UI aplikasi bilah tugas Windows.zeroidc/
: Implementasi OIDC yang digunakan oleh layanan ZeroTier untuk masuk ke jaringan yang mendukung SSO. (Bagian ini ditulis dalam Rust, dan Rust lainnya akan muncul di repositori ini di masa mendatang.) Silakan lakukan permintaan tarik dari cabang dev
.
Rilis dilakukan dengan menggabungkan dev
ke main
dan kemudian memberi tag dan melakukan build.
Untuk membangun di Mac dan Linux cukup ketik make
. Pada FreeBSD dan OpenBSD, gmake
(GNU make) diperlukan dan dapat diinstal dari paket atau port. Untuk Windows ada solusi Visual Studio di windows/
.
gmake
untuk membangun.binutils
diperlukan. Ketik pkg install binutils
untuk menginstal./dev/tap0
hingga /dev/tap3
).gmake
untuk membangun. Mengetik make selftest
akan membangun biner zerotier-selftest yang unitnya menguji berbagai internal dan melaporkan beberapa aspek lingkungan build. Merupakan ide bagus untuk mencobanya pada platform atau arsitektur baru.
Menjalankan zerotier-one dengan opsi -h
akan menunjukkan bantuan.
Di Linux dan BSD, jika Anda membuat dari sumber, Anda dapat memulai layanan dengan:
sudo ./zerotier-one -d
Di sebagian besar distribusi, macOS, dan Windows, penginstal akan memulai layanan dan mengaturnya untuk memulai saat boot.
Folder beranda untuk sistem Anda akan dibuat secara otomatis.
Layanan ini dikontrol melalui API JSON, yang secara default tersedia di 127.0.0.1:9993
. Ia juga mendengarkan pada 0.0.0.0:9993
yang hanya dapat digunakan allowManagementFrom
dikonfigurasi dengan benar di local.conf
. Kami menyertakan utilitas baris perintah zerotier-cli untuk membuat panggilan API untuk hal-hal standar seperti bergabung dan keluar dari jaringan. File authtoken.secret di folder home berisi token rahasia untuk mengakses API ini. Lihat service/README.md untuk dokumentasi API.
Di sinilah folder rumah berada (secara default) di setiap OS:
/var/lib/zerotier-one
/var/db/zerotier-one
/Library/Application Support/ZeroTier/One
ProgramDataZeroTierOne
(Itu adalah defaultnya. Folder dasar 'data aplikasi bersama' mungkin berbeda jika Windows diinstal dengan penetapan atau tata letak huruf drive yang tidak standar.)Bagi sebagian besar pengguna, ini berfungsi saja.
Jika Anda menjalankan firewall sistem lokal, sebaiknya tambahkan aturan yang mengizinkan zerotier. Jika Anda menginstal binari untuk Windows, ini akan dilakukan secara otomatis. Platform lain mungkin memerlukan pengeditan aturan firewall lokal secara manual bergantung pada konfigurasi Anda.
Lihat situs dokumentasi untuk informasi lebih lanjut.
Firewall Mac dapat ditemukan di bawah "Keamanan" di System Preferences. Linux memiliki beragam sistem dan alat konfigurasi firewall.
Pada CentOS, periksa /etc/sysconfig/iptables
untuk aturan IPTables. Untuk distribusi lain, lihat dokumentasi distribusi Anda. Anda juga harus memeriksa UI atau dokumentasi untuk aplikasi firewall pihak ketiga komersial seperti Little Snitch (Mac), McAfee Firewall Enterprise (Windows), dll. jika Anda menjalankan salah satunya. Beberapa lingkungan perusahaan mungkin memiliki perangkat lunak firewall yang dikelola secara terpusat, jadi Anda mungkin juga harus menghubungi TI.
Rekan ZeroTier One akan secara otomatis mencari lokasi satu sama lain dan berkomunikasi langsung melalui LAN kabel lokal jika port UDP 9993 masuk terbuka . Jika port tersebut difilter, mereka tidak akan dapat melihat paket pengumuman LAN satu sama lain. Jika Anda mengalami kinerja buruk antar perangkat di jaringan fisik yang sama, periksa pengaturan firewallnya. Tanpa lokasi otomatis LAN, rekan harus mencoba "loopback" traversal NAT, yang terkadang gagal dan mengharuskan setiap paket melintasi router eksternal Anda dua kali.
Pengguna yang menggunakan jenis firewall tertentu dan perangkat NAT "simetris" mungkin tidak dapat terhubung ke rekan eksternal secara langsung sama sekali. ZeroTier memiliki dukungan terbatas untuk prediksi port dan akan mencoba melintasi NAT simetris, namun hal ini tidak selalu berhasil. Jika konektivitas P2P gagal, Anda akan memantulkan paket UDP dari server relay kami sehingga mengakibatkan kinerja lebih lambat. Beberapa router NAT memiliki mode NAT yang dapat dikonfigurasi, dan menyetelnya ke "kerucut penuh" akan menghilangkan masalah ini. Jika Anda melakukan ini, Anda mungkin juga melihat peningkatan ajaib untuk hal-hal seperti telepon VoIP, Skype, BitTorrent, WebRTC, permainan tertentu, dll., karena semuanya menggunakan teknik traversal NAT yang serupa dengan kami.
Jika firewall antara Anda dan Internet memblokir lalu lintas UDP ZeroTier, Anda akan kembali ke terowongan TCP pilihan terakhir ke server root melalui port 443 (peniruan identitas https). Ini akan bekerja hampir di mana saja tetapi sangat lambat dibandingkan dengan UDP atau konektivitas peer to peer langsung.
Bantuan tambahan dapat ditemukan di basis pengetahuan kami.
Metrik Prometheus tersedia di titik akhir API /metrics
. Titik akhir ini dilindungi oleh kunci API yang disimpan di metricstoken.secret
untuk mencegah kebocoran informasi yang tidak diinginkan. Informasi yang dapat diperoleh dari metrik mencakup jaringan yang tergabung dan rekan yang diajak bicara oleh instance Anda.
Kontrol akses dilakukan melalui antarmuka kontrol ZeroTier itu sendiri dan metricstoken.secret
. Ini dapat dikirim sebagai token autentikasi pembawa, melalui bidang header HTTP X-ZT1-Auth
, atau ditambahkan ke URL sebagai ?auth=<token>
. Anda dapat melihat metrik saat ini melalui cURL
dengan perintah berikut:
// Linux
curl -H "X-ZT1-Auth: $(sudo cat /var/lib/zerotier-one/metricstoken.secret)" http://localhost:9993/metrics
// macOS
curl -H "X-ZT1-Auth: $(sudo cat /Library/Application Support/ZeroTier/One/metricstoken.secret)" http://localhost:9993/metrics
// Windows PowerShell (Admin)
Invoke-RestMethod -Headers @{'X-ZT1-Auth' = "$(Get-Content C:ProgramDataZeroTierOnemetricstoken.secret)"; } -Uri http://localhost:9993/metrics
Untuk mengonfigurasi pekerjaan scrape di Prometheus pada mesin yang menjalankan ZeroTier, tambahkan ini ke Prometheus scrape_config
Anda:
- job_name: zerotier-one
honor_labels: true
scrape_interval: 15s
metrics_path: /metrics
static_configs:
- targets:
- 127.0.0.1:9993
labels:
group: zerotier-one
node_id: $YOUR_10_CHARACTER_NODE_ID
authorization:
credentials: $YOUR_METRICS_TOKEN_SECRET
Jika tidak satu pun dari metode ini diinginkan, mungkin saja mendistribusikan metrik melalui Prometheus Proxy atau alat lainnya. Catatan: Kami belum mengujinya secara internal, namun mungkin akan berfungsi dengan konfigurasi yang benar.
Metrik juga tersedia pada disk di direktori kerja ZeroTier:
// Linux /var/lib/zerotier-one/metrics.prom
// macOS /Library/Application Support/ZeroTier/One/metrics.prom
//Windows C:ProgramDataZeroTierOnemetrics.prom
Nama Metrik | Label | Tipe Metrik | Keterangan |
---|---|---|---|
zt_packet | tipe_paket, arah | Menangkal | Jumlah jenis paket ZeroTier |
zt_packet_error | error_type, arah | Menangkal | Kesalahan paket ZeroTier |
zt_data | protokol, arah | Menangkal | jumlah byte yang telah dikirim atau diterima ZeroTier |
zt_num_networks | Mengukur | jumlah jaringan tempat instance ini bergabung | |
zt_network_multicast_groups_subscribed | network_id | Mengukur | jumlah jaringan grup multicast yang berlangganan |
zt_network_packets | network_id, arah | Menangkal | jumlah paket masuk/keluar per jaringan |
zt_peer_latency | node_id | Histogram | latensi rekan (ms) |
zt_peer_path_count | node_id, status | Mengukur | jumlah jalur untuk melakukan peer |
zt_peer_packets | node_id, arah | Menangkal | jumlah paket ke/dari rekan |
zt_peer_packet_errors | node_id | Menangkal | jumlah kesalahan paket masuk dari rekan |
Jika ada metrik lain yang ingin Anda lacak, tanyakan kepada kami di Masalah atau kirimkan Permintaan Tarik kepada kami!
Ada server file http statis yang cocok untuk menghosting Aplikasi Halaman Tunggal di http://localhost:9993/app/
Gunakan zerotier-cli info -j
untuk menemukan homeDir layanan zerotier-one Anda
cd $ZT_HOME
sudo mkdir -p app/app1
sudo mkdir -p app/appB
echo ' <html><meta charset=utf-8><title>appA</title><body><h1>hello world A ' | sudo tee app/appA/index.html
echo ' <html><meta charset=utf-8><title>app2</title><body><h1>hello world 2 ' | sudo tee app/app2/index.html
curl -sL http://localhost:9993/app/appA http://localhost:9993/app/app2
Kemudian kunjungi http://localhost:9993/app/app1/ dan http://localhost:9993/app/appB/
Permintaan ke jalur tidak ada mengembalikan root aplikasi index.html, seperti biasa untuk SPA. Jika mau, Anda dapat menulis beberapa javascript yang berkomunikasi dengan api layanan atau pengontrol.