Bagaimana cara server NAT meneruskan ping paket balasan gema ICMP ke pengguna?


29

NAT menggunakan kombinasi nomor port alamat IP untuk hash permintaan keluar. Karena permintaan ping terdiri dari paket permintaan gema ICMP, mereka tidak memiliki nomor port yang terkait. Bagaimana cara server NAT meneruskan balasan ke host di dalam jaringan?


Jawaban:


34

Untuk ICMP permintaan / balasan jenis pesan seperti Echoes (ping), NAPT menggunakan ICMP Query ID (kadang-kadang hanya disebut ICMP ID) dengan cara yang sama seperti menggunakan nomor port TCP atau UDP.

Untuk pesan kesalahan ICMP seperti Destination Unreachable, ia menggunakan salinan internal paket ICMP dari header frame yang menyebabkan kesalahan untuk mencari tahu pemetaan mana dalam tabel NAT yang akan digunakan untuk menerjemahkannya.

Prosedur-prosedur ini direferensikan secara singkat dalam beberapa RFC terkait-NAT, tetapi saya kesulitan menemukan satu yang secara eksplisit menjabarkan prosedur. Lihat "NAT Tradisional", RFC3022 , bagian 4.1.

Ini tidak bertentangan dengan pemetaan TCP atau UDP karena dalam implementasi NAPT yang baik, protokol adalah salah satu bagian dari informasi yang disimpan dalam entri tabel NAT untuk membuatnya unik.


1
dapatkah Anda mengutipnya dari suatu tempat.
Rohit Banga

bagaimana jika id ICMP berbenturan dengan nomor port yang digunakan proses saya.
Rohit Banga

@iamrohitbanga OK Saya memperluas jawaban saya untuk mencakup pertanyaan Anda selanjutnya.
Spiff

0

Saya melakukan simulasi kecil (berdasarkan alat CLI GSN3 Kali Linux), untuk memeriksa apa yang terjadi ketika ICMP berbenturan (tampaknya, itu bisa jadi spesifik vendor):

Tentang permintaan / tanggapan ICMP Sebelum NAT diperlihatkan situasinya, ketika Pengidentifikasi permintaan ICMP dari 2 perangkat (dengan IP 10.0.0.1 dan 10.0.0.2 dengan hormat) menjadi sama.

Pada saat yang sama pada permintaan / tanggapan ICMP Setelah NAT ditunjukkan bahwa Identifier dari sesi ICMP yang bentrok diubah menjadi 0 oleh NAT, dan bertambah dari sana pada saat itu.

Sebagai ringkasan dapat dikatakan bahwa NAT Linux menangani bentrok pengidentifikasi ICMP pada on (Karena pengidentifikasi ICMP tidak berubah sebelum NAT).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.