Memahami Konsep dan Cara Kerja NAT Pada Debian Router

Memahami Konsep dan Cara Kerja NAT pada Debian Router

A. Ulasan tentang Konsep dan Cara Kerja NAT pada Debian Router

1. NAT (Network Address Translation)
1.1 Apa Network Address Translation?

Biasanya, paket pada perjalanan jaringan dari sumber mereka (seperti komputer di rumah Anda) ke tujuan mereka (seperti www.gnumonks.org) melalui banyak link yang berbeda: sekitar 19 dari keberadaan saya di Australia. Tidak ada link ini benar-benar mengubah paket Anda: mereka hanya mengirimkannya seterusnya.

Jika salah satu dari link ini adalah untuk melakukan NAT, maka mereka akan mengubah sumber atau tujuan dari paket saat melewati. Seperti yang dapat Anda bayangkan, ini bukan bagaimana sistem ini dirancang untuk bekerja, dan karenanya NAT selalu sesuatu dari kuali. Biasanya link melakukan NAT akan ingat bagaimana hancur paket, dan ketika paket balasan melewati jalan lain, ia akan melakukan reverse mangling pada itu paket balasan, jadi semuanya bekerja.

1.2 Mengapa Aku Ingin Lakukan NAT?

Dalam dunia yang sempurna, Anda tidak akan. Sementara itu, alasan utama adalah:

Koneksi Modem Untuk Internet
Kebanyakan ISP memberikan satu alamat IP ketika Anda dial up untuk mereka. Anda dapat mengirimkan paket dengan alamat sumber yang Anda inginkan, tetapi hanya balasan untuk paket dengan sumber ini alamat IP akan kembali ke Anda. Jika Anda ingin menggunakan beberapa mesin yang berbeda (seperti jaringan rumah) untuk terhubung ke internet melalui link yang satu ini, Anda harus NAT.

Ini adalah jauh yang paling umum digunakan dari NAT hari ini, umumnya dikenal sebagai `menyamar 'di dunia Linux. Saya menyebutnya SNAT ini, karena Anda mengubah alamat sumber dari paket pertama.

beberapa Server
Kadang-kadang Anda ingin mengubah mana paket menuju ke jaringan Anda akan pergi. Sering hal ini karena (seperti di atas), Anda hanya memiliki satu alamat IP, tetapi Anda ingin orang-orang untuk dapat masuk ke kotak di belakang satu dengan `alamat IP nyata '. Jika Anda menulis ulang tujuan dari paket yang masuk, Anda dapat mengelola ini. Jenis NAT disebut port-forwarding di bawah versi sebelumnya dari Linux.

Sebuah variasi umum ini adalah berbagi beban, di mana pemetaan berkisar lebih dari satu set mesin, mengipasi paket kepada mereka. Jika Anda melakukan ini pada skala yang serius, Anda mungkin ingin melihat

Proksi transparan
Kadang-kadang Anda ingin berpura-pura bahwa setiap paket yang melewati kotak Linux Anda ditakdirkan untuk program pada kotak Linux itu sendiri. Ini digunakan untuk membuat proxy transparan: proxy adalah sebuah program yang berdiri di antara jaringan dan dunia luar, menyeret komunikasi antara keduanya. Bagian transparan ini karena jaringan Anda bahkan tidak akan tahu itu berbicara dengan proxy, kecuali tentu saja, proxy tidak bekerja.

Squid dapat dikonfigurasi untuk bekerja dengan cara ini, dan itu disebut redirection atau proxy transparan di bawah versi Linux sebelumnya.

2. Dua Jenis NAT

Saya membagi NAT menjadi dua jenis: Sumber NAT (SNAT) dan Destination NAT (DNAT).

Sumber NAT adalah ketika Anda mengubah alamat sumber dari paket pertama: yaitu Anda mengubah mana sambungan berasal. Sumber NAT selalu dilakukan pasca-routing, sebelum paket keluar ke kawat. Masquerading adalah bentuk khusus dari SNAT.

Tujuan NAT adalah ketika Anda mengubah alamat tujuan dari paket pertama: yaitu Anda mengubah mana sambungan akan. Tujuan NAT selalu dilakukan sebelum routing, ketika paket pertama datang dari kawat. Port forwarding, berbagi beban, dan transparan proxy adalah segala bentuk DNAT.

3. Cepat Terjemahan Dari 2.0 dan 2.2 Kernel

Maaf bagi Anda masih terguncang dari 2,0 (ipfwadm) ke 2.2 (ipchains) transisi. Ada kabar baik dan buruk.

