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.


Sunucumuzu web server ve dns server olarak yapılandırdık. PC0 ve PC1'in dns serverına sunucunun 3.3.3.3 ip adresini verdik. Şuan erişimimiz yok. PAT yaptıktan sonra erişebileceğiz.
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.
Biraz önce erişemiyorduk artık erişebiliyoruz. Hem PC0dan hem de PC1 den erişim sağlayamaya çalıştık Translation çıktısı aşağıdaki gibi.
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