Cisco NAT Troubleshooting: NAT Çalışmıyorsa Nereden Başlanmalı?

Route var.

Interface up/up.

Gateway’e ping atılabiliyor.

Ama kullanıcı internete çıkamıyor.

İlk şüphelilerden biri doğal olarak:

“NAT çalışmıyor.”

oluyor.

Cisco IOS ve IOS XE ortamlarında gerçekten de küçük bir NAT konfigürasyon hatası bütün internet erişimini kesebilir. Ancak production troubleshooting sırasında doğrudan NAT satırlarını değiştirmeye başlamak çoğu zaman en doğru yaklaşım değildir.

Çünkü NAT’ın çalışabilmesi için yalnızca:

ip nat inside source ...

konfigürasyonunun bulunması yeterli değildir.

Interface rolleri, NAT classification ACL’si, route, translation table, return path ve bazı durumlarda CEF/forwarding davranışının da doğru olması gerekir.

Bu nedenle Cisco NAT troubleshooting’e bir packet-flow problemi olarak yaklaşmak çok daha sağlıklıdır.

Cisco NAT nasıl çalışır?

En yaygın kurumsal senaryoyu düşünelim.

İç ağdaki client:

10.10.10.25

adresine sahip.

Router’ın dış interface’inde ise:

203.0.113.10

public IP adresi bulunuyor.

Amaç:

10.10.10.25
        ↓
Cisco Router
        ↓
NAT / PAT
        ↓
203.0.113.10
        ↓
Internet

şeklinde internet erişimi sağlamaktır.

Cisco’da interface üzerinden PAT/overload için tipik yapı şuna benzer:

access-list 10 permit 10.10.10.0 0.0.0.255

ip nat inside source list 10 interface GigabitEthernet0/1 overload

interface GigabitEthernet0/0
 ip nat inside

interface GigabitEthernet0/1
 ip nat outside

Cisco IOS XE dokümantasyonu, overload kullanıldığında birden fazla inside host’un aynı global adresi port numaralarıyla ayrıştırarak paylaşabildiğini ve NAT’a tabi olacak kaynakların ACL ile seçilebildiğini belirtir. Cisco

NAT Overload — PAT nedir?

Bir kurumda yüzlerce client bulunduğunu düşünelim.

Her client’a ayrı public IPv4 adresi vermek yerine tek public IP kullanılabilir:

10.10.10.25:50231
10.10.10.26:53010
10.10.10.27:49155
        ↓
       PAT
        ↓
203.0.113.10:farklı-portlar

Cisco terminolojisinde bu yapı genellikle NAT overload olarak geçer ve pratikte Port Address Translation — PAT davranışı sağlar.

Örneğin:

ip nat inside source list 10 interface GigabitEthernet0/1 overload

komutundaki overload, birden fazla internal adresin aynı global/interface IP’sini TCP veya UDP port farklılıklarıyla kullanabilmesine olanak sağlar. Cisco

İlk kontrol: NAT translation gerçekten oluşuyor mu?

Troubleshooting sırasında ilk bakılabilecek en değerli komutlardan biri:

show ip nat translations

komutudur.

Cisco IOS XE üzerinde bu komut aktif NAT translation kayıtlarını gösterir. Daha ayrıntılı bilgi gerektiğinde:

show ip nat translations verbose

kullanılabilir. Cisco

Örnek bir çıktı şöyle görünebilir:

Pro  Inside global       Inside local       Outside local      Outside global
tcp  203.0.113.10:49101  10.10.10.25:49101  8.8.8.8:443        8.8.8.8:443

Buradaki en önemli iki alan:

Inside Local  = 10.10.10.25
Inside Global = 203.0.113.10

şeklindedir.

Bu, router’ın internal client’ın adresini public IP’ye çevirdiğini gösterir.

Cisco’nun NAT terminolojisinde Inside Local, içeride kullanılan host adresini; Inside Global ise aynı inside host’un dış dünyaya göründüğü global adresi ifade eder. Cisco

Inside Local, Inside Global, Outside Local ve Outside Global nedir?

