Cloudflare Tunnel: Solusi Remote Server tanpa Perlu Public IP


Photo by Daniel Jerez on Unsplash

Mengelola server pribadi seringkali menjadi tantangan jika kita tidak memiliki alamat IP publik. Umumnya, penyedia layanan internet memberikan akses internet melalui jaringan Network Address Translation (NAT), yang berarti satu alamat IP publik digunakan oleh banyak pengguna secara bersamaan.

Cloudflare Tunnel adalah layanan dari Cloudflare yang memungkinkan pengguna menghubungkan aplikasi atau layanan yang berjalan di server lokal ke jaringan Cloudflare tanpa perlu membuka port di firewall atau mengonfigurasi NAT. Dengan Cloudflare Tunnel, Anda dapat membuat koneksi terenkripsi yang aman antara server lokal dan Cloudflare, yang kemudian akan meneruskan lalu lintas dari internet ke server lokal tersebut. Layanan ini awalnya dikenal sebagai Argo Tunnel dan diluncurkan pada Maret 2018. Kini, Cloudflare Tunnel menjadi bagian dari produk dalam jajaran Cloudflare Zero Trust.

Fitur utama dari Cloudflare Tunnel meliputi:

  1. Keamanan: Mengamankan koneksi dari server lokal ke jaringan Cloudflare dengan enkripsi.
  2. Simplicity: Memudahkan eksposur aplikasi ke internet tanpa harus memikirkan pengaturan firewall atau NAT.
  3. DDoS Protection: Mendapatkan perlindungan dari serangan Distributed Denial of Service (DDoS) yang disediakan oleh Cloudflare.
  4. Access Control: Integrasi dengan Cloudflare Access untuk mengontrol siapa yang dapat mengakses aplikasi yang diekspos.

Cloudflare Tunnel dapat anda gunakan secara gratis sebagai layanan dari Cloudflare Zero Trust. Layanan Zero Trust dapat kita gunakan semua secara gratis. Tentunya dengan beberapa batasan seperti logging dalam Zero Trust gratis hanya tersedia 24 jam ke belakang.

© Cloudflare

Yang Anda Butuhkan…

  1. Akun Cloudflare
  2. Domain yang telah anda daftarkan di Cloudflare. Layanan Cloudflare Zero Trust tidak mungkin dapat digunakan jika anda belum mendaftarkan website di Cloudflare.
  3. Perangkat yang anda ingin ‘remote’. Misal laptop atau server. Artikel ini akan secara khusus kontrol melalui protokol SSH.

Langkah-langkah

Pertama tentu saja masuk ke dashboard Cloudlare. (https://dash.cloudflare.com/login). Bila anda telah menambahkan website kurang lebih akan terlihat seperti ini.

Klik Daftar List Zero Trust. Ketika anda pertama kali membuka Zero Trust mungkin akan muncul beberapa pop up konfirmasi terlebih dahulu.

Buka di bagian Networks > Tunnels, lalu klik Add a Tunnel

Pilih tipe Cloudflared

Berikan nama lalu Save tunnel.

Pilih instruksi sesuai jenis perangkat yang anda gunakan. Dalam tutorial ini saya menggunakan OS Debian dengan arsitektur arm64-bit.

Buka terminal lalu masukkan perintah tersebut.

orangepi@orangepizero3:~$ curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64.deb && 

sudo dpkg -i cloudflared.deb && 

sudo cloudflared service install <cloudflare_token>
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
100 16.3M  100 16.3M    0     0   782k      0  0:00:21  0:00:21 --:--:--  883k
(Reading database ... 43969 files and directories currently installed.)
Preparing to unpack cloudflared.deb ...
Unpacking cloudflared (2024.5.0) over (2024.5.0) ...
Setting up cloudflared (2024.5.0) ...
Processing triggers for man-db (2.11.2-2) ...
2024-05-31T07:08:57Z INF Using Systemd
2024-05-31T07:09:01Z INF Linux service for cloudflared installed successfully

Klik Next tambahkan URL untuk SSH. Sesuaikan juga subdomain yang akan digunakan. Saya akan menggunakan subdomain access. Lalu pointing ke port SSH yaitu port 22 localhost. Sesuaikan bila port SSH menggunakan port yang lain.

Setelah Save Tunnel secara otomatis Cloudflare akan menambahkan records CNAME ke DNS dengan target domain cfargotunnel.com. Anda bisa mengecek di dashboard website > DNS > Records.

Bila cloudflared berhasil terpasang, maka akan terlihat status HEALTHY di dasbor Cloudflare Tunnel.

Sampai tahapan ini, kita telah berhasil melakukan koneksi ke Cloudflare melalui tunnel. Selanjutnya kita akan berfokus untuk bagaimana kita dapat melakukan koneksi melalui SSH ke server.

Klik list tunnel yang baru ditambahkan lalu klik Edit.

Sekarang berpindah ke Access > Aplications, klik Add an application.

Selanjutnya pilih Self Hosted. Kita akan memberikan akses ke infrastruktur kita dengan akses DNS dari Cloudflare. Jadi dengan domain yang kita sudah tambahkan ke Cloudflare kita dapat mengakses infrastruktur privat kita.

Tahapan selanjutnya kita akan melakukan konfigurasi untuk aplikasi dan jenis autentikasi layanan yang akan kita gunakan. Dari halaman ini beberapa hal yang penting kita konfigurasi yaitu durasi sesi, subdomain, dan identity providers. Untuk identity providers di tutorial ini saya memilih GitHub untuk kemudahan. Kita dapat mengakses aplikasi melalui autentikasi Github.

Selanjutnya untuk policy. Tambahkan email dari akun GitHub yang akan kita berikan akses. Kemudian Next.

Di halaman selanjutnya enable SSH Browser Rendering agar kita dapat mengakses SSH dari browser. Terakhir Add application.

Kita sudah hampir selesai disini. Selanjutnya buka domain yang kita tambahkan tadi di browser.

Konfirmasi untuk otorisasi GitHub.

Selanjutnya tinggal login ke SSH menggunakan username dan password/public key.

Browser akan menampilkan terminal SSH bila login berhasil. Sekarang kita bisa melakukan command ke server yang kita gunakan.

Bila anda tidak ingin menggunakan browser rendered terminal, anda bisa menggunakan cara ini.