NAT / PortForwarding / TCP / IP nasıl çalışır?


12

Geçenlerde NAT'ın nasıl çalıştığı başlıklı bir makale okudum . Bazı şeyler hala bana açık değil. Birisi açıklayabilirse minnettar olurum.

Aşağıda, makalenin DynamicNAT ile ilgili en kafa karıştırıcı kısmı yer almaktadır:

Saplama etki alanındaki bir bilgisayar, Web sunucusu gibi ağ dışındaki bir bilgisayara bağlanmaya çalışır.

Yönlendirici, paketi saplama etki alanındaki bilgisayardan alır. Yönlendirici, bilgisayarın yönlendirilemeyen IP adresini bir adres çeviri tablosuna kaydeder. Yönlendirici, gönderen bilgisayarın yönlendirilemeyen IP adresini, benzersiz IP adresleri aralığındaki ilk kullanılabilir IP adresiyle değiştirir. Çeviri tablosunda, bilgisayarın benzersiz IP adreslerinden biriyle eşleşen yönlendirilemeyen IP adresinin eşlemesi var.

Bir paket hedef bilgisayardan geri geldiğinde, yönlendirici paket üzerindeki hedef adresi denetler. Daha sonra paketin saplama etki alanındaki hangi bilgisayarın ait olduğunu görmek için adres çeviri tablosuna bakar.

1) NAT paketin hedef bilgisayara "geri geldiğini" nasıl biliyor?

2) LAN'daki diğer bilgisayarlar aynı sunucuya bağlıysa ne olur? NAT hangi paketin nereye "geri dönmesi" gerektiğini nasıl biliyor?

3) Paket üstbilgisi değişikliği, "kaynak IP" nin kurbanın IP'si ile değiştirildiği bir İnternet saldırısı yapılmasına izin veriyor mu ve yanıtlayan sunucu kurbanı istenmeyen paketlerle dolduracak mı?

Sanırım birden fazla saldırganın dahil olması gerekecek ...

4) StaticNAT, tüm portların PortForwarding'e eşdeğer midir?

Yanıtlar:


11

Ev yönlendiricilerimizde çoğunlukla kullandığımız NAT (Ağ adresi çevirisi) ve PAT (Bağlantı Noktası Adresi Çevirisi) arasında genel bir yanlış anlama vardır .

NAT
Aşağıdaki topolojiye sahip bir ağımız olduğunu varsayalım:

Private_Network <-------> Yönlendirici <-------> The_Internet

Arayüz Router bağlı olan Private_Network sahip özel bir IP adresi yani benzersiz olmayan birinin The_Internet . Öte yandan, NAT durumunda , Yönlendiricinin The_Internet'e bağlı birden fazla arayüzü vardır . Her arabirimin The_Internet'te benzersiz bir IP adresi vardır . Şimdi gelelim varsayalım Host_A ve Host_B içindedir Private_Network ve erişim için her ikisi de Talep Website_X içinde The_Internet aynı anda. IP'ler ve Host_A portlarıadlı kullanıcının paketi:

Kaynak IP: Host_A'nın özel IP
Kaynak Bağlantı Noktası: Host_A
Hedef IP üzerindeki bir bağlantı noktası : Website_X'in genel / benzersiz IP
Hedef Bağlantı Noktası: Website_X sunucusunun dinlediği bir bağlantı noktası

ve aynı şekilde Host_B'den gelen bir paket için .
Kaynak IP değişmeden bırakılırsa, Website_X özel, yani benzersiz olmayan bir IP adresine yanıt verir ve bu nedenle paket asla geri dönüş yolunu bulamaz. Bu sorunu çözmek için Yönlendirici , The_Internet'e bağlı benzersiz IP adreslerinden birinin kullanılmadığını kontrol eder. Bu durumda, aşağıdaki eşlemeyi yapar:

Host_A'nın özel IP'si ======= Yönlendiricinin_unique_IP_K

