NAT

NAT (Network Address Translation)

PAT(Port Address Translation)

Pat; Cisco'da da Overloading olarak ifade ediliyor.

Bir networkte bulunan bilgisayarların kendi networkü dışında farklı bir networke veya internete çıkarken farklı bir ip adresi kullanabilmesi için geliştirilmiş bir internet protokolüdür.

Nat'ın uygulanmış olduğu bir router ya da router özellikte bir network cihazı modem gibi cihazlar NAT tablosu adı verilen tablo yardımı ile ip dönüştürme işlemi yapıyor. İç networkten dış networke gitmek için bir kullanıcı tarafından gönderilen paket router'a geldiğinde router bu paketin ipsini NAT tablosuna uygun olarak ip dönüşümüne tabii tutuyor yani Private ip adresini Public ip adresine dönüştürüyor ve bu şekilde dış networke gönderiyor. Routerın dönüştürerek değiştirdiği bu ip artık kullanıcının internette bilinen ip adresi oluyor.

İnside Local : İç Yerel Adres Outside Local: Dış Yerel Adres İnside Global: İç Global Adres Outside Global : Dış Global Adres

İç networkümüzde kullanmış olduğumuz bilgisayarın ipsi inside local adres oluyor

Server dışarı networkte yani internette. Dış networkte olan bir server yani global bir network olarak değerlendiriyoruz. Bu nedenle outside global oluyor.

İnside global ise local areada bulunan private ip adresine sahip 192.168.1.100 bilgisayarımızı NATladığımızda dışarı çıktığında global networkte yani outside de kullanmış olduğu ip inside global oluyor. Yani internet ortamında kullanmış olduğu public ip adres

İnternette dolaştığı ip adresine inside global ip adresi deniliyor.

Outside Local ise internette bulunan yani outside da bulunan server'ın ipsinin local areadan görünümüne deniliyor.

Yani biz server'ın 3.3.3.3 olan ipsini local areada nasıl görüyorsak o bizim outside localimiz oluyor.Router üzerinde herhangi bir dönüşme olmuyor. Outside local ile outside globalde biz aynı ip adresini görüyoruz.

Static NAT

Static NAT ile private bir ip adresini public bir ip adresine dönüştürüyoruz yani yerel alanda kullanılan özel bir ip adresini, dışarıda örneğin internette kullanılabilecek şekilde genel ip'ye birebir dönüştürüyoruz. Burada oluşturulan NAT tablosu birebir eşleştirilerek dolduruluyor. Yani sistem yöneticisi tarafından dönüştürülecek olan private ip'ler teker teker public ip'lere eşleştiriliyor.

Bu yöntem local alandaki bir cihazımızın dış dünyadan erişilmesini istediğimizde yani internette erilmesini istediğimizde kullandığımız bir yöntem.Örneğin iç networkümüzde kullandığımız bir web server'ımız var. Bu web serverın internete açılmasını internette erilmesini istiyorsak bu yöntemi kullanabiliriz. Web server'ımızın ipsi 192.168.1.1 bu ipyi 87.10.10.10 ipsine dönüştürüyoruz. Dışarıdan geldiğinde sadece 87.10.10.10 ipsi üzerinden web serverına erişiliyor.

Burada web server haricinde dışarıdan hiçbir cihaza erişilemiyor.

Yani static natta birebir dönüştürme yapılıyor.

Dinamik NAT

Dinamik NAT'ta public adres grubu alınıyor. Yani biz internet servis sağlayıcımızdan bir grup ip alıyoruz. Bu almış olduğumuz ip adresleri dinamik olarak private ip adreslerine dönüştürülüyor.

Yani buradaki işlem dinamik olarak yapılıyor. Eşleştirme dinamik yapılıyor.Sistem yöneticisi tarafından public (genel) ip havuzu belirleniyor. Daha sonra private ip , public ipden birisi ile eşleşip dış networke çıkıyor. Örnek olarak 192.168.1.1 ip adresi 87.10.10.10 ile eşleşerek çıkıyor. 192.168.1.2 ip adresi 87.10.10.11 ip adresi ile eşleşerek çıkıyor.

Dinamik NAT günümüzde çok da kullanılan bir yöntem değil. Daha çok farklı şirketlerin beraber kullanmasında yani farklı şirketlerin aynı networkü kullanmasında kullanılabiliyor ama günümüzde çok fazla kullanılmıyor.

