Apa perbedaan antara PREROUTING dan FORWARD di iptables?

16

Saya mencoba untuk memahami cara kerja sistem ini dan saya memiliki masalah untuk memahami perbedaan antara menggunakan NAT PREROUTING atau filter FORWARD. Dari apa yang saya mengerti, PREROUTE dapat mengirim paket ke server lain, menghindari filter. Jika NAT dapat menangani ini melalui PREROUTE, apa tujuan memiliki aturan FORWARD di filter?

GheorGhe
sumber

Jawaban:

25

Tabel NAT :

Tabel ini hanya boleh digunakan untuk NAT (Terjemahan Alamat Jaringan) pada paket yang berbeda. Dengan kata lain, itu hanya digunakan untuk menerjemahkan bidang sumber paket atau bidang tujuan.

Tabel Filter :

Tabel filter terutama digunakan untuk menyaring paket. Kami dapat mencocokkan paket dan memfilternya dengan cara apa pun yang kami inginkan. Ini adalah tempat di mana kami benar-benar mengambil tindakan terhadap paket-paket dan melihat apa yang dikandungnya dan MENGURANGI atau menerimanya, tergantung pada kontennya. Tentu saja kami juga dapat melakukan penyaringan sebelumnya; Namun, tabel khusus ini adalah tempat penyaringan dirancang.

Dalam melintasi tabel dan rantai, kita dapat melihat bahwa rantai FORWARD filter hanya dilintasi oleh paket yang diteruskan (paket yang berasal dari jaringan dan pergi ke jaringan), yaitu komputer Anda bertindak seperti router, sedangkan rantai PUTUSAN nat dilalui oleh keduanya diteruskan paket dan paket yang tujuannya adalah tuan rumah lokal.

Anda harus menggunakan PROSUTING nat hanya untuk mengubah alamat tujuan paket dan FORWARD filter hanya untuk menyaring (menjatuhkan / menerima paket).

Jika kita mendapatkan paket ke keputusan routing pertama yang tidak diperuntukkan bagi mesin lokal itu sendiri, itu akan dialihkan melalui rantai FORWARD. Sebaliknya, jika paket tersebut ditujukan untuk alamat IP yang didengarkan oleh mesin lokal, kami akan mengirim paket melalui rantai INPUT dan ke mesin lokal. masukkan deskripsi gambar di sini Paket mungkin ditujukan untuk mesin lokal, tetapi alamat tujuan dapat diubah dalam rantai PREROUTING dengan melakukan NAT. Karena ini terjadi sebelum keputusan routing pertama, paket akan dilihat setelah perubahan ini. Karena itu, perutean dapat diubah sebelum keputusan perutean dilakukan. Perhatikan, bahwa semua paket akan melalui satu atau jalur lain di gambar ini. Jika Anda DNAT paket kembali ke jaringan yang sama dari mana asalnya, itu masih akan melakukan perjalanan melalui sisa rantai sampai kembali keluar di jaringan.

Eric Carvalho
sumber
5

PREROUTING : Rantai ini digunakan untuk membuat keputusan terkait routing apa pun sebelum ( PRE ) mengirim paket apa pun. Selalu ingat bahwa dalam tabel PREROUTING/POSTROUTINGie target dll dari tabel default tidak akan berfungsi. The tabel hanya digunakan untuk mengambil routing yang keputusan. Anda harus menggunakan saat mengambil keputusan perutean, yaitu keputusan yang harus diambil sebelum paket mulai melintasi melalui jaringan. Berikut ini contohnya, kami mengarahkan kembali lalu lintas apa pun yang baru saja mencapai server pada port 80 ke port 8080:NATACCEPT/DROP/REJECTFILTERNATPREROUTING

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

FORWARD : Seperti namanya, FORWARDRantai FILTERtabel digunakan untuk meneruskan paket-paket dari sumber ke tujuan, di sini sumber dan tujuan adalah dua host yang berbeda. Jadi, seperti yang Anda bayangkan FORWARDaturan pada dasarnya digunakan pada server di mana satu host mengirim / menerima lalu lintas dari host lain melalui server. Ketika paket dihasilkan dari server, rantai adalah OUTPUTlalu lintas keluar dari dirinya sendiri sedangkan INPUTrantai berarti paket dimaksudkan untuk server itu sendiri. Berikut ini adalah contoh FORWARDrantai di mana TCPlalu lintas apa pun yang diterima pada port 80 pada antarmuka yang eth0dimaksudkan untuk tuan rumah 192.168.0.4akan diterima dan diteruskan ke 192.168.0.4:

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT
heemayl
sumber
Penggunaan "host" Anda tampaknya aneh. Tabel mana yang digunakan ketika tergantung terutama pada antarmuka lokal paket telah masuk dan dimaksudkan untuk keluar.
guntbert
bagian mana yang terlihat aneh? Saya telah menggunakan gagasan host untuk menunjukkan pihak pengirim & penerima ..
heemayl
Saya berbicara tentang paragraf FORWARD: tabel itu digunakan ketika sebuah paket yang masuk melalui satu antarmuka ditakdirkan untuk antarmuka lain (sebagai lawan dari host lokal)
guntbert
oh..ok..saya mengerti .... ya saya harus menggunakan antarmuka .... cukup gunakan host untuk membuatnya mudah untuk gambar..saya akan mengubahnya ketika saya akan berada di depan komputer saya.
heemayl
@ Guntbert: baru saja menegakkan kepalaku. tidak membaca komentar terakhir Anda dengan cukup hati-hati. Saya pikir Anda salah dalam konteks dua antarmuka berbeda untuk FORWARDrantai. Ketika paket sedang ditransfer dari satu host LAN ke host lain dari LAN, paket akan melalui hanya satu antarmuka dan rantai yang digunakan akan FORWARDmeskipun di sini server (medium) tidak akan bertindak sebagai router dalam arti yang ketat. melainkan dapat dianggap sebagai saklar.
heemayl