Pertama, Anda hanya dapat menggunakan ipchains dan ipfwadm seperti sebelumnya. Untuk melakukan ini, Anda perlu insmod yang `ipchains.o 'atau` ipfwadm.o' modul kernel ditemukan dalam distribusi netfilter terbaru. Ini adalah saling eksklusif (Anda telah diperingatkan), dan tidak harus dikombinasikan dengan modul netfilter lainnya.

Setelah salah satu modul ini diinstal, Anda dapat menggunakan ipchains dan ipfwadm seperti biasa, dengan perbedaan berikut:

Mengatur timeout menyamar dengan ipchains -M -S, atau ipfwadm -M -s tidak apa-apa. Karena timeout lebih panjang untuk infrastruktur NAT baru, ini seharusnya tidak masalah.
The init_seq, delta dan previous_delta bidang dalam verbose masquerade daftar selalu nol.
Zeroing dan daftar counter pada saat yang sama `Z L 'tidak bekerja lagi: counter tidak akan memusatkan perhatian.
Kompatibilitas lapisan belakang tidak skala yang sangat baik untuk sejumlah besar koneksi: tidak menggunakannya untuk gerbang perusahaan Anda!
Hacker juga mungkin memperhatikan:

Sekarang Anda dapat mengikat port 61.000-65.095 bahkan jika Anda menyamar. kode menyamar digunakan untuk menganggap apa pun di kisaran ini adalah permainan yang adil, sehingga program tidak bisa menggunakannya.
The (berdokumen) `getsockname 'hack, yang program transparent proxy dapat digunakan untuk mengetahui tujuan sebenarnya dari koneksi tidak lagi bekerja.
The (berdokumen) mengikat-to-asing-alamat hack juga tidak dilaksanakan; ini digunakan untuk melengkapi ilusi proxy transparan.

3.1 Saya hanya ingin menyamar! Membantu!

Ini adalah apa yang kebanyakan orang inginkan. Jika Anda memiliki dialokasikan secara dinamis dialup IP PPP (jika Anda tidak tahu, ini adalah Anda), Anda hanya ingin memberitahu kotak Anda bahwa semua paket yang datang dari jaringan internal Anda harus dibuat agar terlihat seperti mereka datang dari dialup PPP kotak.

 # Load modul NAT (ini menarik dalam semua yang lain).
 modprobe iptable_nat

 # Dalam tabel NAT (-t nat), Menambahkan aturan (-A) setelah routing yang
 # (POSTROUTING) untuk semua paket keluar ppp0 (-o ppp0) yang mengatakan untuk
 # MASQUERADE koneksi (-j MASQUERADE).
 iptables-t nat -A POSTROUTING -o ppp0 -j MASQUERADE

 # Aktifkan IP forwarding
 echo 1> / proc / sys / net / ipv4 / ip_forward
Perhatikan bahwa Anda tidak melakukan apapun packet filtering di sini: untuk itu, melihat Packet Filtering HOWTO: `Mencampur NAT dan Packet Filtering '.

3.2 Bagaimana ipmasqadm?

Ini adalah jauh lebih basis niche pengguna, jadi saya tidak khawatir tentang kompatibilitas sebanyak. Anda hanya dapat menggunakan `iptables -t nat 'untuk melakukan port forwarding. Jadi misalnya, di Linux 2.2 Anda mungkin telah melakukan:

 # Linux 2.2
 # Teruskan TCP paket akan port 8080 pada 1.2.3.4 ke port 192.168.1.1 ini 80
 ipmasqadm portfw -a -P tcp L 1.2.3.4 8080 -R 192.168.1.1 80
Sekarang Anda akan melakukan:

 # Linux 2.4
 # Menambahkan aturan sebelum routing (-A PREROUTING) ke meja NAT (t nat) yang
 paket # TCP (-p tcp) akan 1.2.3.4 (-d 1.2.3.4) port 8080 (dport 8080)
 # Telah tujuan mereka dipetakan (-j DNAT) ke 192.168.1.1, port 80
 # (-to 192.168.1.1:80).
 iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 dport 8080 \  -j DNAT -to 192.168.1.1:80

4. Mengontrol Apa Untuk NAT

