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ğiEvinizde 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
AvantajlarNAT, 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.