PAT(Port Adress Translation)

PAT, public (genel) ip adresinden sadece bir adet ip adresi bulunuyor ve yerel alanda bulunan tüm ip'ler bu tek bir ip üzerinden internete ya da dış networke çıkabiliyor. Bunun en iyi örneği evimizdeki ADSL modemler. Modemler internet servis sağlayıcısından bir adet ip alıyor ve tüm cihazlar bu tek ip üzerinden internete çıkıyorlar.

Pat'da farklı olan şey, yerel alandaki private ip adresine sahip cihazın public ip adresi ile eşleşirken bir tane port numarası atanıyor. Ip bu port numarası ile eşleştirilerek internete çıkıyor. Yani giderkende gelirken de o port numarasına göre gidip geliyor.

Tek bir public ip adresi üzerinden, yerel alanda bulunan birden fazla ip adresi ile dış networke çıkıldığı için overloading yani aşırı yükleme olarak da ifade ediliyor.

PAT'ı Overloading NAT olarak ifade edilebiliyor. PAT'da NAT'ın bir çeşidi.

Statik NAT ÖRNEK

Outside networkü internet olarak düşünürsek. R1 routerımızı evimizdeki, şirketimizdeki modem olarak düşünebiliriz. R2 routerı ise servis sağlayıcıdaki bir router olarak değerlendirebiliriz. ISP bize 87.10.10.10 ip adresini tahsis ediyor gibi düşünebilirsiniz.

R1 den R2 ye static bir route yazdık ve interface iplerini verdik.

R1 üzerinde

!
!
!
interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 duplex auto
 speed auto
!
interface GigabitEthernet0/1
 ip address 87.10.10.1 255.255.255.0
 duplex auto
 speed auto
!
interface GigabitEthernet0/2
 no ip address
 duplex auto
 speed auto
 shutdown
!
interface Vlan1
 no ip address
 shutdown
!
ip classless
ip route 0.0.0.0 0.0.0.0 87.10.10.2 
!
ip flow-export version 9

R2 de herhangi bir yönlendirme protokolü tanımlı değil interfaceler tanımlı sadece
!
!
interface GigabitEthernet0/0
 ip address 87.10.10.2 255.255.255.0
 duplex auto
 speed auto
!
interface GigabitEthernet0/1
 ip address 3.3.3.1 255.255.255.0
 duplex auto
 speed auto
!

İç networkte kullamış olduğumuz bir ip ile internet ortamına erişemiyoruz.

internettede herhangi bir ip ile iç networke gidemiyoruz. 3.3.3.3 ipli server'a ping attığımızda erişemedik.

Gidebildiğimiz yer R1 routerın interfaceleri. 87.10.10.1 ve PC'nin gatewayi

R2 routerı 192.168.1.0 networkünü bilmediği için bize cevap vermedi. Çünkü R2 de herhangi bir yönlendirme protokolü yok.R2 bizim 192.168.1.0 networkünün nerde olduğunu bilmiyor onun için zaten biz 192.168.1.10 ipsini dönüştürerek gönderiyoruz.

Serverımız ise 87.10.10.1 e kadar erişebilir.

R1 üzerinde gig0/1 interfacesi inside ve gig0/0 interfacesi ise outside intefacemiz.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int gig0/0
R1(config-if)#ip nat inside
R1(config-if)#int gig0/1
R1(config-if)#ip nat outside
R1(config-if)#

// Biz içerdeki(inside)'daki ip adresimizi dışardaki(outside) ip adrese translate 
etmek istiyoruz 

R1(config-if)#ip nat ?
  inside   Inside interface for address translation
  outside  Outside interface for address
  
  
  //Biz tüm trafiği geçirmek istiyoruz ama istersek sadece tcp veya udp geçsin
diyedebilirdik.


R1(config)#ip nat ?
  inside   Inside address translation
  outside  Outside address translation
  pool     Define pool of addresses
R1(config)#ip nat inside ?
  source  Source address translation
R1(config)#ip nat inside source ?
  list    Specify access list describing local addresses
  static  Specify static local->global mapping
R1(config)#ip nat inside source static 192.168.1.10 87.10.10.10 ?
  <cr>
