Sebagian orang ingin menghosting sendiri berbagai hal di rumah (atau kantor kecil), baik itu web, email, maupun layanan lain. Biasanya koneksi ISP tidak akan memberikan IP publik yang statik tanpa membayar ekstra (biasanya mahal), jadi biasanya banyak trik digunakan supaya server rumah bisa diakses dari luar.
Sebagai catatan sebelum menggunakan trik yang ada di sini: pertimbangkan memakai VPS atau dedicated server. Membuat server di rumah punya banyak kelemahan jika Anda tidak mengerti apa yang Anda lakukan:
- Koneksi internet dan pasokan listirk di rumah biasanya kurang reliable dibanding data center
- Jika salah konfigurasi, hacker bisa lebih mudah masuk ke jaringan rumah
- Mengkonfigurasi semuanya sendiri cukup melelahkan/membuang banyak waktu
Dynamic DNS
Beberapa layanan tertentu seperti web cukup memakai dynamic DNS dan tidak perlu server eksternal tambahan. Artinya sebuah nama domain selalu diupdate IP-nya dengan IP terbaru saat ini. Untuk mengupdate ini bisa digunakan berbagai layanan Dynamic DNS dan server di rumah perlu diinstall software untuk mengupdate pemetaan nama ke IP.
Gambarannya kira-kira seperti ini:
Masalah dengan pendekatan ini adalah: akan ada jeda ketika ada update nama ke IP. Jeda ini karena DNS server akan mengcache informasi IP. TTL terkecil yang bisa diset biasanya 30 detik dan berbagai layanan DNS biasanya mengeset waktu minimumnya 1 menit. Jadi ketika ada pergantian IP, sekitar 1 menit kemudian kita baru bisa mengakses nama tersebut dengan IP baru.
Masalah lainnya adalah: layanan tertentu tidak akan berjalan dengan baik menggunakan pendekatan ini:
- ISP kadang memblok port tertentu (saat ini ISP saya di sini memblok incoming connection ke port 80 dan 443), tidak bisa menjalankan web server di rumah dengan port standar
- Andaikan tidak diblok, beberapa layanan seperti email tidak suka dengan IP dinamik (kadang IP masuk ke daftar spam list)
SSH Forwarding
Solusi ini dan berikutnya akan butuh sebuah server VPS. Kalau butuh VPS, kenapa tidak dihosting di VPS saja sekalian? ada beberapa alasan mengapa kita ingin hosting di rumah dengan menggunakan IP VPS:
- Mungkin VPS-nya kurang powerful (VPS termurah hanya sekitar 5 USD, tapi disk dan RAM-nya kurang besar)
- Kita ingin data tetap ada di rumah/kantor karena berbagai alasan. Alasannya bisa mengenai privasi, mengenai kemudahan update data/program, dsb.
Jika keperluannya hanya sederhana, SSH Forwarding bisa dilakukan. Saya pernah menjelaskan teknik ini di artikel saya yang lain mengenai SSH. Ini merupakan cara sederhana karena:
- Tidak perlu setup sesuatu yang kompleks di server (cukup akses SSH yang biasanya memang sudah aktif), hanya perlu mensetup konfigurasi agar Remote Port Forwarding diijinkan
- Tidak perlu setup sesuatu di client, cukup perlu SSH Client saja.
Satu VPS juga bisa dikoneksikan dengan beberapa server rumah. Mungkin server yang satu untuk web server, dan server yang lain untuk keperluan backup atau email. Atau bisa juga beberapa domain ditangani oleh satu VPS dan diforward (dengan apache/nginx atau yang lain) sesuai dengan domainnya.
Intinya adalah: dari server di rumah, kita melakukan SSH ke VPS. Koneksi ke port tertentu ke VPS akan diforward ke server di rumah. Kelemahan SSH forwarding adalah: dari sisi server di rumah semua incoming IP dianggap dari localhost.
Contohnya: pengunjung web dari Belanda, akan melakukan koneksi VPS server tersebut (misalnya di Singapura) lalu koneksinya di forward ke server rumah (misalnya di Indonesia). Di web server di Indonesia, terlihat koneksinya dilakukan dari IP localhost. Jadi bukan dari Belanda ataupun dari Singapura.
Masalah lain SSH adalah: koneksinya bisa putus. Di Linux program autossh bisa dipakai untuk menjaga agar koneksi tetap hidup. Di Windows kita bisa memakai SSH Client dari BitVise yang bisa melakukan auto reconnect.
VPN + DNAT
Ada banyak solusi VPN yang bisa dipakai. Salah satunya yang pernah saya bahas adalah dengan tinc. Bahkan VPN dengan SSH juga bisa dilakukan (dengan menggunakan tunnel device). Dengan VPN, sebuah VPS akan memiliki 2 network interface, satu yang menghadap publik, dan satu yang menghadap ke client VPN (dalam hal ini server di rumah).
Dengan menggunakan DNAT kita bisa mengarahkan agar paket yang diterima di server akan diforward ke client VPN. Perhatikan bahwa ada banyak cara melakukan forwarding ini. tergantung setting firewall dan cara forwardingnya, maka ada dua kemungkinan:
- Source IP koneksi bisa berasal dari IP VPN server publik (biasanya bukan ini yang diharapkan)
- Source IP koneksi bisa dari client yang melakukan koneksi ke VPS
Saat ini ada banyak jenis firewall, tergantung OS yang dipakai (iptables, nftables, ipfw, dsb), jadi saya tidak akan membahas detail settingnya, tapi hanya beberapa hal saja yang penting diperhatikan ketika mensetup ini:
- Pastikan IP forwarding diaktifkan di VPS
- Pastikan bahwa firewall rule paket dari IP publik berhasil diterima dan diteruskan ke VPN (bisa dicek dengan menggunakan
tcpdump -i INTERFACEVPN
) - Di sisi server rumah: pastikan koneksi yang datang memiliki source address yang benar
- Ketika server rumah membalas paket yang datang, pastikan koneksi harus lewat VPN lagi (jangan salah membalas langsung lewat IP rumah)
Penutup
Artikel ini tidak membahas detail tiap perintah dan setting yang diperlukan untuk mengimplementasikan masing-masing solusi. Silakan dicari lagi detailnya dengan berbagai kata kunci yang dipelajari di sini (misalnya: Dynamic DNS, Remote Port Forwarding, DNAT dsb). Artikel ini sekedar memberikan pemahaman saja, bukan tutorial.
Salah satu pertanyaan yang paling tidak saya sukai adalah mengenai jaringan komputer. Untuk bisa menjawab suatu pertanyaan, biasanya saya perlu bertanya banyak hal mengenai konfigurasi jaringan saat ini, software yang dipakai dsb. Menanyakan hal semacam ini butuh waktu yang biasanya sangat lama. Setelah itu ada masalah: versi kernel, versi software dsb. Belum lagi jika ada masalah ISP memblokir sesuatu. Semuanya ini bisa dicari sendiri di Internet.
Semoga informasi ini berguna, dan sekali lagi mohon jangan bertanya detail cara melakukan setup semuanya. Silakan digoogling sendiri detailnya.
Terimakasih pengertian garis besarnya, untuk pertanyaan detilnya saya cari di google dan saya menemukan ini, situs anda adalah bagian dari googling itu sendiri,.. wkwkwk bwcanda