Mikrotik Hairpin NAT – Akses ke 2 Server dari Lokal dan Internet

Sebenarnya ini sudah ada pada Wiki Mikrotik, tapi saya tulis juga kalau-kalau ada yang punya permasalahan yang sama dan butuh solusi. Ini bisa diterapkan ke firewall server apa saja, karena prinsipnya sama. Perintah bisa beda dikit, tapi logika pikirnya pasti sama. Jadi begini, saya ada 2 server. Satu database, satunya lagi web server. Kebutuhannya adalah bisa mengakses kedua server ini dari internet, pembedanya hanya port yang dituju. Masalah muncul karena kedua server ini juga diakses dari lokal.

Karena berdasarkan port, kita cukup pakai NAT.

1. IP Publik adalah: 172.168.123.10 ada di interface eth1

2. IP Address Web Server adalah 10.0.0.1, ada di interface eth2

3. IP Address Database Server adalah 192.168.1.2, satu kelas dengan klien yang ada di belakang router. Ada di interface eth3

4. IP Address router (lokal LAN) adalah 192.168.1.1

Sebelum mulai menambahkan ini, pastikan router sudah tersetting dengan baik untuk koneksi internet. Untuk akses dari Internet ke server2, ini yang harus dilakukan (basis perintahnya mikrotik, kalau pakai iptables, sesuaikan sedikit)

1. Untuk akses dari internet ke webserver (ip publik port 80 ke webserver)

ip firewall nat add chain=dstnat dst-address=172.168.123.10 protocol=tcp dst-port=80 action=dst-nat to-address=10.0.0.1 to-ports=80

2. Untuk akses dari internet ke database (ip publik port 81 ke database)

ip firewall nat add chain=dstnat dst-address=172.168.123.10 protocol=tcp dst-port=81 action=dst-nat to-address=192.168.1.2 to-ports=80

3. Akses dari lokal ke webserver cukup memasukkan pengaturan DNS

ip dns static add address=10.0.0.1 name=webserver.com

4. Nah, sekarang bagian ‘tricky’ nya adalah akses ke webserver port 81, tapi di ‘dnat’ ke 192.168.1.2. Padahal kita tahu bahwa database berada satu jaringan dengan klien. Kalau satu jaringan, seharusnya klien akan langsung kontak 192.168.1.2, tidak akan dilewatkan ke router. Ini yang bikin blunder.

Prosesnya begini:

– klien minta koneksi ke 10.0.0.1 port 81

– router belokkan ke 192.168.1.2 port 80

– klien dan database protes, kok paket datanya 10.0.0.1 tapi ke tujuannya satu kelas dengan saya. Ini yang bener mana hah?? (lebay..)

– paket data gak pernah nyampai.

Solusinya adalah dengan metode hairpin NAT, disebut hairpin karena mirip dengan jepit rambut: Klien 192.168.1.0 request ke router, tapi sama router dibalikin lagi ke 192.168.1.0

Ok, perintah firewall  mikrotik-nya seperti ini:
1. klien request alamat webserver.com port 81 (ip 10.0.0.1), belokkan ke 192.168.1.2 port 80 (sama seperti perintah diatas yang nomor 2.

ip firewall nat add chain=dstnat dst-address=10.0.0.1 protocol=tcp dst-port=81 action=dst-nat to-address=192.168.1.2 to-ports=80

Supaya tidak error, kita kasih hairpin NAT, yaitu yang ini:

ip firewall nat add chain=srcnat src-address=192.168.1.0/24 dst-address=192.168.1.2 protocol=tcp dst-port=80 out-interface=eth3 action=masquerade

Dengan proses ini, router akan melakukan masquerade paket data dari klien ke database, sehingga paketdata seolah2 berasal dari router itu sendiri (192.168.1.1) yang juga satu kelas dengan database. Kendalanya hanya satu dengan metode ini, database server hanya mencatat ip address milik router, bukan klien. Jadi kalau 192.168.1.10 melakukan akses ke database, maka database mencatat bukan 192.168.1.10 tapi 192.168.1.1.

Kalau mau aman, buat 2 nama untuk akses. Jadi pisahkan nama akses untuk lokal, dan nama akses dari internet.

Author: betweenmeandlinux

I'am a nationalist. I love my country, Indonesia.

One thought on “Mikrotik Hairpin NAT – Akses ke 2 Server dari Lokal dan Internet”

Leave a comment