Langsung ke konten utama

Jurang Pengembangan Software di Dunia Open-Source

     E ra D i srupsi      2 025 ini adalah tahun terpesat dimana dunia A rtificial I ntelligence berkembang pesat, dimana pengerjaan kode sudah terlampaui oleh sistem kecerdasan buatan ini, semua aspek komprehensif didalam dunia programming seperti syntax itu sudah terkuasai oleh data, sehingga memungkinkan penggunanya untuk cukup memerintahkan penulisan kode yang begitu sederhana. Namun, di lain waktu, cara orang untuk mempelajari bahasa pemrograman pun akan terlihat lebih sederhana karena bantuan alat kecerdasan buatan, AI .

Linux NAT : Sekedar Coretan Tentang NAT



Kadang orang-orang yang sering ngulik pada konsep jaringan menemukan hal ini, NAT. Mungkin alasannya ketika ingin memblokir atau mencegah koneksi agar supaya tidak masuk ke mesin Linux yang dipakainya, atau mungkin gimana cara jaringan lokal bisa konek ke Internet lewat mesin Linux yang dipakainya. Kepanjangan NAT adalah Network Address Translation, atau bahasanya Translasi Alamat Jaringan.

Ya, definisi NAT yang diambil di Wikipedia adalah "A method of remapping one IP address space into another by modifying network address information in the IP header of packets while they are in transit across a traffic routing device." Yang artinya "Sebuah metode untuk memetakan ulang satu ruang IP address ke IP address yang informasinya dimodifikasi di header paket disaat paket itu sedang transit di perangat perutean lalu lintas".

NAT bisa juga dibilang salah satu fungsi dari router, karena memang fungsinya untuk mengubah informasi paket IP address, mulai dari destination address, source address, dan bahkan memberikan aksi pada paket itu sendiri ( ACCEPT, REJECT, DROP, DNAT, SNAT, dll. ).
Salah satu hal yang populer pada NAT ini yakni bisa menampung beberapa Alamat IP Privat dibelakang satu IP. Selain itu juga DNAT, SNAT dan MASQUERADING.

Dalam OS GNU/Linux, NAT dikendalikan oleh kernel dan dapat dikonfigurasikan memakai IPTables.


Tabel NAT di IPTables Linux
Seperti yang bisa i lihat di gambar, Linux memiliki tabel NAT, bisa dilihat memakai perintah iptables -t nat -L. Tabel NAT dalam IPTables mempunyai Chain, chain ini menentukan jalur paket yang mana yang akan diberikan tindakan. Dalam tabel NAT ini ada 4 chain :
  • PREROUTING, paket yang sebelumnya akan masuk ke chain INPUT.
  • POSTROUTING, paket yang akan keluar setelah chain OUTPUT.
  • INPUT, paket yang masuk ke mesin lokal.
  • OUTPUT, paket yang keluar dari mesin lokal.

Karena spesialitasnya, Chain PREROUTING dapat digunakan untuk mengubah informasi paket sebelum paket itu datang ke mesin lokal Linux. Dan sebaliknya pada POSTROUTING, yakni dapat mengubah paket sebelum paket itu keluar dari mesin lokal Linux.


Paket-paket yang masuk lewat interface jaringan akan melalui Chain PREROUTING terlebih dahulu. Paket yang masuk ke Chain PREROUTING dapat ditindak, sebagaimana yang kita mau. Contohnya DNAT, yakni dapat merubah alamat tujuan dari sebuah paket, atau REDIRECT, membelokan paket ke mesin lokal Linux, dan masih banyak lagi.

Bila tidak ada tindakan, paket yang sampai ke mesin lokal pada Chain PREROUTING akan memilih rute mana yang akan dilewati. Bila tujuan paket itu memilih rute ke mesin lokal Linux, maka jalur yang dilewati adalah Chain PREROUTING ke Chain INPUT dan seterusnya sampai Chain POSTROUTING. Bila mesin Linux itu dipakai sebagai router, maka rute jalur yang dilewati adalah Chain PREROUTING ke Chain FORWARD, lalu ke Chain POSTROUTING.

Perintah & Aksi IPTables NAT
Chain-chain pada IPTables mempunyai aksi, artinya kita dapat menindak paket dan akan kita apakan paket itu. Misal, kita ingin memblokir paket yang masuk dari IP Address ini, port sekian, MAC Addressya ini, ataupun bisa pula kita menerima paket yang masuk dari IP Address ini, port sekian, MAC Addressnya ini, dan sebagainya.
Perintah umum iptables bisa dilihat opsi-opsinya menggunakan opsi --help.


Tabel yang kita gunakan adalah NAT,  jadi kita pakai opsi -t nat setiap memberikan perubahan pada iptables, dan dapat melihat aturan-aturan pada berbagai chain dengan menambahkan opsi -L. Lihat gambar ini.

Tabel NAT di IPTables Linux
Chain-chain dalam iptables mempunyai istilah rule, artinya tindakan atau aturan yang diberikan pada sebuah chain pada tabel tertentu. Disini kita memakai NAT, NAT mempunyai PREROUTING, INPUT, OUTPUT, dan POSTROUTING dan kita bisa menambahkan sebuah rule ( aturan ) ke sebuah chain dengan opsi -I, dan memberi aksi dengan opsi -j ( atau --jump ). Jump ini memberikan aksi yang akan kita gunakan seperti contohnya ACCEPT ( menerima paket ), DROP ( menjatuhkan paket ), REJECT ( menjatuhkan paket ), SNAT ( Source NAT ), DNAT ( Destination NAT ), MASQUERADE ( menyamar ).