R1(config)#ip nat ?
  inside   Inside address translation
  outside  Outside address translation
  pool     Define pool of addresses
R1(config)#ip nat inside ?
  source  Source address translation
R1(config)#ip nat inside source ?
  list    Specify access list describing local addresses
  static  Specify static local->global mapping
R1(config)#ip nat inside source static ?
  A.B.C.D  Inside local IP address
  tcp      Transmission Control Protocol
  udp      User Datagram Protocol
R1(config)#ip nat inside source static 192.168.1.10 87.10.10.10


// 192.168.1.10 PC dış dünyaya çıkarken Router üzerinde translate ediliyor.
87.10.10.10 ip adresine dönüşüyor.

R1#sh ip nat translations 
Pro  Inside global     Inside local       Outside local      Outside global
---  87.10.10.10       192.168.1.10       ---                ---

Biraz önce PC'mizden Sunucuya erişim sağlayamamıştık tekrar bir daha deneyelim.,

C:\>ping 87.10.10.2
Pinging 87.10.10.2 with 32 bytes of data:
Request timed out.
Reply from 87.10.10.2: bytes=32 time<1ms TTL=254
C:\>ping 3.3.3.3
Pinging 3.3.3.3 with 32 bytes of data:
Reply from 3.3.3.3: bytes=32 time<1ms TTL=126
Ping statistics for 3.3.3.3:
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Minimum = 0ms, Maximum = 0ms, Average = 0ms

R2 routerı bizim 192.168.1.10 PCmizi 87.10.10.10 olarak görüyor.

Serverımıza girdik. PC'mize ping attık. Ama Serverımız 192.168.1.10 diye bir ip adresi bilmiyor.

C:\>ping 192.168.1.10

Pinging 192.168.1.10 with 32 bytes of data:

Reply from 3.3.3.1: Destination host unreachable.
Reply from 3.3.3.1: Destination host unreachable.
Reply from 3.3.3.1: Destination host unreachable.
Reply from 3.3.3.1: Destination host unreachable.

Ping statistics for 192.168.1.10:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\>ping 87.10.10.10

Pinging 87.10.10.10 with 32 bytes of data:

Reply from 87.10.10.10: bytes=32 time<1ms TTL=126
Reply from 87.10.10.10: bytes=32 time<1ms TTL=126

Ping statistics for 87.10.10.10:
    Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

Server bizim dönüştürdüğümüz ip adresini biliyor.

Attığımız bu ping önce R1'e geliyor burada translate oluyor daha sonra PC'ye gidiyor PC cevap veriyor.

Static NATI biz genelde local areadaki bir cihazımızın dış dünyadan erişilmesini istediğimizde yani internetten erişilmesini istediğimizde kullanıyorduk. Örneğin iç networkümüzde kullandığımız bir WEB serverı internete açmak istediğimizde yani internetten erişilmesini istediğimizde bu yöntemi kullanıyoruz. Local areamızıa bir tane web server ekleyelim ve dış dünyadan nasıl göründüğüne bakalım.

87.10.10.10 ipsini biz PC için kullanmıştık .11 ip adresini ise biz Server için NATlayacağız.

Aynı zamanda bu Web Server'ı DNS olarak yapılandırılalım. İnternette bu server 192.168.1.20 ile gözükmeyecek. 87.10.10.11 ipsi ile gözükecek.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#
R1(config)#ip nat inside ?
  source  Source address translation
R1(config)#ip nat inside source static 192.168.1.20 87.10.10.11 
R1(config)#

R1#sh ip nat translations 
Pro  Inside global     Inside local       Outside local      Outside global
---  87.10.10.10       192.168.1.10       ---                ---
---  87.10.10.11       192.168.1.20       ---                ---

R1#


// Web Server'dan dış dünyadaki bir sunucuya erişim sağladık
C:\>ping 3.3.3.3

Pinging 3.3.3.3 with 32 bytes of data:

Request timed out.
Reply from 3.3.3.3: bytes=32 time<1ms TTL=126
Reply from 3.3.3.3: bytes=32 time<1ms TTL=126
Reply from 3.3.3.3: bytes=32 time<1ms TTL=126


//Outside'daki sunucudan da erişim sağladık
C:\>ping 87.10.10.11

Pinging 87.10.10.11 with 32 bytes of data:

