Translate

Selasa, 03 Februari 2015

Membuat Port Forwarding Dalam IPTables di Centos

I. Pendahuluan
Dalam artikel sebelumnya, kita sudah mempelajari tentang dasar-dasar iptables. Artikel kali ini akan menjelaskan tentang penggunaan iptables lebih lanjut yaitu bagaimana cara membuat port forwarding dengan menggunakan iptables. Port forwarding merupakan sebuah konsep untuk meneruskan paket yang datang dari ip dan port tertentu ke ip dan port tertentu. Konsep ini mengijinkan seorang user untuk mengakses sebuah layanan seperti telnet atau ssh di jaringan lokal dari jaringan publik. Misalnya seseorang sedang menggunakan IP publik a.b.c.d ingin mengakses layanan ssh yang ada di jaringan lokal w.x.y.z. Maka dengan menggunakan port forwarding orang tersebut bisa melaksanakan hal tersebut. Kelemahan dari port forwarding adalah jika kita menggunakan sebuah port untuk forwarding maka port tersebut tidak dapat digunakan lagi. Port forwarding sering disebut juga PAT (Port Address Translation) atau NAPT (Network Address and Port Translation). Di artikel ini, penulis menggunakan Centos 5.4 sebagai distronya dan menggunakan iptables versi 1.3.5 dan seharusnya artikel ini dapat digunakan oleh berbagai macam distro dan berbagai versi iptables.

II. CARA KERJA
Port forwarding merupakan kebalikan dari proses masquerading (NAT). Jika pada proses NAT yang terjadi adalah beberapa komputer lokal LAN terhubung ke internet melalui IP Publik, maka pada port forwarding yang terjadi adalah koneksi dari internet masuk ke dalam komputer yang ada di dalam LAN kita. Untuk lebih memudahkan bagaimana port forwarding itu bekerja bayangkanlah seorang resepsionis kantor yang hanya mempunyai satu nomor publik untuk menghubungi nomor telepon luar. Jika misalnya ada orang dari luar menelpon ke kantor tersebut untuk berbicara dengan seseorang yang bernama badu misalnya, maka resepsionis akan menghubung badu melalui nomor ekstensi si badu itu sendiri. Tetapi dari si badu tidak bisa menelpon ke luar. Berdasarkan analogi tersebut, dapat dianalogikan bahwa telepon si resepsionis merupakan sebuah server yang mempunyai 2 ethernet yaitu IP publik dan IP lokal. Sedangkan ekstensi si badu merupakan nomor port sebuah layanan di sebuah server lokal. Jika seseorang ingin menggunakan layanan ke dalam sebuah server lokal, maka dia harus menuliskan port dari layanan tersebut.

III. Langkah-Langkah
Sebelum kita mengunakan Port forwarding, maka ada dua hal yang harus dikonfigurasi. Pertama adalah routing kernel. Routing kernel harus bernilai 1 agar port forwarding dapat berjalan. Ketikkan perintah berikut:
# vi /etc/sysctl.conf
Lalu cari pada file tersebut tulisan net.ipv4.ip_forward dan rubah nilainya menjadi 1, sehingga akan menjadi:
net.ipv4.ip_forward = 1
Yang kedua adalah file ip_forward. Ketikan perintah berikut:
# vi /proc/sys/net/ipv4/ip_forward
Ubah nilainya menjadi 1. Setelah kedua hal tersebut dikonfigurasi, maka kita bersiap untuk melakukan port forwarding. Port forwarding mempunyai format seperti berikut:
iptables -t nat [-command] PREROUTING [-p protocol] --dport [port yang diinginkan] -d [IP publik] -j DNAT --to [ip_tujuan:port tujuan]
Setelah kita melakukan port forwarding, maka jangan lupa untuk melakukan hal berikut:
iptables -t nat -A POSTROUTING -o [ethernet lokal] -j MASQUERADE
Di bawah ini akan diberikan contoh-contoh agar kita dapat memahami implementasi port forwarding dengan lebih baik. Contoh-contoh ini berasumsi bahwa kita mempunyai 2 ethernet yaitu eth0 dengan IP 123.45.67.89 dan eth1 dengan IP lokal 192.168.0.2. Dan seluruh rantai semuanya berpolicy ACCEPT. Begitu juga dengan komputer lokal dengan IP 192.168.0.13 yang seluruh rantai iptables-nya berpolicy ACCEPT. Jika memang iptables kita mempunyai rantai yang berpolicy DROP, maka hanya tinggal membuka saja port-port tersebut.

Artikel Terkait