Anda perlu membuat aturan NAT yang memberitahu kernel apa koneksi untuk mengubah, dan bagaimana mengubahnya. Untuk melakukan hal ini, kita menggunakan sangat serbaguna iptables alat, dan kirim ke mengubah tabel NAT dengan menentukan `t nat 'pilihan.

Tabel aturan NAT berisi tiga daftar yang disebut `rantai ': setiap aturan diperiksa agar sampai satu pertandingan. Dua rantai disebut PREROUTING (untuk tujuan NAT, sebagai paket pertama datang di), dan POSTROUTING (Source NAT, sebagai paket meninggalkan). Ketiga (OUTPUT) akan diabaikan di sini.

Diagram berikut akan menggambarkan dengan cukup baik jika aku punya bakat artistik:

       _____ _____
      / \ / \
    PREROUTING -> [Routing] -----------------> POSTROUTING ----->
      \ D-NAT / [Keputusan] \ S-NAT /
                      |  ^
                      |  |
                      |  |
                      |  |
                      |  |
                      |  |
                      |  |
                      --------> Proses lokal ------
Pada masing-masing poin di atas, ketika sebuah paket melewati kita mencari apa hubungan hal ini terkait dengan. Jika itu sambungan baru, kami mencari rantai yang sesuai pada tabel NAT untuk melihat apa yang harus dilakukan dengan itu. Jawaban itu memberi akan berlaku untuk semua paket masa depan hubungan itu.

4.1 Simple Seleksi menggunakan iptables

