NAT, İngilizce Network Address Translator; yani Ağ Adresi Çeviricisi anlamına gelir. Bir TCP/IP ağındaki bir bilgisayarın başka bir ağa başka bir IP adresi kullanarak ulaşabilmesi için kullanılır.
Kullanım örneği
Evinizde bir yerel aÄŸ, bir de internet
bağlantısı olduğunu varsayalım. Yerel ağınızdaki adresler çok
yüksek ihtimalle 192.168.0.xxx şeklinde olacaktır. Öte yandan,
bu tür bir IP adresi internette geçersizdir, dolayısıyla bir
sistem örneğin "Wikipedia ana sayfasını 192.168.0.2 adresine
yollayın" isteği yaptığında bunun cevabını hiçbir zaman
alamayacaktır!
Bu durumda evdeki ağ ile internet arasına bir NAT konulur. NAT'e
"Wikipedia ana sayfasını 192.168.0.2 adresine yollayın" isteği
gelince:
Bu isteÄŸi "Wikipedia adresini benim internet IP adresime
yollayın" şeklinde değiştirip yollar
Ayrıca, gelen cevabı 192.168.0.2 numaralı makineye yollayacağını
hatırlar, ve cevap gelince cevabı 192.168.0.2 numaralı makineye
yönlendirir.
Avantajlar
NAT, bir IP adresini birkaç makineye paylaştırmak dışında çok önemli bir sorunu daha çözer: güvenlik. Dışarıdan gelen bir cevabın kime yönlendirileceğine NAT karar verdiği için, dışarıdan istemeden gönderilmiş olan bütün paketler (yani, virüsler ve diğer her türlü saldırılar) otomatik olarak bloke edilir. Bu, iki ağı izole ettiği için yerel ağı güvene alır.
Sorunlar
Üstteki örnekte NAT basit bir şekilde
anlatılıyor olsa da, çözülmesi zor bazı sorunlar yüzünden
karmaşık hale gelmektedir:
NAT'in o anda boş olan port numaraları gönderiyi yapan
bilgisayarla aynı olmayabilir (ve hatta, genelde olmaz!).
Dolayısıyla, NAT paketteki port numaralarını da değiştirmek
zorundadır. (Bkz: PAT)
Az önce değindiğimiz gibi NAT, paketteki IP ve port numaralarını
değiştirir. Öte yandan, bazı uygulamalar (FTP, VoIP ve birçok
oyun protokolü) değişik nedenlerden dolayı port numaraları ve IP
adreslerini uygulama verisi olarak da gönderme ihtiyacı
duyarlar.
Dolayısıyla bir NAT sadece IP ve UDP / TCP paket başlıklarını
değil, uygulamaların kendi paketlerini de okuyup değiştirmek
durumundadır. Ve hatta, UDP ve TCP paketleri parçalanıp
yollayabildiği için bir NAT önce paketleri birleştirip, sonra
içindeki IP adresi ve port numaralarını değiştirip ardından
tekrar bölüp yollamak zorunda kalabilir.
Günümüzde NAT'ler birçok protokolü otomatik olarak destekler.
Buna ek olarak, NAT konfigürasyonunu daha kolay yapabilmek
amacıyla UPnP protokolü de geliştirmiştir.
Alıntı : wikipedia.org