Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Setup Proxmox dengan 1 IP Public

Jaman sekarang, membuat server untuk cloud tidak lagi sulit. Cukup cari server nganggur, unduh Proxmox, kemudian instal.

Instalasinya pun tidak sulit, dia cuma menanyakan mau diberi IP berapa, password untuk user root, dan selesai sudah. Selanjutnya, server ini tinggal kita taruh di data center.

Dengan Proxmox ini, kita dapat membuat virtual machine (VM) sebanyak-banyaknya yang mampu ditangani oleh hardware servernya. Pembuatan VM ini dilakukan melalui antarmuka berbasis web, sehingga kita tidak perlu lagi menghafalkan perintah-perintah command line.

Walaupun VM bisa dibuat sesuka hati, seringkali IP public yang tersedia terbatas jumlahnya. Punya VM banyak tapi tidak bisa diakses dari luar tentu percuma saja. Pada artikel ini, kita akan membahas cara supaya satu IP public bisa dimanfaatkan oleh banyak VM.

Konfigurasi Host

Agar ada gambaran, berikut adalah konfigurasi awal setelah instalasi. Tentunya pembaca maklum bahwa semua IP yang ditulis di sini adalah palsu belaka.

  • IP public (digunakan oleh Proxmox Host) : 202.202.202.202
  • Network Device : eth0, dibridge menjadi vmbr0
  • Versi Proxmox : 2-2-24

Berikut adalah hasil keluaran perintah ifconfig dalam host :

eth0      Link encap:Ethernet  HWaddr 00:21:5e:27:05:30  
          inet6 addr: fe80::221:5eff:fe27:530/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:643194 errors:0 dropped:0 overruns:0 frame:0
          TX packets:225604 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:196913694 (187.7 MiB)  TX bytes:35911168 (34.2 MiB)
          Interrupt:16 Memory:ce000000-ce012800

vmbr0     Link encap:Ethernet  HWaddr 00:21:5e:27:05:30  
          inet addr:202.202.202.202  Bcast:202.202.202.203  Mask:255.255.255.248
          inet6 addr: fe80::221:5eff:fe27:530/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:571124 errors:0 dropped:0 overruns:0 frame:0
          TX packets:206100 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:177290314 (169.0 MiB)  TX bytes:31457704 (30.0 MiB)

Dan ini adalah isi file /etc/network/interfaces dalam host

iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
	address  202.202.202.202
	netmask  255.255.255.248
	gateway  202.202.202.201
	bridge_ports eth0
	bridge_stp off
	bridge_fd 0

Konfigurasi VM

Kita mempunyai satu VM dengan konfigurasi berikut :

  • IP Address : 192.168.100.100
  • Jenis Interface : venet

Berikut adalah output dari ifconfig

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:127.0.0.2  P-t-P:127.0.0.2  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:33307 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16717 errors:0 dropped:8 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:49576164 (49.5 MB)  TX bytes:916607 (916.6 KB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.100.100  P-t-P:192.168.100.100  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

Akses dari dalam VM ke Internet

Yang pertama kita kerjakan adalah bagaimana caranya supaya VM ini bisa mengakses internet. Caranya adalah memasang NAT di Proxmox Host supaya paket data dari network 192.168.100.0/24 diijinkan untuk keluar dan melalui proses Network Address Translation (NAT).

Perintahnya adalah sebagai berikut

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o vmbr0 -j MASQUERADE

Perintah ini tentunya tidak asing bagi yang sering mengkonfigurasi internet gateway dengan Linux. Caranya sama persis, seolah-olah ada banyak komputer dengan IP 192.168.100.xxx yang ingin mengakses internet.

Setelah ini dijalankan, kita coba tes akses internet dari dalam VM. Jalankan perintah berikut dari Proxmox Host untuk masuk ke dalam VM.

vzctl enter 107

107 adalah ID dari VM yang ingin kita masuki.

Begitu sudah masuk, coba ping ke alamat internet.

ping google.com
PING google.com (173.194.38.137) 56(84) bytes of data.
64 bytes from sin04s01-in-f9.1e100.net (173.194.38.137): icmp_req=1 ttl=57 time=12.2 ms
64 bytes from sin04s01-in-f9.1e100.net (173.194.38.137): icmp_req=2 ttl=57 time=12.3 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 12.257/12.293/12.330/0.116 ms

Tentunya kita harus pastikan dulu Proxmox Host bisa ping ke Google. Bila Proxmox Host saja tidak bisa akses internet, ya jangan harap VM bisa akses internet. Ini kan bukan acara sulap.

Baiklah, VM kita sudah bisa mengakses internet, lanjut ke langkah berikut.

Mengakses VM dari Internet

Minimal kita ingin agar VM kita tersebut bisa diakses melalui SSH. Service SSH di Linux biasanya jalan di port 22. Karena port 22 di Proxmox Host sudah dipakai oleh dirinya sendiri, kita harus pilih port lain, misalnya 10722. Teknik ini disebut dengan istilah port forwarding

Perintahnya juga sama dengan perintah untuk NAT dari internet ke jaringan LAN, tentu rekan-rekan yang biasa mengkonfigurasi internet gateway tidak merasa asing.

iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp --dport 10722 -j DNAT --to-destination 192.168.100.100:22

Setelah itu, kita test dari komputer kita

ssh root@202.202.202.202 -p 10722

Seharusnya kita sudah bisa login ke dalam VM.

Selanjutnya, kalau ingin membuat port forwarding untuk port lain caranya sama.

iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp --dport 10780 -j DNAT --to-destination 192.168.100.100:80

Perintah di atas akan membuka port 10780 di IP public Proxmox Host dan data yang datang ke sana diarahkan ke port 80 di VM 107 yang memiliki IP private 192.168.100.100.

Setelah semua konfigurasi dicek dan berjalan dengan baik, simpan konfigurasi iptables ke folder yang kita inginkan menggunakan perintah iptables-save. Ini kita lakukan supaya konfigurasinya tidak hilang pada waktu reboot.

iptables-save > /etc/iptables/rules.v4

Pada waktu komputer shutdown, konfigurasi iptables yang sudah kita pasang akan hilang. Oleh karena itu kita perlu install paket iptables-persistent yang akan membaca dan memasang file hasil save kita di /etc/iptables/rules.v4.

apt-get install iptables-persistent

Demikianlah, satu IP public yang kita miliki bisa dipakai oleh banyak VM yang ada dalam satu server tersebut.

Konsep konfigurasi ini dikenal juga dengan istilah Network Address Translation(NAT). Lebih jauh tentang NAT bisa dibaca di artikel ini