iptables mengambil sejumlah pilihan standar seperti tercantum di bawah ini. Semua pilihan ganda-dash dapat disingkat, selama iptables masih bisa membedakan mereka dari pilihan lain yang mungkin. Jika kernel Anda memiliki iptables mendukung sebagai modul, Anda harus memuat modul ip_tables.o pertama: `ip_tables insmod '.

Pilihan yang paling penting di sini adalah pilihan pilihan meja, `t '. Untuk semua operasi NAT, Anda akan ingin menggunakan `t nat 'untuk tabel NAT. Pilihan kedua yang paling penting untuk digunakan adalah `-A 'untuk menambahkan aturan baru di akhir rantai (misalnya` -A POSTROUTING'), atau `-I 'untuk memasukkan satu di awal (misalnya` PREROUTING -I' ).

Anda dapat menentukan sumber ( `s 'atau` --source') dan tujuan ( `-d 'atau` -destination') dari paket Anda ingin NAT. Pilihan ini dapat diikuti oleh satu alamat IP (misalnya 192.168.1.1), nama (misalnya www.gnumonks.org), atau alamat jaringan (misalnya 192.168.1.0/24 atau 192.168.1.0/255.255.255.0).

Anda dapat menentukan masuk ( `i 'atau` --Dalam-interface') atau keluar ( `-o 'atau` --out-interface') antarmuka untuk mencocokkan, tapi yang Anda dapat menentukan tergantung pada rantai Anda menempatkan aturan menjadi: di PREROUTING Anda hanya dapat memilih antarmuka yang masuk, dan pada POSTROUTING Anda hanya dapat memilih antarmuka keluar. Jika Anda menggunakan salah satu, iptables akan memberikan kesalahan.

4.2 lebih halus Poin Of Memilih Apa Paket Untuk Mangle

Saya katakan di atas bahwa Anda dapat menentukan sumber dan tujuan alamat. Jika Anda menghilangkan opsi alamat sumber, maka setiap alamat sumber akan dilakukan. Jika Anda menghilangkan opsi alamat tujuan, maka setiap alamat tujuan yang akan dilakukan.

Anda juga dapat menunjukkan protokol tertentu ( `p 'atau` -protocol'), seperti TCP atau UDP; hanya paket protokol ini akan cocok dengan aturan. Alasan utama untuk melakukan hal ini adalah bahwa menetapkan protokol tcp atau udp kemudian memungkinkan opsi tambahan: khususnya `--source-port 'dan` -destination-port' pilihan (disingkat `--sport 'dan` - dport ').

Opsi ini memungkinkan Anda untuk menentukan bahwa hanya paket dengan sumber dan tujuan pelabuhan tertentu akan cocok dengan aturan. Hal ini berguna untuk mengarahkan permintaan web (TCP port 80 atau 8080) dan meninggalkan paket lainnya saja.

Pilihan ini harus mengikuti `p 'pilihan (yang memiliki efek samping memuat ekstensi perpustakaan bersama untuk protokol yang). Anda dapat menggunakan nomor port, atau nama dari file / etc / services.

Semua kualitas yang berbeda Anda dapat memilih paket dengan rinci secara detail menyakitkan di halaman manual ( man iptables ).

5. Mengatakan Cara Mangle The Paket

Jadi sekarang kita tahu bagaimana untuk memilih paket yang kita inginkan untuk memotong-motong. Untuk melengkapi aturan kami, kita perlu memberitahu kernel persis apa yang kita inginkan untuk lakukan untuk paket.

5.1 Sumber NAT

Anda ingin melakukan Sumber NAT; mengubah alamat sumber koneksi untuk sesuatu yang berbeda. Hal ini dilakukan dalam rantai POSTROUTING, sesaat sebelum akhirnya dikirim keluar; ini adalah detail penting, karena itu berarti bahwa apa pun pada kotak Linux itu sendiri (routing, packet filtering) akan melihat paket tidak berubah. Ini juga berarti bahwa `-o '(outgoing interface) pilihan dapat digunakan.

Sumber NAT ditentukan menggunakan `-j SNAT ', dan` -to-source' pilihan menentukan alamat IP, range alamat IP, dan port opsional atau jangkauan port (untuk UDP dan TCP protokol saja).

 ## Ubah alamat sumber ke 1.2.3.4.
 # Iptables -t nat -A POSTROUTING -o eth0 -j SNAT -to 1.2.3.4

 ## Ubah alamat sumber ke 1.2.3.4, 1.2.3.5 atau 1.2.3.6
 # Iptables -t nat -A POSTROUTING -o eth0 -j SNAT -to 1.2.3.4-1.2.3.6

 ## Ubah alamat sumber ke 1.2.3.4, port 1-1023
 # Iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT -to 1.2.3.4:1-1023
menyamar

Ada kasus khusus Sumber NAT yang disebut masquerading: itu seharusnya hanya digunakan untuk alamat IP dinamis ditugaskan, seperti dialups standar (untuk alamat IP statis, gunakan SNAT atas).

Anda tidak perlu dimasukkan ke dalam alamat sumber eksplisit dengan menyamar: ia akan menggunakan alamat sumber antarmuka paket yang akan keluar dari. Tapi yang lebih penting, jika link turun, koneksi (yang sekarang hilang pula) dilupakan, yang berarti gangguan lebih sedikit ketika koneksi datang kembali dengan alamat IP yang baru.

 ## Masquerade semuanya ppp0.
 # Iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

5.2 tujuan NAT

Hal ini dilakukan dalam rantai PREROUTING, seperti paket datang; ini berarti bahwa apa pun pada kotak Linux itu sendiri (routing, packet filtering) akan melihat paket akan nya tujuan `nyata '. Ini juga berarti bahwa `-i '(interface masuk) pilihan dapat digunakan.

Tujuan NAT ditentukan menggunakan `-j DNAT ', dan` -to-destination' pilihan menentukan alamat IP, range alamat IP, dan port opsional atau jangkauan port (untuk UDP dan TCP protokol saja).

 ## Ubah alamat tujuan ke 5.6.7.8
 # Iptables -t nat -A PREROUTING -i eth0 -j DNAT -to 5.6.7.8

 ## Ubah alamat tujuan ke 5.6.7.8, 5.6.7.9 atau 5.6.7.10.
 # Iptables -t nat -A PREROUTING -i eth0 -j DNAT -to 5.6.7.8-5.6.7.10

 ## Mengubah alamat tujuan lalu lintas web ke 5.6.7.8, port 8080.
 # Iptables -t nat -A PREROUTING -p tcp dport 80 -i eth0 \
         -j DNAT -to 5.6.7.8:8080
pengalihan

Ada kasus khusus dari NAT tujuan disebut redirection: itu adalah kenyamanan sederhana yang persis sama dengan melakukan DNAT ke alamat antarmuka yang masuk.

 ## Kirim lalu lintas pelabuhan-80 web yang masuk ke squid kami (transparan) proksi
 # Iptables -t nat -A PREROUTING -i eth1 -p tcp dport 80 \
         -j REDIRECT -to-port 3128
Perhatikan bahwa kebutuhan squid harus dikonfigurasi untuk tahu itu transparent proxy!

5.3 Pemetaan Dalam Depth

Ada beberapa kehalusan untuk NAT yang kebanyakan orang tidak akan pernah harus berurusan dengan. Mereka didokumentasikan di sini untuk penasaran.

Seleksi Beberapa Alamat di Range

Jika kisaran alamat IP yang diberikan, alamat IP untuk menggunakan dipilih berdasarkan IP yang paling saat ini digunakan untuk koneksi mesin tahu tentang. Hal ini memberikan primitif load-balancing.

Menciptakan Null NAT Pemetaan

Anda dapat menggunakan `j ACCEPT 'target untuk membiarkan koneksi melalui tanpa NAT berlangsung.

Standar Perilaku NAT

Perilaku default adalah untuk mengubah koneksi sesedikit mungkin, dalam batasan aturan yang diberikan oleh pengguna. Ini berarti kita tidak akan remap port kecuali kita harus.

Implisit Sumber Pelabuhan Pemetaan

Bahkan ketika tidak ada NAT diminta untuk sambungan, sumber terjemahan port dapat terjadi secara implisit, jika koneksi lain telah memetakan lebih dari yang baru. Pertimbangkan kasus menyamar, yang agak umum:

Sambungan web didirikan oleh kotak 192.1.1.1 dari port 1024 ke www.netscape.com port 80.
Hal ini menyamar dengan kotak menyamar menggunakan alamat sumber IP (1.2.3.4).
Kotak menyamar mencoba untuk membuat sambungan web untuk www.netscape.com port 80 dari 1.2.3.4 (alamat antarmuka eksternal) pelabuhan 1024.
Kode NAT akan mengubah sumber port koneksi kedua 1025, sehingga keduanya tidak berbenturan.
Ketika pemetaan sumber implisit ini terjadi, port dibagi menjadi tiga kelas:

Port di bawah 512
Port antara 512 dan 1023
Port 1024 dan di atas.
Sebuah port tidak akan secara implisit dipetakan ke kelas yang berbeda.

Apa Yang Terjadi Ketika NAT Gagal

Jika tidak ada cara untuk memetakan unik koneksi sebagai permintaan pengguna, itu akan turun. Hal ini juga berlaku untuk paket yang tidak dapat diklasifikasikan sebagai bagian dari hubungan apapun, karena mereka kelainan bentuk, atau kotak adalah dari memori, dll

Beberapa Pemetaan, Tumpang tindih dan Bentrokan

Anda dapat memiliki aturan NAT yang peta paket ke kisaran yang sama; kode NAT cukup pintar untuk menghindari bentrokan. Oleh karena itu memiliki dua aturan yang memetakan 192.168.1.1 alamat sumber dan 192.168.1.2 masing-masing ke 1.2.3.4 baik-baik saja.

Selanjutnya, Anda dapat memetakan lebih nyata, alamat IP yang digunakan, asalkan alamat tersebut melewati kotak pemetaan juga. Jadi jika Anda memiliki jaringan yang ditugaskan (1.2.3.0/24), tetapi memiliki satu jaringan internal menggunakan alamat tersebut dan satu menggunakan Swasta Alamat Internet 192.168.1.0/24, Anda cukup NAT 192.168.1.0/24 alamat sumber ke 1.2.3.0 jaringan, tanpa takut bentrok:

 # Iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \
         -j SNAT -to 1.2.3.0/24
Logika yang sama berlaku untuk alamat yang digunakan oleh kotak NAT itu sendiri: ini adalah bagaimana menyamar bekerja (dengan berbagi alamat antarmuka antara paket menyamar dan `paket nyata 'yang berasal dari kotak itu sendiri).

Selain itu, Anda dapat memetakan paket yang sama ke banyak target yang berbeda, dan mereka akan dibagikan. Misalnya, jika Anda tidak ingin untuk memetakan apa-apa atas 1.2.3.5, Anda bisa melakukan:

 # Iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \
       -j SNAT -to 1.2.3.0-1.2.3.4 -to 1.2.3.6-1.2.3.254

Mengubah tujuan Sambungan Lokal-Generated

Kode NAT memungkinkan Anda untuk memasukkan aturan DNAT dalam rantai OUTPUT, tapi ini tidak sepenuhnya didukung dalam 2,4 (bisa, tetapi membutuhkan pilihan baru konfigurasi, beberapa pengujian, dan sedikit wajar coding, jadi kecuali seseorang kontrak Rusty untuk menulis itu, saya tidak akan mengharapkan segera).

Keterbatasan saat ini adalah bahwa Anda hanya dapat mengubah tujuan ke mesin lokal (misalnya `j DNAT -to 127.0.0.1 '), tidak ke mesin lain, jika balasan tidak akan diterjemahkan dengan benar.

6. Protokol Khusus

Beberapa protokol tidak suka NAT'ed. Untuk masing-masing protokol ini, dua ekstensi harus ditulis; satu untuk pelacakan koneksi protokol, dan satu untuk NAT sebenarnya.

Di dalam distribusi netfilter, saat ini ada modul untuk ftp: ip_conntrack_ftp.o dan ip_nat_ftp.o. Jika Anda insmod ini ke kernel Anda (atau Anda kompilasi mereka secara permanen), kemudian melakukan apapun NAT pada koneksi ftp harus bekerja. Jika Anda tidak, maka Anda hanya bisa menggunakan ftp pasif, dan bahkan yang mungkin tidak bekerja andal jika Anda melakukan lebih dari Sumber sederhana NAT.

7. Peringatan tentang NAT

Jika Anda melakukan NAT pada sambungan, semua paket yang lewat kedua cara (dalam dan keluar dari jaringan) harus melewati kotak NAT'ed, jika tidak maka tidak akan bekerja andal. Secara khusus, kode pelacakan koneksi reassembles fragmen, yang berarti bahwa tidak hanya akan pelacakan koneksi tidak dapat diandalkan, tetapi paket Anda mungkin tidak mendapatkan melalui sama sekali, karena fragmen akan ditahan.

8. Sumber NAT dan Routing

Jika Anda melakukan SNAT, Anda akan ingin memastikan bahwa setiap mesin paket SNAT'ed pergi ke akan mengirim balasan kembali ke kotak NAT. Misalnya, jika Anda memetakan beberapa paket keluar ke alamat sumber 1.2.3.4, maka di luar router harus tahu bahwa itu adalah untuk mengirim paket balasan (yang akan memiliki tujuan 1.2.3.4) kembali ke kotak ini. Hal ini dapat dilakukan dengan cara berikut:

Jika Anda melakukan SNAT ke alamat kotak sendiri (yang routing dan semuanya sudah bekerja), Anda tidak perlu melakukan apa-apa.
Jika Anda melakukan SNAT ke alamat yang tidak digunakan pada LAN lokal (misalnya, Anda memetakan ke 1.2.3.99, IP gratis di jaringan 1.2.3.0/24 Anda), kotak NAT Anda akan perlu untuk menanggapi permintaan ARP untuk alamat serta sendiri: cara termudah untuk melakukannya adalah membuat alias IP, misalnya:

 # Alamat ip menambahkan 1.2.3.99 dev eth0

Jika Anda melakukan SNAT ke alamat yang sama sekali berbeda, Anda harus memastikan bahwa mesin paket SNAT akan memukul kehendak rute alamat ini kembali ke kotak NAT. Ini sudah dicapai jika kotak NAT adalah default gateway mereka, jika tidak Anda akan perlu untuk mengiklankan rute (jika menjalankan protokol routing) atau secara manual menambahkan rute ke setiap mesin yang terlibat.

9. Tujuan NAT Ke Jaringan Sama

Jika Anda melakukan port forwarding kembali ke jaringan yang sama, Anda perlu memastikan bahwa kedua paket masa depan dan membalas paket melewati kotak NAT (sehingga mereka dapat diubah). Kode NAT akan sekarang (sejak 2.4.0-test6), memblokir keluar ICMP redirect yang dihasilkan ketika NAT'ed paket kepala keluar antarmuka yang sama itu datang, tapi server menerima masih akan mencoba untuk membalas langsung ke client (yang tidak akan mengenali balasan).

Kasus klasik adalah bahwa staf internal mencoba mengakses `publik 'web server Anda, yang sebenarnya DNAT'ed dari alamat publik (1.2.3.4) ke mesin internal (192.168.1.1), seperti:

 # Iptables -t nat -A PREROUTING -d 1.2.3.4 \
         tcp -p dport 80 -j DNAT -to 192.168.1.1

Salah satu cara adalah dengan menjalankan server DNS internal yang tahu yang sebenarnya (internal) alamat IP dari situs web publik Anda, dan meneruskan semua permintaan lainnya ke server DNS eksternal. Ini berarti bahwa penebangan di server web Anda akan menampilkan alamat IP internal dengan benar.

Cara lain adalah memiliki kotak NAT juga memetakan alamat IP sumber untuk sendiri untuk koneksi ini, membodohi server ke membalas melalui itu. Dalam contoh ini, kita akan melakukan hal berikut (dengan asumsi alamat IP internal kotak NAT adalah 192.168.1.250):

 # Iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 \
         tcp -p dport 80 -j SNAT -to 192.168.1.250
Karena aturan PREROUTING akan dijalankan pertama, paket sudah akan ditakdirkan untuk web server internal yang: kita bisa mengatakan mana yang bersumber internal oleh alamat IP sumber.

B.Referensi
http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO.html

Previous
Next Post »