Perbedaan antara SNAT dan Masquerade

39

Saya bingung apa perbedaan sebenarnya antara SNAT dan Masquerade?

Jika saya ingin berbagi koneksi internet saya di jaringan lokal maka apakah saya harus memilih SNAT atau Masquerade?

Chankey Pathak
sumber

Jawaban:

41

The SNATTarget mengharuskan Anda untuk memberikan alamat IP untuk berlaku untuk semua paket keluar. The MASQUERADETarget memungkinkan Anda memberikan sebuah antarmuka, dan alamat apa pun yang pada antarmuka yang adalah alamat yang diterapkan ke semua paket keluar. Selain itu, dengan SNAT, pelacakan koneksi kernel melacak semua koneksi ketika antarmuka diturunkan dan dibawa kembali; hal yang sama tidak berlaku untuk MASQUERADEtarget.

Dokumen yang bagus termasuk HOWTO di situs Netfilter dan iptableshalaman manual .

Shawn J. Goff
sumber
2
Saya mengalami kesulitan memahami manfaat SNAT. Mengapa penting jika kernel melacak koneksi atau tidak ketika antarmuka turun? Mengenai MASQUERADE, netfilter docs mengatakan "Tetapi yang lebih penting, jika tautannya terputus, koneksi (yang sekarang hilang juga) dilupakan, yang berarti lebih sedikit gangguan ketika koneksi kembali dengan alamat IP baru." Kedengarannya masuk akal (meskipun apa gangguannya?) Sekarang melihat SNAT, apa manfaat melacak koneksi yang hilang? Mengapa tidak menggunakan MASQUERADE setiap saat?
Carl G
1
@ CarlG, saya kira gangguan akan terjadi dengan dilacak secara permanen -j SNAT(sebagai lawan dari pelacakan daur ulang dengan -j MASQUERADE) ketika koneksi keluar baru dari simpul LAN menggunakan nomor port sumber yang sama dengan koneksi keluar terputus dari simpul LAN yang sama. Dalam hal ini, saya bisa membayangkan paket yang masuk dari koneksi keluar lama dikirim ke node, membingungkan tumpukan TCP-nya. Sedangkan untuk manfaat -j SNAT, bagaimana jika kotak NAT dikonfigurasi dengan alamat IP eksternal yang sama dan kernel terus meneruskan paket dari koneksi lama alih-alih membalas dengan RST?
belut ghEEz
SNAT berguna, jika misalnya Anda memiliki beberapa alamat IP yang ditetapkan untuk antarmuka keluar dan ingin sumber NAT menjadi salah satu dari ini.
pgoetz
20

Pada dasarnya SNATdan MASQUERADEmelakukan hal yang sama sumber NAT di tabel nat dalam rantai POSTROUTING.

Perbedaan

  • MASQUERADEtidak memerlukan --to-sourcekarena dibuat untuk bekerja dengan IP yang ditugaskan secara dinamis

  • SNAT hanya bekerja dengan IP statis, itulah sebabnya mengapa --to-source

  • MASQUERADEmemiliki overhead tambahan dan lebih lambat daripada SNATkarena setiap MASQUERADEtarget waktu terkena paket, ia harus memeriksa alamat IP untuk digunakan.

CATATAN : Kasus penggunaan umum untuk MASQUERADE: AWS EC2 misalnya dalam VPC, ia memiliki IP pribadi dalam VPC CIDR (misalnya 10.10.1.0/24) - 10.10.1.100 misalnya, ia juga memiliki IP publik sehingga dapat berkomunikasi dengan Internet (anggap itu dalam subnet publik) melalui mana IP pribadi 1: 1 NAT. IP publik dapat berubah setelah reboot misalnya (jika BUKAN EIP), MASQUERADEadalah opsi yang lebih baik dalam kasus penggunaan ini.

Penting: Masih dimungkinkan untuk menggunakan MASQUERADEtarget dengan IP statis, cukup perhatikan overhead tambahan.

Referensi

Terry Wang
sumber