show ip nat translations çıktısını doğru okuyabilmek NAT troubleshooting için oldukça önemlidir.

AlanAnlamı
Inside LocalInside host’un içeride kullandığı adres
Inside GlobalInside host’un outside network’e göründüğü translated adres
Outside LocalOutside host’un inside taraftan görülen adresi
Outside GlobalOutside host’un kendi global adresi

Basit internet çıkışı senaryolarında Outside Local ve Outside Global çoğu zaman aynı görünür.

Bu kavramlar özellikle daha karmaşık inside/outside NAT yapılarında çok daha önemli hale gelir. Cisco da NAT terminolojisini tam olarak bu dört adres tipi üzerinden tanımlar. Cisco

Translation oluşmuyorsa ne anlama gelir?

Client trafik üretiyor fakat:

show ip nat translations

çıktısında ilgili host için hiçbir dynamic translation oluşmuyorsa NAT işlemine giden zincirin daha erken aşamalarına bakmak gerekir.

Örneğin NAT’a tabi olacak kaynak subnet yanlış yazılmış olabilir.

Şöyle olması gerekirken:

access-list 10 permit 10.10.10.0 0.0.0.255

yanlışlıkla:

access-list 10 permit 10.20.10.0 0.0.0.255

girildiyse 10.10.10.25 NAT classification’a hiç eşleşmez.

Sonuç:

Trafik var ama translation yok.

NAT ACL’si doğru trafiği seçiyor mu?

Kontrol için:

show access-lists

veya platform/sürüm desteğine göre:

show ip access-lists

kullanılabilir.

Burada önemli bir kavramsal ayrım vardır.

Şu konfigürasyondaki:

access-list 10 permit 10.10.10.0 0.0.0.255

ip nat inside source list 10 interface GigabitEthernet0/1 overload

ACL temel olarak hangi source adreslerin NAT’a tabi tutulacağını seçmektedir.

Yani bu kullanım bağlamında permit:

“Bu trafiği güvenlik açısından izinli kabul et.”

anlamına değil:

“Bu kaynak NAT işlemine dahil olsun.”

anlamına gelir.

Cisco da NAT için kullanılan ACL’nin yalnızca translate edilmesi gereken adresleri permit etmesi gerektiğini ve aşırı geniş ACL’lerin beklenmeyen sonuçlar yaratabileceğini belirtiyor. Cisco

Bu ayrım özellikle troubleshooting sırasında önemlidir.

Çünkü NAT ACL ile interface üzerinde uygulanan packet-filter ACL aynı amaçla kullanılmayabilir.

NAT interface rolleri doğru mu?

Basit ama production ortamlarında şaşırtıcı derecede sık görülen hata:

inside ve outside rollerinin yanlış atanmasıdır.

Tipik yapı:

interface GigabitEthernet0/0
 description LAN
 ip address 10.10.10.1 255.255.255.0
 ip nat inside

ve:

interface GigabitEthernet0/1
 description INTERNET
 ip address 203.0.113.10 255.255.255.252
 ip nat outside

şeklindedir.

Cisco’nun güncel IOS XE NAT rehberinde de internal interface ip nat inside, dış ağa bağlı interface ise ip nat outside ile işaretlenir. Cisco

Konfigürasyonun yalnızca:

ip nat inside source ...

satırına bakıp interface rollerini kontrol etmemek sık yapılan troubleshooting hatalarından biridir.

show ip nat statistics bize ne anlatır?

NAT’ın genel durumunu görmek için:

show ip nat statistics

oldukça faydalıdır.

Bu çıktı platform ve IOS/IOS XE sürümüne göre bazı ayrıntılarda değişebilse de NAT translation kullanımı, mappings ve ilgili NAT durumları hakkında hızlı görünürlük sağlar. Cisco’nun güncel monitoring rehberi show ip nat translations ile birlikte show ip nat statistics komutunu NAT’ın temel doğrulama araçları arasında gösterir. Cisco

Pratikte burada özellikle şunu anlamaya çalışırım:

NAT motoru trafik görüyor mu?

Translation hiç oluşmuyorsa başka bir problem vardır.

