02. Cloudflare Virtual Mesh
02. Cloudflare Virtual Mesh Enrollment
Cloudflare Virtual Mesh mengenkripsi semua traffic antar-server dalam infrastructure secara otomatis menggunakan Cloudflare One Client (WARP). Setiap server dalam mesh mendapatkan IP privat virtual dari range Carrier-Grade NAT (CGNAT) <CLOUDFLARE_MESH_SUBNET> yang diassign oleh Cloudflare, memungkinkan komunikasi encrypted end-to-end tanpa direct public IP exposure melalui Zero Trust tunnel.
2.1 Prasyarat
- Akses ke dashboard Cloudflare One (https://one.dash.cloudflare.com)
- Sudah melakukan baseline security setup (bagian 01)
- Token enrollment dari dashboard Cloudflare
Tentang CGNAT IP Space (<CLOUDFLARE_MESH_SUBNET>)
Range IP <CLOUDFLARE_MESH_SUBNET> adalah Carrier-Grade NAT (CGNAT) address space yang diperuntukkan khusus oleh Cloudflare untuk virtual IP addresses. IP addresses ini:
- Bukan IP publik: Virtual IP yang diassign oleh Cloudflare untuk setiap device running Cloudflare One Client (WARP)
- Machine-to-machine communication: Memfasilitasi komunikasi terenkripsi antar-device dalam infrastructure melalui Zero Trust network
- No direct internet exposure: Devices terhubung via secure outbound tunnel ke Cloudflare edge, bukan accepting inbound connections
- Unique per network: Setiap enrollment mendapat unique virtual IP dalam range ini
2.2 Instalasi Cloudflare WARP Client
Step 1: Setup Repository dan Install Paket
2.3 Memahami Virtual Mesh Architecture
Network Flow:
Setiap server:
- Menjalankan Cloudflare WARP client (cloudflare-warp service)
- Mendapat virtual IP dari CGNAT space (<CLOUDFLARE_MESH_IP_PATTERN>)
- Membuat outbound tunnel ke Cloudflare edge (bukan inbound listener)
- Dapat berkomunikasi dengan server lain via IP virtual tersebut
- Traffic dijamin encrypted end-to-end oleh Cloudflare infrastructure
2.4 Enroll Server ke Virtual Mesh
Step 1: Dapatkan Token Enrollment dari Dashboard
- Login ke https://one.dash.cloudflare.com
- Navigasi ke Access → Connectors (atau Network → Virtual Mesh tergantung UI versi)
- Klik Add connector atau Create new enrollment
- Cloudflare akan menampilkan enrollment command unik dengan token
Step 2: Jalankan Enrollment Command di Server
Token enrollment hanya valid untuk waktu tertentu. Copy dan jalankan command yang digenerate dari dashboard:
Catatan: Token berbeda untuk setiap server dan enrollment, jangan share token antar server.
Step 3: Verifikasi Enrollment Berhasil
2.5 Konfigurasi UFW untuk Mesh Network
Setelah enrollment berhasil, izinkan traffic dari mesh subnet:
2.6 Verifikasi Konektivitas Antar Server
Setelah semua server ter-enroll, verifikasi komunikasi melalui mesh:
2.7 Sistem Management & Monitoring
Melihat Status Service
Melihat Logs
Monitoring dari Dashboard
- Login ke https://one.dash.cloudflare.com
- Navigasi ke Access → Connectors
- Lihat status koneksi setiap server (Connected/Disconnected)
- Check last seen time untuk verifikasi health
2.8 Troubleshooting
| Issue | Solusi |
|---|---|
| Enrollment command tidak ditemukan di dashboard | Pastikan sudah navigate ke Access → Connectors dan memiliki permission yang tepat |
| Token expired saat enrollment | Refresh halaman dashboard untuk generate token baru, token biasanya valid 1 jam |
| Server tidak mendapat IP <CLOUDFLARE_MESH_IP_PATTERN> | Jalankan sudo warp-cli status dan check error messages, cek logs dengan sudo journalctl -u warp-svc |
| Koneksi ke server lain di mesh gagal | Verifikasi UFW rules sudah allow <CLOUDFLARE_MESH_SUBNET>, cek kedua server ter-enroll di dashboard, test dengan ping <CLOUDFLARE_MESH_IP_PATTERN> |
| Service warp-svc tidak jalan | Cek service: sudo systemctl status warp-svc, restart: sudo systemctl restart warp-svc |
| IP forwarding tidak persistent setelah reboot | Pastikan sudah edit /etc/sysctl.d/99-cloudflare.conf dan jalankan sudo sysctl -p |
| Connection drops atau timeout | Monitor with sudo warp-cli tunnel-health, check network latency, restart service jika perlu |
2.9 Best Practices
- Catat enrollment token: Simpan enrollment command di dokumentasi deployment untuk referensi, tapi jangan commit ke git/public
- Monitor enrollment status: Verifikasi di dashboard bahwa semua devices muncul dan connected, set up alerts untuk disconnected devices
- Automation: Untuk deployment multiple servers, automasi enrollment command generation via Cloudflare API atau script wrapper
- Keep client updated: Jalankan
sudo apt update && sudo apt upgrade -y cloudflare-warpsecara berkala - Network segregation: Meski mesh encrypted, tetap terapkan UFW rules yang ketat untuk defense-in-depth
- Backup credentials: Jika menggunakan automation, encrypt dan backup token di secure vault terpisah
- Test failover: Secara berkala test disconnect/reconnect untuk memastikan service resilience