ve şu andan itibaren başladığı paket Host_A olacak Website_X ve şimdi arayüzünü ayrılıyor Router bağlı The_Internet formu sahip olacaktır:

Kaynak IP: Router's_unique_IP_K
Kaynak Bağlantı Noktası: Host_A
Hedef IP'sindeki bir bağlantı noktası : Website_X'in genel / benzersiz IP
Hedef Bağlantı Noktası: Website_X sunucusunun dinlediği bir bağlantı noktası

Böylece, özel IP'lerden genel IP'lere bire bir ilişki olduğunu anlayabilirsiniz. Bir paket itibaren gelen nedenle Website_X için Router , bu ilişkinin kontrol edilir ve hedef IP adresi, özel birine arkasını değiştirdi ve sağ ana bilgisayara başarıyla teslim edilir.
Gördüğünüz gibi, bu yöntem oldukça basittir, ancak büyük bir dezavantajı vardır: her özel ana makinenin ayrılmış benzersiz bir IP adresine sahip olması gerekir, bu da pahalıdır, bu nedenle özel ağdaki ana bilgisayarlardan daha az benzersiz IP adresine sahip olmayı seçeriz. Bu nedenle, tüm özel ana bilgisayarlar aynı anda The_Internet'e erişmeye çalışırsa , bunların yalnızca bir alt kümesi, Yönlendiricinin kullandığı genel IP adreslerinin sayısına eşittir, erişimi olacak ve gerisi reddedilecek.
Karşı koymak için PAT yarattık .

PAT
PAT , ev yönlendiricilerimizin büyük çoğunluğunu kullanıyor. Temel sınırlama, Yönlendiricinin The_Internet'e bağlandığı tek bir benzersiz IP adresine sahip olmasıdır , ancak yine de özel ağdaki birden çok ana bilgisayarın The_Internet'e aynı anda erişmesine izin vermek istiyoruz .
Bunu yapma yöntemimiz, NAT'ın bunu önemli bir farkla yapma şekline "benzer" dir : IP adresi havuzu tutan Yönlendirici yerine , bağlantı noktası numaralarının bulunduğu bir havuz tutar. Daha açık bir şekilde, gelen bir paket Yönlendirici gelen Host_A içinde Private_Network kaderinde Website_X içindeİnternetin biçimi şu şekildedir:

Kaynak IP: Host_A'nın özel IP
Kaynak Bağlantı Noktası: Host_A
Hedef IP üzerindeki bir bağlantı noktası : Website_X'in genel / benzersiz IP
Hedef Bağlantı Noktası: Website_X sunucusunun dinlediği bir bağlantı noktası

Şimdi Yönlendirici iki görev yapacak:

  1. Kaynak IP'yi Yönlendiricinin benzersiz genel IP'si olarak değiştirecek VE
  2. Kaynak Bağlantı Noktasını, Yönlendiricinin sürdürdüğü ve henüz kullanılmadığı bir havuzdaki bağlantı noktasına değiştirir , örneğin Port_Z

ve şu andan itibaren başladığı paket Host_A olacak Website_X ve şimdi arayüzünü ayrılıyor Router bağlı The_Internet formu sahip olacaktır:

Kaynak IP: Router's_unique_IP_K
Kaynak Bağlantı Noktası: Port_Z
Hedef IP: Website_X'in genel / benzersiz IP
Hedef Bağlantı Noktası: Website_X sunucusunun dinlediği bir bağlantı noktası

ve Yönlendirici aşağıdaki eşlemeyi tutacaktır:

Host_A'nın özel IP adresi ve Host_A üzerindeki bir bağlantı noktası ======= Port_Z

Bu neden işe yarıyor?
Şimdi bir paket geri geldiğinde, Yönlendirici hedef port numarasını kontrol eder ve hedef IP adresini ve hedef port numarasını önceden belirtilen eşlemeye göre değiştirir ve paket başarıyla teslim edilir.