Translation artıyor ama erişim hâlâ yoksa problem büyük olasılıkla packet flow’un sonraki aşamalarındadır.

NAT çalışıyor ama internet hâlâ yoksa: Routing

Bu nokta son derece önemlidir.

NAT translation tablosunda:

10.10.10.25 → 203.0.113.10

görmeniz uçtan uca bağlantının başarılı olduğunu kanıtlamaz.

Router destination network’e nasıl ulaşacağını hâlâ bilmek zorundadır.

Kontrol:

show ip route

veya belirli destination için:

show ip route 8.8.8.8

kullanılabilir.

Default route senaryosunda örneğin:

ip route 0.0.0.0 0.0.0.0 203.0.113.9

gibi bir route bulunabilir.

Classic IOS NAT işlem sıralamasında inside-to-outside trafik için routing kararı NAT translation’dan önce değerlendirilir; dönüş yönünde ise translation ile routing sırası farklıdır. Cisco bu nedenle hem dış destination’a geçerli route’un hem de dönüş trafiği için inside local adrese ulaşan route’un bulunmasının önemli olduğunu vurgular. Cisco

Troubleshooting açısından sonuç basittir:

NAT ve routing’i birbirinden bağımsız düşünmeyin.

CEF neden kontrol edilmeli?

Routing table kontrolü mantıksal routing kararını gösterir.

Forwarding tarafında ise:

show ip cef <destination>

kullanılabilir.

Örneğin:

show ip cef 8.8.8.8

ile FIB’in destination için hangi next-hop/interface’i kullandığını kontrol edebilirsiniz.

Buradaki temel yaklaşım şudur:

RIB → Route kararı
FIB/CEF → Gerçek forwarding kararı

Özellikle karmaşık routing, VRF veya recursive next-hop yapılandırmalarında yalnızca show ip route ile yetinmemek yararlı olabilir.

Return Path neden NAT troubleshooting’in kritik parçasıdır?

Şunu düşünelim:

10.10.10.25
      ↓
Cisco Router
      ↓
203.0.113.10
      ↓
Internet Server

Forward trafik sorunsuz gidiyor.

NAT translation oluşuyor.

Ama cevap paketi geri dönemiyor.

Bu durumda kullanıcı yine:

“İnternet çalışmıyor.”

diyecektir.

Dolayısıyla NAT troubleshooting yalnızca:

“Source IP public IP’ye çevrildi mi?”

sorusundan ibaret değildir.

Şunu da sormak gerekir:

“Return traffic translated global IP’ye geri geliyor mu ve router bunu doğru inside local adrese ulaştırabiliyor mu?”

Cisco’nun NAT order-of-operation açıklaması da dönüş paketlerinin translation sonrası inside local adrese routable olması gerektiğini özellikle vurgular. Cisco

Bu yüzden:

Forward Path + Return Path

birlikte incelenmelidir.

Inside Local → Inside Global mantığını packet flow üzerinden anlayalım

Şöyle bir flow olduğunu düşünelim:

Client
10.10.10.25:53120

destination:

8.8.8.8:443

NAT router’dan çıktıktan sonra:

203.0.113.10:53120
→
8.8.8.8:443

haline gelebilir.

Burada:

Inside Local:
10.10.10.25

ve:

Inside Global:
203.0.113.10

olur.

Outside adres translated edilmiyorsa:

Outside Local:
8.8.8.8

Outside Global:
8.8.8.8

aynı olabilir.

Cisco’nun resmi NAT terminology dokümanında da inside-to-outside trafik için local/global kavramları bu şekilde tanımlanıyor. Cisco

clear ip nat translation * neden dikkatli kullanılmalı?

Test sırasında bazen eski translation kayıtlarını temizlemek gerekir.

Cisco IOS XE üzerinde:

clear ip nat translation *

tüm dynamic NAT translations’ı temizlemek için desteklenen komutlardan biridir. Cisco ayrıca tek bir translation veya belirli inside/outside adreslere ait kayıtların daha seçici biçimde temizlenebilmesi için granular komutlar da sağlar. Cisco

Production ortamında ise:

clear ip nat translation *