Reply from 87.10.10.11: bytes=32 time<1ms TTL=126
Reply from 87.10.10.11: bytes=32 time=1ms TTL=126
Reply from 87.10.10.11: bytes=32 time<1ms TTL=126


İçerdeki sunucudan 3.3.3.3 ping atıp router üzerinde tekrar baktığımızda
translate işlemlerini görebiliyoruz. Outside global dediğimiz dışardaki ip'miz idi.
Outside Local ise  dış dünyadaki ipmizin localdeki görüntüsüydü. 
Localde değişmiyor.

R1#sh ip nat translations 
Pro  Inside global     Inside local       Outside local      Outside global
icmp 87.10.10.11:5     192.168.1.20:5     3.3.3.3:5          3.3.3.3:5
icmp 87.10.10.11:6     192.168.1.20:6     3.3.3.3:6          3.3.3.3:6
icmp 87.10.10.11:7     192.168.1.20:7     3.3.3.3:7          3.3.3.3:7
icmp 87.10.10.11:8     192.168.1.20:8     3.3.3.3:8          3.3.3.3:8
---  87.10.10.10       192.168.1.10       ---                ---
---  87.10.10.11       192.168.1.20       ---                ---

R1#


Dışarıdan web servera erişelim. İsimden adres çözümlemesi yapacağımız için DNS adres olarak 87.10.10.11 girdik.

Dinamik NAT

Dinamik nat konfigurasyonunda public ip adreslerinden servis sağlayıcıdan bir grup alınıyor. Bu grup ile bir havuz oluşturuluyor. Bu ipler kullanılarak dinamik olarak bu ipler private iplere dönüştürülüyor. Burada dikkat edilmesi gereken şey eşleştirmenin dinamik olarak yapılması Statik NAT'da teker teker eşleştiriyorduk ama dinamik NAT'da bu eşleştirme dinamik olarak yapılıyor.

Topolojide Routerların interfacelerine ip adresleri verildi ve R1 den R2ye bir statik route yazıldı.

R1
!
interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 duplex auto
 speed auto
!
interface GigabitEthernet0/1
 ip address 87.10.10.1 255.255.255.0
 duplex auto
 speed auto
!
ip classless
ip route 0.0.0.0 0.0.0.0 87.10.10.2 
!
ip flow-export version 9
!
!

R2

interface GigabitEthernet0/0
 ip address 87.10.10.2 255.255.255.0
 duplex auto
 speed auto
!
interface GigabitEthernet0/1
 ip address 3.3.3.1 255.255.255.0
 duplex auto
 speed auto
!
ip classless
!
ip flow-export version 9
!
!

//herhangi bir nat konfigurasyonu yok hadi yapalım.
R1#sh ip nat translations 
R1#


R1(config)#in gig0/0
R1(config-if)#ip nat inside
R1(config-if)#int gig0/1
R1(config-if)#ip nat outside
R1(config-if)#

R1'i localimizdeki modem R2 ise ISP routerı gibi düşünebillirsiniz.

İç networkümüzde çıkacak olan tüm networkümüz için bir access-list yazıyoruz. Yani dış dünyadan almış olduğumuz bu public iplere translate etmek için bir ACL yazalım.

Permit dedik ve tüm networkümüze izin vereceğimiz için network adresini ve wildcard adresi yazdık.

R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255

192.168.1.0 networkün hepsi dışarıya çıkacak. Kendi ihtiyacımıza göre bunu sınırlayabiliriz.

İkinci olarak da public iplerden bir havuz oluşturacağız. ve pool ismi verelim.

R1(config)#ip nat pool ?
  WORD  Pool name
R1(config)#ip nat pool havuz ?
  A.B.C.D  Start IP address
R1(config)#ip nat pool havuz 87.10.10.10 ?
  A.B.C.D  End IP address
R1(config)#ip nat pool havuz 87.10.10.10 87.10.10.15 ?
  netmask  Specify the network mask
R1(config)#ip nat pool havuz 87.10.10.10 87.10.10.15 netmask 255.255.255.0


R1(config)#ip nat inside source list 1 pool havuz

Bu access list de belirtilen ipler dışarıya çıkabiliyor. Havuz pool'unu kullanarak ip nat konfigurasyonu yapıyor olacak.

Şuan biz şunu yapmış olduk iç networkümüzde bulununan bütün bilgisayarların bu ipleri kullanarak dışarıya çıkmasını konfigure etmiş olduk.