Destination NAT ( DNAT )
Aksi DNAT pada opsi -j dapat mengubah alamat tujuan dari sebuah sumber menjadi alamat tujuan yang lain. Semisal sebuah PC ingin menghubungkan ke alamat 1.2.3.4 melewati sebuah gateway NAT, maka dengan DNAT, alamat tujuan itu dapat diubah ke alamat yang lain, misalnya 1.1.1.1.
Opsi -j DNAT hanya berlaku pada tabel NAT Chain OUTPUT dan POSTROUTING. Opsi -j DNAT mempuyai opsi tambahan --to-destination.

        iptables -t nat -I [PREROUTING|OUTPUT] [-s [ip]|-d [ip]|-s [ip] -d [ip]] -j DNAT [--to-destination [ipaddr[-ipaddr]:[port[-port]]]]

Source NAT ( SNAT )
Aksi SNAT pada iptables berfungsi untuk mengubah informasi IP dari koneksi. Contohnya semisal mesin Linux 192.168.1.1 membuat koneksi ke PC 192.168.1.2, ketika SNAT ini dipakai di chain POSTROUTING, maka mesin Linux tersebut dapat merubah alamat IPnya sendiri ke IP yang lain. Sehingga bila dibaca di PC 192.168.1.2 itu, koneksi yang datang bukanlah dari alamat 192.168.1.1, melainkan IP yang lain.

        iptables -t nat -I [PREROUTING|POSTROUTING] [-s [ip]|-d [ip]|-s [ip] -d [ip]] -j SNAT --to-source [ip]

Sistem Linux Sebagai Gateway
NAT pada OS Linux dapat difungsikan sebagai Gateway dapat diaktifkan dengan mengubah opsi /proc/sys/net/ipv4/ip_forward ke 1 dan pada iptables menggunakan chain POSTROUTING pada tabel NAT dengan aksi MASQUERADE. MASQUERADE ini mirip dengan SNAT, namun SNAT hanya dapat mengubah menjadi satu sumber IP saja. Sedangkan MASQUERADE dapat menyesuaikan IPnya secara dinamis.

        echo "1" > /proc/sys/net/ipv4/ip_forward

Perintah ini memfungsikan IP Forwarding pada mesin Linux sebagai penerusan paket yang datang ke mesin lokal ke mesin yang lain.

        iptables -t nat -I POSTROUTING -j MASQUERADE

Penambahan rule ini berfungsi agar koneksi yang masuk ke mesin untuk diteruskan ke lalulintas jaringan di luar mesin Linux, contohnya seperti Internet.

Summary
    • NAT pada OS Linux berfungsi sebagai pengubah alamat dan sekaligus firewall jaringan, yaitu sebuah 'tembok api' yang mengatur lalulintas jaringan yang masuk/keluar kedalam sebuah mesin.
    • Pada beberapa Distro Linux , NAT diatur menggunakan IPTables.
    • NAT mempunyai chain PREROUTING, POSTROUTING, INPUT dan OUTPUT yang mengatur lalulintas, translasi alamat dan tindakannya.

      Komentar

      Postingan populer dari blog ini

      Jurang Pengembangan Software di Dunia Open-Source

           E ra D i srupsi      2 025 ini adalah tahun terpesat dimana dunia A rtificial I ntelligence berkembang pesat, dimana pengerjaan kode sudah terlampaui oleh sistem kecerdasan buatan ini, semua aspek komprehensif didalam dunia programming seperti syntax itu sudah terkuasai oleh data, sehingga memungkinkan penggunanya untuk cukup memerintahkan penulisan kode yang begitu sederhana. Namun, di lain waktu, cara orang untuk mempelajari bahasa pemrograman pun akan terlihat lebih sederhana karena bantuan alat kecerdasan buatan, AI .

      Localhost.run : Alternatif Kedua Dari Serveo.net Untuk Reverse Tunneling

      Sebagai ganti dari Server Reverse SSH Tunneling Serveo.net yang kemarin down dan sampai saat ini dikarenakan phishng, kami menemukan alternatif pengganti Serveo, yaitu https://localhost.run yang tata cara pemakaiannya pun sama dengan perintah Reverse SSH Tunneling Serveo.net. Kita hanya memerlukan aplikasi ssh yang sudah tertanam di OS GNU/Linux, tetapi untuk Windows memerlukan aplikasi Putty atau BitviseSSH Client, oke gak usah panjang lebar kita langsung saja ke tata cara pemakaian aplikasi tersebut pada konsol / CLI / Bash. 1. Pastikan anda memiliki koneksi yang terhubung ke internet. Untuk mengujinya bisa menggunakan perintah ping ke alamat 8.8.8.8 ( DNS Google ). 2. Jika sudah periksalah port service yang akan di ekspos ke Internet. 3. Selanjutnya, kita ketikkan  ssh -R 80 : localhost : 8080 ssh.localhost.run  Keterangan : Port 80 adalah port server tujuan & 8080 adalah port server lokal. Untuk mengakses server kita dari internet, tinggal copy link yang ...