komutunu refleks olarak kullanmak iyi bir yöntem değildir.

Çünkü tüm dynamic translation table’ı temizler.

Bu nedenle mümkün olduğunda yalnızca sorunlu host/session ile ilişkili entry’nin temizlenmesi daha kontrollü bir yaklaşımdır.

Önce:

show ip nat translations

ile mevcut durumu kaydedip, ardından gerekiyorsa hedefli temizlik yapmak daha güvenlidir.

Translation var ama uygulama çalışmıyorsa NAT’ı suçlamayın

Şu senaryoyu düşünelim:

show ip nat translations

çıktısı doğru.

Inside Local → Inside Global translation oluşmuş.

Routing doğru.

Return traffic de geliyor.

Ancak web sitesi açılmıyor.

Bu noktada sorun artık NAT olmayabilir.

DNS, upstream ACL, Zone-Based Firewall, application service, MTU/MSS, IPsec, PBR veya doğrudan karşı uç servisinde problem bulunabilir.

İyi network troubleshooting’in temel prensibi budur:

Bir bileşenin beklenen şekilde çalıştığını doğruladıysanız, aynı bileşeni tekrar tekrar değiştirmek yerine packet flow’da bir sonraki noktaya geçin.

NAT troubleshooting sırasında debug kullanılır mı?

Gerekirse evet.

Cisco NAT troubleshooting için:

debug ip nat

gibi debug seçenekleri sağlar. Cisco’nun güncel Catalyst NAT rehberi de NAT troubleshooting araçları arasında NAT debug komutlarını gösteriyor. Cisco

Ancak production router üzerinde debug kullanımı kontrollü yapılmalıdır.

Cisco’nun NAT order-of-operation dokümantasyonu debug komutlarının ciddi miktarda çıktı üretebileceğini ve canlı ağlarda etkisinin anlaşılması gerektiğini özellikle belirtir. Cisco

Bu nedenle normal yaklaşım:

show

komutlarıyla başlamalıdır.

Debug daha ileri troubleshooting aşamasında kullanılmalıdır.

Ben Cisco NAT troubleshooting’e nasıl yaklaşırım?

Rastgele konfigürasyon değişikliği yapmak yerine şu zinciri takip etmek daha doğru olur:

Packet → Interface Role → NAT Classification → Translation → Routing/CEF → Return Path → Application

İlk olarak problemli flow’u kesin olarak tanımlarım:

Source IP
Destination IP
Source Port
Destination Port
Protocol

Ardından ilgili inside interface’in gerçekten ip nat inside, dış interface’in ise ip nat outside olduğunu doğrularım.

Sonra NAT ACL veya route-map’in bu source trafiği gerçekten seçip seçmediğine bakarım.

Trafik üretirken:

show ip nat translations

çalıştırırım.

Translation oluşuyorsa NAT’ın en azından classification ve translation bölümü çalışmaktadır.

Ardından route ve CEF’e geçerim:

show ip route <destination>
show ip cef <destination>

Son olarak mutlaka return path’i kontrol ederim.

Çünkü NAT troubleshooting’de sorun bazen giden pakette değil:

geri gelmeyen pakettedir.

Cisco NAT troubleshooting hızlı kontrol tablosu

KontrolKomut / NoktaAranan durum
Interface roleshow running-config interface ...LAN=ip nat inside, WAN=ip nat outside
NAT ACLshow access-listsKaynak subnet gerçekten match oluyor mu?
NAT yapılandırmasıshow running-config | include ip natDoğru ACL/interface/pool kullanılıyor mu?
Translationshow ip nat translationsInside Local → Inside Global oluşuyor mu?
NAT durumushow ip nat statisticsNAT mappings ve translations beklenen durumda mı?
Routingshow ip route <destination>Geçerli route/default route var mı?
Forwardingshow ip cef <destination>Doğru next-hop/interface seçiliyor mu?
Return PathUpstream/router kontrolleriCevap NAT router’a geri geliyor mu?
Temizlikclear ip nat translation ...Yalnız gerektiğinde ve kontrollü
İleri analizdebug ip natShow komutları yeterli değilse