Aynı Ana Bilgisayarda birden fazla uygulama çalıştırırsam ne olur?
Farklı uygulamaların tanımı gereği farklı bağlantı noktaları olacaktır, böylece Yönlendiriciden farklı bir bağlantı noktasına eşlenirler .

Birden fazla Ana Bilgisayar aynı anda The_Internet'e erişmeye çalışırsa ve hepsi aynı uygulamayı kullanırsa ne olur?
Farklı Ana Makinelerin tanımı gereği farklı özel IP adresleri olacaktır, bu nedenle Yönlendiriciden farklı bir bağlantı noktasına eşlenirler .

PAT , çapraz katman gri bir alanda tehlikeli bir şekilde dengeleniyor. Bağlantı noktası numaraları Aktarım Protokolü'nün bir parçası iken Yönlendiricilerin İnternet Protokolü'ne kadar çalışmasına izin verilir. Teknik olarak konuşmak, protokoller tarafından izin verilmeyen bir şeydir. Bu nedenle, en azından teorik olarak potansiyel tehlikeler vardır: liman havuzu sınırlıdır. Bu nedenle özel ağım 1000 Ana Bilgisayardan oluşuyorsa ve her biri port_pool / 10 uygulamaları çalıştırıyorsa, yönlendiricideki eşleme tablosunda kullanılabilir girdiler tükenecek ve uygulamalara erişim reddedilecektir.

Bu cevap, hedeflenen uzunluğumu büyük ölçüde aştı, ancak umarım yardımcı oldu.


2
Birkaç not, Öncelikle, RFC'lerin "Temel NAT" ve "PAT" olarak adlandırdıkları ifadeye RFC'lerin "NAPT" olarak adlandırdıkları öğeye başvurmak için "NAT" terimini kullanıyorsunuz. RFC'ler genellikle "Temel NAT" ve "NAPT" yi kapsayan bir şemsiye terim olarak "NAT" kullanır. İkinci olarak, "Temel NAT" bile TCP / UDP üstbilgisini değiştirmelidir, çünkü TCP / UDP üstbilgisi IP adreslerini kapsayan bir sağlama toplamı içerir.
Peter Green

@PeterGreen ama cevabın özü doğru mu?
lpydawa

6

Yönlendirici, paketlerin nereye ait olduğunu bilir, çünkü The router saves ... an address translation table.hangi iç-dış adres çevirisini yaptığını hatırlar. Bu nedenle, bir iç adres bir dış adrese eşittir ve internet dışı hedef ilgisizdir. Bu, elbette, neredeyse tüm bağlantıları izleyen tüm NAT yönlendiricilerinde bulunan güvenlik duvarını yok sayar:

(inside) src:ip+port,dst:ip+port <-> (outside) src:ip+port,dst:ip+port

NAT herhangi bir ip ve / veya port kombinasyonunu değiştirebilir.

# 3 tamamen farklı bir konu: kimlik sahtekarlığı

# 4 "Statik NAT" veya "1'e 1", yalnızca adres haritasıdır. Bu nedenle, bağlantı noktası (ve hatta protokol: tcp, udp, gre, vb.) Önemsizdir.


2) LAN'daki diğer bilgisayarlar aynı sunucuya bağlıysa ne olur? NAT hangi paketin nereye "geri dönmesi" gerektiğini nasıl biliyor?
user2449761

1 ve 2 aynı cevaptır: çünkü bağlantıları / çevirileri izliyor. İki iç ana bilgisayar aynı dış adresle eşlenmeyecektir; bu nedenle eşlenen bir dış adrese gelen tüm paketlerin otomatik olarak yalnızca bir iç hedefi vardır. Yalnızca bir dış (genel) adresiniz varsa, o zaman "NAT" değil, PAT (liman çevirisi)
Ricky Beam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.