PC1 den Sunucuya ping attık ve Router üzerinde translation şu şekilde gözüküyor.

R1#sh ip nat translations 
Pro  Inside global     Inside local       Outside local      Outside global
icmp 87.10.10.10:10    192.168.1.20:10    3.3.3.3:10         3.3.3.3:10
icmp 87.10.10.10:11    192.168.1.20:11    3.3.3.3:11         3.3.3.3:11
icmp 87.10.10.10:12    192.168.1.20:12    3.3.3.3:12         3.3.3.3:12
icmp 87.10.10.10:9     192.168.1.20:9     3.3.3.3:9          3.3.3.3:9

//Diğer PC'den ping attım.

R1#sh ip nat translations 
Pro  Inside global     Inside local       Outside local      Outside global
icmp 87.10.10.10:1     192.168.1.10:1     3.3.3.3:1          3.3.3.3:1
icmp 87.10.10.10:2     192.168.1.10:2     3.3.3.3:2          3.3.3.3:2
icmp 87.10.10.10:3     192.168.1.10:3     3.3.3.3:3          3.3.3.3:3
icmp 87.10.10.10:4     192.168.1.10:4     3.3.3.3:4          3.3.3.3:4

//Nat tablosunu temizlemek istersek ise bu şekilde.
R1#clear ip nat translation *
R1#sh ip nat translations 
R1#

//Statik NAT da bu komut ile (sh ip nat translation) ile statik nat konfigurasyonları
görüyorduk ama dinamik olduğu için burası boş olarak geliyor.
//Ping attığımızda o zaman dinamik olarak doluyor tekrardan.

PAT(Port Address Translation)

LAN'da kullanmış olduğumu tüm ip'ler, fiziksel tek bir global ip üzerinden dış networke çıkıyorlar. Herbir ipye eşleştirirken bir port ataması yapılıyor bu port atamasına göre, bu ipler dış dünyaya çıkıyor ve dönüşte o port atamasına göre geri cihazlara ulaşabiliyor.

R1den R2ye statik route tanımlı sadece.

PAT 'da aynı şekilde interfacelerin altına inside ve outside'ları yazıyoruz.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int gig0/0
R1(config-if)#ip nat inside
R1(config-if)#int gig0/1
R1(config-if)#ip nat outside
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255 
R1(config)#ip nat inside source list 1 ?
  interface  Specify interface for global address
  pool       Name pool of global addresses
R1(config)#ip nat inside source list 1 interface gig 0/1 overload

R1#sh ip nat translations 
R1#

LAN içerinde tüm bilgisayarlarımızın tek bir ip'den dışarı çıkmasını istiyoruz aynı dinamik NAT da olduğu gibi access list tanımlaması yapıyorum.

PAT'da tek bir fiziksel ip üzerinden çıkıyor. Bu sefer herhangi bir ip yazmıyoruz. İnterface'yi yazacağız. Tüm ip'ler tek bir interface üzerinden çıktığı için overloading yapıyorlar.

PAT 'in Cisco'daki ismi Overload NAT olarak isimlendiriliyor. sh ip nat translation yazdığımızda herhangi bir translation yok. PAT da aynı dinamik NAT gibi dinamik olarak bu yönlendirmeyi yapıyor. Statik NAT'daki gibi değil. Her seferinde dinamik olarak alıyor boşalınca boşaltıyor.

R1#sh ip nat translations 
Pro  Inside global     Inside local       Outside local      Outside global
icmp 87.10.10.1:1      192.168.1.20:1     3.3.3.3:1          3.3.3.3:1
icmp 87.10.10.1:2      192.168.1.20:2     3.3.3.3:2          3.3.3.3:2
icmp 87.10.10.1:3      192.168.1.20:3     3.3.3.3:3          3.3.3.3:3
icmp 87.10.10.1:4      192.168.1.20:4     3.3.3.3:4          3.3.3.3:4
udp 87.10.10.1:1025    192.168.1.20:1025  3.3.3.3:53         3.3.3.3:53
udp 87.10.10.1:1035    192.168.1.10:1035  3.3.3.3:53         3.3.3.3:53
tcp 87.10.10.1:1025    192.168.1.10:1025  3.3.3.3:80         3.3.3.3:80



Last updated