İçeriğe geç
ipkontrol.net

IP Temelleri

NAT Nedir? Ev Ağında Ne İşe Yarar?

Ağ adresi çevirisinin mantığı, port eşleştirme ve NAT olmasaydı ne olurdu.

NAT (Network Address Translation, ağ adresi çevirisi), modemin evdeki cihazların yerel adreslerini tek bir genel adrese çevirmesi. Evde on cihaz olsa da internet hepsini tek bir adres olarak görüyor.

Genel ve yerel adres ayrımını ayrı bir yazıda anlattık. Bu yazı ikisinin arasındaki köprüye bakıyor: modem bir paketi alıp adresini değiştirirken tam olarak ne yapıyor, ve bunun günlük hayatta hangi sorunlara yol açtığı.

Bir paketin yolculuğu

Evde yerel adresi 192.168.1.23 olan bir dizüstü bilgisayar bir web sitesine bağlanıyor. Modemin genel adresi 203.0.113.7, sitenin adresi 198.51.100.20 olsun.

  1. Bilgisayar paketi hazırlıyor: kaynak 192.168.1.23:51234, hedef 198.51.100.20:443.
  2. Paket modeme geliyor. Modem kaynak adresi kendi genel adresiyle değiştiriyor ve boşta bir port seçiyor: kaynak artık 203.0.113.7:40001.
  3. Modem bu değişikliği çeviri tablosuna yazıyor.
  4. Site cevabı 203.0.113.7:40001 adresine gönderiyor. Site yalnızca bu adresi görüyor.
  5. Cevap modeme geliyor. Modem tabloya bakıyor: 40001 numaralı port 192.168.1.23:51234 bağlantısına ait. Hedefi geri çevirip paketi bilgisayara iletiyor.

Modemin tablosu kabaca şöyle görünüyor:

İç adresDış adresKarşı tarafProtokol
192.168.1.23:51234203.0.113.7:40001198.51.100.20:443TCP
192.168.1.23:51240203.0.113.7:40002198.51.100.20:443TCP
192.168.1.40:3074203.0.113.7:40003192.0.2.55:3074UDP

Bütün iş bu tablo. Port numarası, aynı genel adresi paylaşan bağlantıları birbirinden ayırmaya yarıyor: aynı bilgisayarın iki sekmesi bile ayrı satır. Bu yüzden evlerde kullanılan NAT'ın tam adı port adres çevirisi (PAT ya da NAPT). Port kavramını port nedir yazısında anlattık.

Tablonun ömrü: satırlar siliniyor

Modem satırları sonsuza kadar tutmuyor. Bir bağlantıdan bir süre paket geçmezse satır siliniyor. Süreler modemden modeme değişiyor ama desen aynı:

TrafikTipik zaman aşımı
UDP: oyun, sesli görüşme, DNSOnlarca saniye ile birkaç dakika
TCP, kurulmuş bağlantıDakikalar ile saatler
TCP, kapanmakta olan bağlantıBirkaç dakika

Bu, günlük hayatta iki yerde karşınıza çıkıyor:

  • Boşta kalan bağlantı kopuyor. Uzak masaüstü ya da SSH oturumu bir süre dokunulmadan bekleyince "bağlantı kesildi" diyorsa sebep çoğu zaman bu. Modem satırı silmiş; iki uç hâlâ bağlı sanıyor ama aradaki kapı kapanmış. Uygulamalardaki "keepalive" ayarı tam bunun için var: düzenli aralıkla küçük bir paket gönderip satırı canlı tutuyor.
  • Tablo doluyor. Tablonun bir kapasitesi var ve ucuz modemlerde küçük. Aynı anda binlerce bağlantı açan bir uygulama — torrent istemcisi en tipik örnek — tabloyu doldurunca yeni bağlantı açılamıyor. Belirti: bir cihazda indirme sürerken diğer cihazlarda sayfalar açılmıyor ya da modem kilitleniyor. İstemcide en fazla bağlantı sayısını düşürmek genellikle yetiyor.

NAT neyi bozuyor?

Çeviri tablosu yalnızca içeriden başlatılan bağlantılar için satır açıyor. Dışarıdan gelen bir paket için tabloda satır yoksa modem onu kime vereceğini bilmiyor ve düşürüyor. Sonuçları:

  • Evde sunucu çalıştırmak: dışarıdan kameraya, NAS'a ya da oyun sunucusuna bağlanmak için modeme elle kural yazmak gerekiyor. Buna port yönlendirme deniyor: tabloya kalıcı bir satır eklemek.
  • Oyunlarda eşler arası bağlantı: iki oyuncu doğrudan bağlanmak istediğinde ikisi de NAT arkasındaysa kimse ilk adımı atamıyor. Konsolların gösterdiği NAT tipi bu durumun ne kadar ağır olduğunu sınıflandırıyor.
  • Adresi içinde taşıyan protokoller: bazı eski protokoller kendi yerel adresini paketin içeriğine de yazıyor. Aktif moddaki FTP ve bazı internet telefonu (SIP) kurulumları bunun örneği: karşı taraf pakette yazan 192.168.x adresine bağlanmaya çalışıp başarısız oluyor. Modemlerdeki ALG ayarı bu içeriği de düzeltmeye çalışıyor; bazen düzeltiyor, bazen bozuyor. İnternet telefonunda tek yönlü ses sorununda ilk denenen şeylerden biri SIP ALG'yi kapatmak.