1. Memforward web Server
Misalnya kita mempunyai sebuah aplikasi MRTG untuk melihat traffik jaringan di lokal kita. Kita ingin agar ketika pulang dari kantor kita bisa memantau kondisi jaringan kantor kita. Maka dari itu kita akan menggunakan konsep port forwarding ini untuk melaksanaakn maksud tersebut. Untuk melaksanakan hal tersebut kita akan membuka port 23456 dari server gateway kita. Tuliskan perintah-perintah berikut:
# iptables -t nat -A PREROUTING -p tcp --dport 23456  -d 123.45.67.89 -j DNAT --to-destination 192.168.0.2:80
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Perintah iptables pertama memberikan perintah agar setiap protokol tcp yang menuju IP 123.45.67.89 dengan port 23456 akan diteruskan ke IP 192.168.0.2 dengan port 80. Sedangkan perintah terakhir memberikan perintah Masquerade untuk ethernet lokal dalam hal ini eth1.
Sekarang cobalah ke browser dan ketikkan
http://123.45.67.89:23456/mymrtg
Maka seharusnya kita sudah bisa melihat aplikasi MRTG kita dari IP publik. Bandingkan dengan kita hanya mengetikkan browser seperti berikut:
Maka akan terjadi error.
2. Memforward Layanan Telnet
Misalnya kita ingin melakukan telnet kepada sebuah server yang ada di dalam jaringan lokal kita dan kita berada di luar kantor serta menggunakan IP publik. Maka dari itu kita mengetikkan di iptables perintah sebagai berikut:
# iptables -t nat -A PREROUTING -p tcp --dport 12345  -d 123.45.67.89 -j DNAT --to-destination 192.168.0.13:23
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Perintah iptables pertama memberikan perintah agar setiap protokol tcp yang menuju IP 123.45.67.89 dengan port 12345 akan diteruskan ke IP 192.168.0.13 dengan port 23. Sedangkan perintah terakhir memberikan perintah Masquerade untuk ethernet lokal dalam hal ini eth1. Untuk melakukan telnet, maka kita mengertikkan formatnya sebagai berikut:
# telnet [ip publik] [port layanan]
Dalam kasus ini, kita mengetikkan sebagai berikut:
# telnet 123.45.67.89 12345
Dan seharusnya kita akan masuk ke server dengan IP 192.168.0.13 melalui mode telnet.
3. Memforward layanan ssh
Misalnya kita ingin melakukan ssh kepada sebuah server yang ada di dalam jaringan lokal kita dan kita berada di luar kantor serta menggunakan IP publik. Maka dari itu kita mengetikkan di iptables perintah sebagai berikut:
# iptables -t nat -A PREROUTING -p tcp --dport 34567  -d 123.45.67.89 -j DNAT --to-destination 192.168.0.13:22
#  iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Perintah iptables pertama memberikan perintah agar setiap protokol tcp yang menuju IP 123.45.67.89 dengan port 34567 akan diteruskan ke IP 192.168.0.13 dengan port 22. Sedangkan perintah terakhir memberikan perintah Masquerade untuk ethernet lokal dalam hal ini eth1. Untuk melakukan ssh, maka kita mengertikkan formatnya sebagai berikut:
# ssh nama_user@ip_publik -p [port layanan]
Dalam kasus ini, kita mengetikkan sebagai berikut:
# ssh arfie@123.45.67.89 -p 34567
Dan seharusnya kita akan masuk ke server dengan IP 192.168.0.13 melalui mode ssh.

IV. Catatan Penting
Perlu diketahui bahwa jika kita menggunakan sebuah port untuk port forwarding maka port tersebut tidak dapat dipakai lagi. Maka dari itu, sebelum kita menggunakan port, cek terlebih dahulu apakah port tersebut masih tersedia atau tidak. Dan sebaiknya jangan menggunakan port-port yang sudah familiar penggunaannya seperti port 22, port 23, dan sebagainya jika ingin digunakan untuk port forwarding karena dikhawatirkan kita belum mensetting ulang service-service yang menggunaka port-port tersebut sehingga akan terjadi bentrok. Dan juga untuk melihat port-port mana saja yang digunakan oleh linux, lihat saja di file /etc/services. Sebaiknya gunakan port di atas port 10000 jika ingin digunakan untuk port forwarding dan perlu diketahui bahwa batas port hanya sampai port 65563. Jadi masih banyak puluhan ribu port yang masih lowong untuk dipergunakan sebagai port forwarding.

=> Silahkan berkomentar sesuai artikel diatas
=> Berkomentar dengan url ( mati / hidup ) tidak akan di publish