En sık karşılaştığım Cisco NAT hataları

Pratikte sorun çoğu zaman karmaşık değildir.

Yanlış wildcard mask:

access-list 10 permit 10.10.10.0 0.0.255.255

yerine olması gerekenden farklı bir subnet seçilmiş olabilir.

Inside/outside interface rolleri ters olabilir.

NAT rule farklı ACL’ye referans veriyor olabilir.

Default route olmayabilir.

Public interface değişmiş ancak NAT overload hâlâ eski interface’i kullanıyor olabilir.

NAT translation mevcut olabilir fakat return path yanlış olabilir.

Ya da NAT tamamen doğru olduğu halde gerçek problem DNS veya upstream filtering olabilir.

Bu nedenle iyi troubleshooting yaklaşımı:

“NAT bozuk.”

demek yerine:

“Paket NAT zincirinin hangi aşamasında kayboluyor?”

sorusunu sormaktır.

NAT’ta en önemli troubleshooting prensibi

Bir kullanıcının internete çıkamaması size yalnızca sonucu söyler.

Sebebi söylemez.

show ip nat translations translation’ın oluşup oluşmadığını,

show ip nat statistics NAT motorunun genel durumunu,

show access-lists classification’ın doğru olup olmadığını,

show ip route routing kararını,

show ip cef forwarding bilgisini

gösterir.

Bunları birlikte değerlendirdiğinizde sorun:

ACL mi? NAT mı? Routing mi? Return path mi?

çok daha hızlı ayrıştırılabilir.

Cisco NAT troubleshooting’i tek cümlede özetlemek gerekirse:

Konfigürasyona değil, paketin yolculuğuna troubleshoot uygulayın.

Çünkü çoğu NAT problemi router’ın cevabı vermemesinden değil, bizim doğru tabloya bakmamamızdan kaynaklanır.


Sık Sorulan Sorular

Cisco NAT translation nasıl kontrol edilir?

Aktif NAT translation kayıtları:

show ip nat translations

ile görüntülenir. Daha detaylı bilgi için show ip nat translations verbose kullanılabilir. Cisco

show ip nat statistics ne işe yarar?

NAT’ın genel kullanım ve mapping durumunu kontrol etmeye yardımcı olur ve Cisco tarafından temel NAT monitoring komutlarından biri olarak tanımlanır. Cisco

Cisco NAT overload nedir?

NAT overload, birden fazla inside host’un aynı global/public IP adresini TCP/UDP port farklılıklarıyla paylaşmasını sağlar. Bu yapı yaygın olarak PAT olarak adlandırılır. Cisco

Inside Local ile Inside Global arasındaki fark nedir?

Inside Local, internal host’un içeride kullandığı IP adresidir. Inside Global ise bu host’un outside network’e göründüğü translated/global IP adresidir. Cisco

NAT translation neden oluşmaz?

Yanlış inside/outside interface tanımı, NAT ACL’nin source trafiği eşleştirmemesi, yanlış NAT configuration veya packet’in NAT işlemine ulaşmasını engelleyen routing/flow problemleri olası nedenler arasındadır.

clear ip nat translation * güvenli midir?

Komut bütün dynamic NAT translations’ı temizler. Bu nedenle production ortamında etkisi değerlendirilmeden kullanılmamalı; mümkün olduğunda yalnızca sorunlu translation hedeflenmelidir. Cisco

NAT çalışıyor fakat internet neden açılmıyor?

Translation oluşması uçtan uca bağlantının başarılı olduğunu garanti etmez. Routing, CEF, return path, ACL/firewall, DNS ve karşı uç uygulama ayrıca kontrol edilmelidir.


Cem Kemal Erbaş sitesinden daha fazla şey keşfedin

Subscribe to get the latest posts sent to your email.

About Cem Kemal Erbaş

Check Also

🔖 Anlık Trafik Patlamalarında Darboğazı Hızla Tespit Etmenin 3 Yolu 🚦

Kurumsal ağlarda trafik patlamaları çoğu zaman birkaç dakika içinde kendini belli eder. Kullanıcılar şu şikayetlerle …

Bir yanıt yazın