Bagaimana NAT berbagi satu alamat IPv4 publik di beberapa alamat IPv4 pribadi [ditutup]


10

Saya pikir itu adalah pertanyaan yang sangat klasik, tetapi, saya pikir saya memiliki latar belakang, saya tidak memiliki cukup kosa kata lagi untuk mencari dan memahami dengan benar di Web.

Katakanlah saya memiliki jaringan rumah dengan 192.168.0.1 (IP.1) dan 192.168.0.2 (IP.2) dan kami berdua bermain untuk Counter Strike memukul server luar yang persis sama.

Bagaimana router rumah saya tahu paket mana yang akan masuk ke IP.1? Saya sering membaca hal-hal dengan alamat NAT dan xxx.xxx/y. ** Di mana tertulis bagian / y di tumpukan TCP / IP?

Apakah kita benar-benar membutuhkan NAT untuk itu? Apa yang saya mengerti dari artikel Wikipedia adalah bahwa NAT dibuat untuk mengoptimalkan alamat IP, ketika beberapa komputer dimatikan. Apakah itu juga memungkinkan untuk menghubungkan 5 perangkat dengan hanya 1 IP publik?


Satu-ke-Banyak harus menjawab pertanyaan Anda. Selain itu, pertanyaan tentang jejaring rumah dan pendidikan tingkat pemula, tidak cocok untuk situs ini.
Craig Constantine

Jawaban:


14

(Untuk yang berikut ini saya akan mengabaikan tindakan pencarian DNS atau lapisan dua, karena itu bukan bagian yang relevan untuk cerita NAT.)

Setiap koneksi TCP adalah tuple dari empat bagian:

<source IP> <source port> <destination IP> <destination port>

Singkatnya: IP tujuan digunakan untuk mendapatkan paket ke mesin yang benar, port tujuan digunakan untuk mendapatkan paket pada mesin itu ke program / sesi yang benar. Sumber IP digunakan untuk mengetahui ke mana harus mengirim balasan. Hal yang sama berlaku untuk port sumber. Ketika balasan dikirim, sumber dan tujuan ditukar dengan mudah.

Mari kita mulai dengan dua komputer tanpa NAT:

  • Komputer memiliki IP 1.1.1.1
  • Server web memiliki IP 3.3.3.3
  • Port standar untuk HTTP adalah 80

Ketika komputer meminta halaman web, pertama-tama komputer akan memilih portnumber acak yang tidak digunakan dari rentang acak (1024-65535). Ayo pilih 2345. Maka urutan berikut akan terjadi: Komputer mengirim paket itu dengan: IP 1.1.1.1sumber 2345, port sumber , IP 3.3.3.3tujuan, port tujuan 80. Paket-paket tiba di server web, ia melihat IP dan port sendiri 80, jadi ia tahu ini adalah permintaan untuk halaman web. Server web kemudian mengirimkan halaman web kembali dalam paket-paket dengan Source IP 3.3.3.3, Source port 80, IP 1.1.1.1tujuan, port tujuan 2345. Komputer menerima paket-paket ini, dan tahu halaman web yang diminta itu, karena portnumber 2345.

Kombinasi port ini sering ditulis demikian: 1.1.1.1:2345dan 3.3.3.3:80.

Sekarang, jumlah komputer di internet jauh melebihi jumlah alamat IPv4 yang tersedia. Untuk mempertahankan ruang alamat, serangkaian rentang alamat pribadi diperkenalkan, yang dapat digunakan secara bebas untuk berbagi alamat. Rangese ini disebut sebagai RFC1918 dan adalah sebagai berikut:

  • 192.168.0.0 - 192.168.255.255
  • 172.16.0.0 - 172.31.255.255
  • 10.0.0.0 - 10.255.255.255

Alamat-alamat ini tidak ada dalam tabel perutean internet, jadi jika Anda akan mengirim paket dengan tujuan dalam rentang ini di tulang punggung internet, mereka hanya akan dijatuhkan. Ini karena jutaan orang menggunakan alamat yang sama. Alamat-alamat ini perlu diterjemahkan ke sesuatu yang bermanfaat untuk internet. Di sinilah Terjemahan Alamat Jaringan masuk:

Kami memiliki dua komputer:

  • A: 192.168.0.1dan B:192.168.0.2
  • Gateway mereka memiliki IP publik 1.1.1.1.
  • Kami menyimpan server web yang sama.
  • Kedua komputer menginginkan halaman web yang sama dari server yang sama.

Pertama-tama kedua komputer memilih port acak: katakanlah: 192.168.0.1:2345dan 192.168.0.2:5432.

Komputer A mengirim paket itu dengan sumber 192.168.0.1:2345dan tujuan 3.3.3.3:80. Gateway menerjemahkan paket ini ke 1.1.1.1:2345tujuan sumber 3.3.3.3:80dan mengingat semua balasan ke kombinasi ini 192.168.0.1. Jadi, ketika menerima balasan dengan sumber 3.3.3.3:80dan tujuan 1.1.1.1:2345, ia akan menerjemahkannya ke sumber 3.3.3.3:80dan tujuan 192.168.0.1:2345dan mengirimkan paket.

Komputer B mengirim paketnya dengan sumber 192.168.0.2:5432dan tujuan 3.3.3.3:80. Gateway menerjemahkan paket ini ke 1.1.1.1:5432tujuan sumber 3.3.3.3:80dan mengingat semua balasan ke kombinasi ini 192.168.0.2. Jadi, ketika menerima balasan dengan sumber 3.3.3.3:80dan tujuan 1.1.1.1:5432, ia akan menerjemahkannya ke sumber 3.3.3.3:80dan tujuan 192.168.0.2:5432dan mengirimkan paket.

Jika kedua komputer kebetulan memilih nomor port sumber yang sama, gateway hanya akan memilih nomor port sumber acak gratis lainnya, dan ingat untuk menerjemahkan nomor port juga. Ini kadang-kadang disebut sebagai PAT (Port Address Translation). Ini pada dasarnya adalah bagian dari NAT.

Ada beberapa implementasi untuk ini semua. Gateway mungkin hanya mengingat "Komputer X menggunakan port sumber Y" dan meneruskan apa pun dengan port Y ke komputer X. Mungkin ingat bahwa Komputer X menggunakan port sumber Y dan tujuan Z "dan hanya meneruskan apa pun dari port Z ke port Y kembali ke komputer X. Atau ada opsi yang mengingat seluruh tuple dan hanya mengirim lalu lintas ke komputer X yang cocok dengan seluruh sumber / tujuan ip dan port.


Terima kasih. Saya berpikir bahwa setiap klien akan mengirim dengan port 80 ke port 80 lainnya. Saya pikir banyak non-spesialis percaya sama.
Nicolas Zozol
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.