NAT güvenlik duvarı değil

"NAT arkasındayım, dışarıdan kimse bana ulaşamaz" yaygın bir kanı. Kısmen doğru: tabloda satırı olmayan gelen paket düşüyor. Ama bu bir yan etki, amaç değil:

  • UPnP açıksa ağdaki herhangi bir uygulama — zararlı olanlar dahil — modeme kendi satırını açtırabiliyor.
  • İçeriden başlatılan bağlantı her yere açık: zararlı yazılım dışarıya bağlanıp komut alıyor, NAT buna hiç karışmıyor.
  • Aynı yerel ağdaki cihazlar arasında NAT yok. ARP sahteciliği gibi saldırılar tamamen içeride oluyor.

Asıl filtrelemeyi modemin güvenlik duvarı yapıyor. Fark IPv6'da belirginleşiyor: orada genellikle NAT yok ve her cihazın kendi genel adresi var. Koruma tamamen güvenlik duvarına kalıyor; IPv6 güvenlik duvarı yazısında bu yüzden ayrıca durduk.

NAT olmasaydı ne olurdu?

IPv4 adresleri çoktan yetmezdi. IPv4'te yaklaşık 4,3 milyar adres var ve bu sayı bugünkü bağlı cihaz sayısının çok altında. NAT bir evi, bir ofisi, hatta operatör seviyesinde bir mahalleyi tek adresin arkasına sığdırarak IPv4'ün ömrünü on yıllarca uzattı. Adres tükenmesi yazısında hikâyenin tamamı var.

Bedeli, internetin başlangıçtaki tasarımından bir şeyin kaybolması: her cihazın her cihaza doğrudan ulaşabilmesi. Görüntülü görüşme ve oyun uygulamaları bu yüzden NAT'ı delmek için ek sunucular ve yöntemler kullanıyor; bağlantı kurulamadığında trafik aracı bir sunucudan dolaşıyor ve gecikme artıyor.

İki kat NAT

Operatör seviyesindeki NAT'a CGNAT deniyor: sizin modeminiz de operatörün NAT'ı arkasında. Bu durumda modeminizde port yönlendirme işe yaramıyor, çünkü dışarıdan gelen paket sizin modeminize hiç ulaşmıyor. Anlamak için modemin WAN adresini sorgulama aracında görünen adresle karşılaştırın: farklıysa arada ikinci bir çeviri var.

Aynı sorun evin içinde de oluşabiliyor: operatör modeminin arkasına ikinci bir router takıp WAN portundan bağlarsanız iki NAT katmanı kuruluyor. Port yönlendirmeyi iki cihazda da yapmak ya da operatör modemini köprü moduna almak gerekiyor. Aynı genel adresi paylaşan cihazların sitelere nasıl göründüğünü de aynı IP iki cihaz yazısında ele aldık.

Sıkça sorulan sorular

NAT nedir?

Modemin evdeki cihazların yerel adreslerini tek bir genel adrese çevirmesidir. Modem her bağlantıyı bir çeviri tablosuna yazar ve gelen cevabı bu tabloya bakarak doğru cihaza iletir.

NAT ev ağında ne işe yarar?

Tek bir genel adresle evdeki bütün cihazların internete çıkmasını sağlar. Yan etki olarak dışarıdan başlatılan bağlantıları da düşürür; bu yüzden sunucu çalıştırmak için port yönlendirme gerekir.

NAT güvenlik duvarı yerine geçer mi?

Hayır. Gelen bağlantıları düşürmesi bir yan etkidir. İçeriden başlatılan bağlantılara, UPnP ile açılan portlara ve yerel ağ içindeki saldırılara karşı koruma sağlamaz.

Boşta bekleyen bağlantım neden kopuyor?

Modem bir süre paket geçmeyen bağlantının satırını çeviri tablosundan siler. Uygulamadaki keepalive ayarı düzenli küçük paketlerle satırı canlı tutar.

CGNAT arkasında olduğumu nasıl anlarım?

Modem arayüzündeki WAN adresini sorgulama aracında görünen adresle karşılaştırın. İkisi farklıysa operatör seviyesinde ikinci bir NAT vardır ve modemde port yönlendirme işe yaramaz.