Balasan NAT dan UDP

20

Tolong periksa kewarasan.

Jika saya mengirim paket UDP dari Mesin A di belakang NAT ke port Mesin B N, di mana Mesin B berada di luar NAT (di tempat lain di Internet), dapatkah saya berharap bahwa NAT akan mengirimkan paket UDP yang diterima dari Mesin B di port N kembali ke port N pada Mesin A, tanpa memerlukan penerusan port manual pada NAT?

Tomfanning
sumber

Jawaban:

21

Hanya jika port sumber dari datagram keluar asli juga port N, dan jika NAT tidak memilih untuk mengapung port sumber.

Artinya, datagram UDP pertama dari Mesin A terlihat seperti ini di LAN Anda:

       Source IP: MachineAPrivate  
     Source Port: PortA     <-- note this is typically different than the destination port  
  Destination IP: MachineBPublic  
Destination Port: PortN  

Kemudian, setelah diterjemahkan oleh NAT ke arah outbound, terlihat seperti ini:

       Source IP: NATPublic  
     Source Port: PortC   <-- note this may or may not be the same as "PortA" above  
  Destination IP: MachineBPublic  
Destination Port: PortN  

Sekarang, ketika Mesin B membalas, balasan biasanya terlihat seperti ini:

       Source IP: MachineBPublic  
     Source Port: PortN  
  Destination IP: NATPublic  
Destination Port: PortC  

Kemudian, setelah melalui proses terjemahan NAT inbound:

       Source IP: MachineBPublic  
     Source Port: PortN  
  Destination IP: MachineAPrivate  
Destination Port: PortA  

Jadi, JIKA Mesin A mengirimkan frame dari port sumber yang sama dengan port tujuan ("Port N"), dan JIKA NAT dapat mempertahankan port sumber tersebut (yaitu, itu dikonfigurasi untuk mempertahankan port sumber bila memungkinkan, dan port sumber itu tidak digunakan), MAKA Anda dapat mengharapkan balasan ke "Port N" untuk kembali ke Mesin A.

Berikut referensi otoritatif tentang perilaku NAT UDP yang tepat:
RFC 4787 / BCP 127: Network Address Translation (NAT) Persyaratan Perilaku untuk Unicast UDP

Spiff
sumber
3

Tutup, tetapi Mesin B perlu melihat alamat sumber dan nomor port yang sebenarnya diterima, yang mungkin berbeda dari N.

NAT di Mesin A mungkin tidak menggunakan port N yang sama dengan yang dikirim Mesin A. (Bayangkan mesin C di belakang NAT yang sama juga mengirim pada port N: mereka tidak bisa sama-sama menggunakannya.) Jadi Mesin B mungkin melihat port sumber yang berbeda, M. Tetapi jika NAT melakukan itu, maka seharusnya menerima lalu lintas yang dikirim kembali ke port M dan secara otomatis memetakannya kembali ke N di Mesin B.

Dengan kata lain, selama Mesin B mengirim kembali ke alamat sumber dan port sumber yang diberikan dalam paket yang diterimanya, Anda dapat mengharapkan paket kembali untuk menemukan jalan kembali ke sumber semula. Ini mengasumsikan bahwa paket kembali dikirim dalam waktu singkat, karena aturan NAT otomatis cenderung habis setelah beberapa menit.

Seth Noble
sumber
-1

Saya tidak mengharapkan itu.

Anda dapat memiliki banyak IP di belakang NAT, jadi Anda harus memilih yang mana harus diteruskan. Di luar NAT, hanya IP router yang terlihat dan IP NAT internal tidak terlihat.

UDP tidak membentuk koneksi, tetapi hanya datagram yang bepergian melintasi jaringan.

Ada juga perbedaan antara port pengirim dan nomor port penerima.

rumburak
sumber
Anda benar bahwa UDP tidak "membentuk koneksi" namun port sumber dan tujuan berpasangan sebenarnya memungkinkan NAT secara unik mengidentifikasi IP mana di belakang NAT untuk mengirim paket ke
portforwardpodcast