FortiGate Hairpin NAT Nedir?
FortiGate Hairpin NAT, iç ağdaki bir kullanıcının yine iç ağda bulunan bir sunucuya o sunucunun public IP adresi veya public alan adı üzerinden erişmesini sağlar. Aynı özellik Fortinet dokümanlarında NAT loopback ve U-turn NAT adlarıyla da geçer.
En basit örnek şudur: Şirket dışındayken https://portal.firma.com adresi public IP üzerinden içerideki web sunucusuna gider. Şirket içindeki kullanıcı da aynı adresi yazdığında yine aynı sunucuya ulaşmak ister. İstek FortiGate’e gelir, FortiGate hedef public IP’yi sunucunun private IP’sine çevirir ve paketi iç ağa geri gönderir. Trafik dışarı çıkıp internette dolaşmaz.
Kısa tanım: İçeriden public IP’ye gelen paket FortiGate üzerinde yön değiştirip tekrar içeri döndüğü için bu işleme “hairpin” veya “U-turn” denir.
Şema Yitser Teknoloji tarafından, Fortinet’in resmî Hairpin NAT örneğindeki trafik mantığı temel alınarak hazırlanmıştır.
Hairpin NAT Hangi Durumda Gerekir?
Aşağıdaki durumda Hairpin NAT gerekir:
- İçeride bir web, kamera, ERP, mail veya uygulama sunucusu vardır.
- Bu sunucu FortiGate üzerinde bir VIP ile public IP’ye veya public porta yayınlanmıştır.
- İç ve dış kullanıcıların aynı alan adını kullanması istenir.
- İç DNS de bu alan adını public IP’ye çözer.
Örneğin dışarıda çalışan kullanıcı portal.firma.com için 203.0.113.10 adresine gider. Ofisteki bilgisayar da aynı DNS cevabını alır. Hairpin NAT yoksa içerideki kullanıcı public IP üzerinden sunucuya ulaşamayabilir; dışarıdan erişim çalışırken içeriden erişim başarısız olur.
Hairpin NAT mı, Split DNS mi?
| Yöntem | İç kullanıcı neye bağlanır? | Avantaj | Dikkat edilmesi gereken |
|---|---|---|---|
| Hairpin NAT | Public IP’ye | İçeride ve dışarıda aynı DNS cevabı kullanılır | Ek VIP/policy ve çoğu aynı ağ senaryosunda SNAT gerekir |
| Split DNS | Doğrudan private IP’ye | Daha kısa trafik yolu, gerçek istemci IP’si korunur | İç DNS kaydı ayrıca yönetilir |
İç DNS’i yönetebiliyorsanız Split DNS çoğu zaman daha sade çözümdür. Aynı public IP’nin içeride de kullanılmasının zorunlu olduğu yapılarda veya DNS’i ayıramadığınız durumda Hairpin NAT uygundur.
Bu Rehberde Kullanılan Örnek
Komutları anlaşılır tutmak için aşağıdaki örnek kullanılacaktır. Bunlar gerçek bir firmaya ait adresler değildir; dokümantasyon için ayrılmış örnek IP’lerdir.
| Bileşen | Örnek değer |
|---|---|
| İç istemci | 192.168.10.50 |
| FortiGate LAN arayüzü | lan — 192.168.10.1 |
| FortiGate WAN arayüzü | wan1 |
| Public IP | 203.0.113.10 |
| İç web sunucusu | 192.168.10.100 |
| Yayınlanan servis | HTTPS — TCP/443 |
| VIP adı | VIP_WebServer_HTTPS |
| Alan adı | portal.example.com |
Komutları doğrudan yapıştırmadan öncelan,wan1, public IP ve sunucu IP değerlerini kendi yapınıza göre değiştirin.
Paket FortiGate Üzerinde Nasıl İlerler?
- İstemci
portal.example.comadını sorgular ve203.0.113.10public IP cevabını alır. - Hedef kendi ağı dışında olduğu için paketi varsayılan ağ geçidine, yani FortiGate’e gönderir.
- FortiGate üzerindeki VIP, hedefi
203.0.113.10:443adresinden192.168.10.100:443adresine çevirir. Bu işlem DNAT’tir. - Hairpin firewall policy trafiğe izin verir. Aynı LAN içindeki örnekte policy üzerindeki NAT, istemci kaynak adresini FortiGate LAN IP’sine çevirir. Bu işlem SNAT’tir.
- Sunucu cevabı FortiGate’e gönderir. FortiGate oturum tablosundaki iki çeviriyi tersine uygulayıp cevabı istemciye ulaştırır.
Başarılı bir oturumda trafik logunda trandisp="snat+dnat" görülmesi, iki çevirinin de uygulandığını gösterir.Aynı LAN’da SNAT Neden Önemlidir?
İstemci ile sunucu aynı IP ağındaysa sunucu, istemcinin gerçek IP’sini gördüğünde cevabı doğrudan istemciye göndermeye çalışabilir. Dönüş paketi FortiGate’ten geçmezse public IP çevirisi geri alınamaz ve oturum bozulur. Policy üzerinde set nat enable kullanmak, sunucunun cevabı FortiGate’e vermesini zorlar.
Farklı ve FortiGate tarafından yönlendirilen VLAN’larda dönüş yolu zaten FortiGate’ten geçebilir. Buna rağmen bu rehberdeki güvenli, kolay doğrulanabilir örnek SNAT’i açık tutar. Bunun karşılığı, sunucu loglarında istemcinin gerçek IP’si yerine FortiGate arayüz IP’sinin görülebilmesidir.
Kuruluma Başlamadan Önce Kontrol Edin
- Sunucunun private IP’sine içeriden erişilebildiğini doğrulayın.
- FortiGate üzerinde sunucuya giden route’un doğru arayüzü gösterdiğini kontrol edin.
- VIP’de kullanacağınız port ile sunucunun gerçekten dinlediği portun aynı olduğundan emin olun.
- Değişiklikten önce FortiGate konfigürasyon yedeğini alın.
- Mevcut policy sırasını kontrol edin; daha yukarıdaki deny kuralı yeni policy’yi engelleyebilir.
Central NAT Açık mı?
Aşağıdaki komut yalnızca mevcut ayarı gösterir:
show full-configuration system settings | grep central-natÇıktı set central-nat disable ise bu rehberdeki policy tabanlı NAT komutları doğrudan uygulanabilir. Çıktı set central-nat enable ise SNAT, firewall policy içindeki set nat enable yerine Central SNAT Map üzerinden yönetilir. Bu durumda aşağıdaki policy bloğunu tek başına kullanmak eksik kalır.
Bu rehber, FortiGate’in varsayılan çalışma biçimi olan Central NAT kapalı yapı içindir. Cihazınızda Central NAT açıksa mevcut Central SNAT sırası görülmeden genel bir kural eklemek doğru değildir.
GUI ile FortiGate Hairpin NAT Kurulumu
Menü adları FortiOS sürümüne göre küçük farklılık gösterebilir. Fortinet’in güncel yönetim kılavuzunda VIP menüsü Policy & Objects > Virtual IPs; Central NAT açıksa Policy & Objects > DNAT & Virtual IPs altında gösterilir.
1. Virtual IP (VIP) Oluşturun
FortiGate arayüzünde Policy & Objects > Virtual IPs bölümüne girin ve Create New > Virtual IP seçin.
| Alan | Girilecek değer | Neden? |
|---|---|---|
| Name | VIP_WebServer_HTTPS | Policy içinde seçilecek nesne adı |
| Interface | any | VIP’nin LAN’dan gelen hairpin isteğinde de eşleşmesi için |
| Type | Static NAT | Public IP’yi private IP’ye eşlemek için |
| External IP address/range | 203.0.113.10 | Kullanıcının bağlandığı public IP |
| Mapped IP address/range | 192.168.10.100 | Gerçek iç sunucu IP’si |
| Port Forwarding | Enable | Yalnız gereken portu yayınlamak için |
| Protocol | TCP | HTTPS TCP kullanır |
| External service port | 443 | Dışarıdan kullanılan port |
| Map to port | 443 | Sunucunun dinlediği port |
Buradaki kritik alan Interface = any değeridir. Central NAT kapalıyken VIP yalnız wan1 arayüzüne bağlıysa bu VIP nesnesi LAN kaynaklı policy’de kullanılamaz; LAN’dan gelen trafik izin veren bir policy bulamadığı için düşer.
2. Hairpin Firewall Policy Oluşturun
Policy & Objects > Firewall Policy bölümünde yeni bir IPv4 policy oluşturun.
| Alan | Girilecek değer |
|---|---|
| Name | Hairpin_LAN_to_WebServer |
| Incoming Interface | lan |
| Outgoing Interface | lan |
| Source | Kendi LAN subnet nesneniz; testte all |
| Destination | VIP_WebServer_HTTPS |
| Schedule | always |
| Service | HTTPS |
| Action | ACCEPT |
| NAT | Enable — Use Outgoing Interface Address |
| Log Allowed Traffic | All Sessions |
İstemci ve sunucu farklı VLAN’lardaysa Incoming Interface istemci VLAN’ı, Outgoing Interface ise sunucu VLAN’ı olmalıdır. Destination alanına private IP nesnesini değil, oluşturduğunuz VIP nesnesini seçin.
FortiGate Hairpin NAT CLI Komutları
Aşağıdaki bloklar FortiOS’un gerçek CLI söz dizimidir. Örnek, yalnız HTTPS portunu yayınlar ve Central NAT kapalı yapı içindir.
1. VIP Oluşturma
config firewall vip
edit "VIP_WebServer_HTTPS"
set extip 203.0.113.10
set mappedip "192.168.10.100"
set extintf "any"
set portforward enable
set protocol tcp
set extport 443
set mappedport 443
next
endBu blokta extip public IP’yi, mappedip iç sunucu IP’sini tanımlar. Central NAT kapalı yapıda extintf "any", aynı VIP nesnesinin hem WAN hem de LAN kaynaklı uygun firewall policy’lerde kullanılabilmesini sağlar.
2. LAN’dan LAN’a Hairpin Policy Oluşturma
config firewall policy
edit 0
set name "Hairpin_LAN_to_WebServer"
set srcintf "lan"
set dstintf "lan"
set action accept
set srcaddr "all"
set dstaddr "VIP_WebServer_HTTPS"
set schedule "always"
set service "HTTPS"
set logtraffic all
set nat enable
next
endedit 0, FortiOS’un kullanılmayan yeni bir policy ID atamasını sağlar. Policy oluşturulduktan sonra GUI’den veya show firewall policy çıktısından gerçek ID’yi görün. Üretimde srcaddr "all" yerine yalnız erişmesi gereken LAN subnet nesnesini kullanın.
3. Farklı VLAN Örneği
İstemci WiFi-Vlan100, sunucu Server-Vlan150 arkasındaysa değişen ana bölüm arayüzlerdir:
config firewall policy
edit 0
set name "Hairpin_WiFi_to_WebServer"
set srcintf "WiFi-Vlan100"
set dstintf "Server-Vlan150"
set action accept
set srcaddr "all"
set dstaddr "VIP_WebServer_HTTPS"
set schedule "always"
set service "HTTPS"
set logtraffic all
set nat enable
next
endSNAT bu örnekte de açık bırakılmıştır; böylece dönüş yolu FortiGate üzerinden kesinleştirilir. Sunucunun gerçek istemci IP’sini görmesi zorunluysa, iki VLAN’ın dönüş rotası ve sunucu ağ geçidi doğrulandıktan sonra NAT tasarımı ayrıca değerlendirilmelidir.
İnternetten Erişim İçin WAN Policy Ayrıdır
Hairpin policy yalnız iç kullanıcıların public IP üzerinden iç sunucuya erişmesini sağlar. Sunucunun internetten de erişilebilir olması isteniyorsa ayrıca wan1 yönünden sunucu ağına gelen, destination olarak aynı VIP’yi kullanan bir inbound policy gerekir. Mevcut çalışan WAN policy’niz varsa ikinci bir tane oluşturmayın.
config firewall policy
edit 0
set name "WAN_to_WebServer_HTTPS"
set srcintf "wan1"
set dstintf "lan"
set action accept
set srcaddr "all"
set dstaddr "VIP_WebServer_HTTPS"
set schedule "always"
set service "HTTPS"
set logtraffic all
set nat disable
next
endBu WAN policy internetten erişim açar. Yalnız gerekli servisleri yayınlayın; yönetim portlarını ve geniş ALL servislerini gereksiz yere internete açmayın.nat-source-vip Gerekli mi?
Bu örnek için hayır. set nat-source-vip enable, Hairpin NAT’i açan genel bir anahtar değildir. Fortinet CLI referansına göre bu seçenek, VIP’nin mapped IP’sinden çıkan trafiğin kaynak adresini VIP external IP’sine zorlayabilir. Yanlış kullanılırsa başka çıkış trafiğinin beklemediğiniz public IP ile SNAT edilmesine neden olabilir.
Bu rehberde dönüş yolunu firewall policy üzerindeki set nat enable sağlar. nat-source-vip ayarını yalnız tasarımınız özellikle gerektiriyorsa ve etkisini oturum/packet capture ile doğrulayabiliyorsanız kullanın.
Kurulumu Nasıl Test Edersiniz?
1. İstemcide DNS ve Port Testi
Windows istemcide önce alan adının doğru public IP’ye çözüldüğünü kontrol edin:
nslookup portal.example.com
Test-NetConnection portal.example.com -Port 443Beklenen DNS cevabı 203.0.113.10, port testinin sonucu ise TcpTestSucceeded : True olmalıdır.
2. Forward Traffic Logunu Kontrol Edin
Log & Report > Forward Traffic bölümünde istemci IP’sine göre filtreleme yapın. Başarılı hairpin oturumunda şu bilgiler görülmelidir:
- Kaynak arayüz:
lan - Hedef arayüz:
lan - Eşleşen policy:
Hairpin_LAN_to_WebServer - Original destination:
203.0.113.10 - Translated destination:
192.168.10.100 - Translation disposition:
snat+dnat
3. CLI ile Debug Flow Çalıştırın
Aşağıdaki komutlar yalnız örnek istemci ile public IP arasındaki trafiği filtreler:
diagnose debug reset
diagnose debug flow filter clear
diagnose debug flow filter saddr 192.168.10.50
diagnose debug flow filter daddr 203.0.113.10
diagnose debug flow show iprope enable
diagnose debug flow show function-name enable
diagnose debug console timestamp enable
diagnose debug flow trace start 100
diagnose debug enableİstemciden bağlantıyı yeniden deneyin. İşiniz bittiğinde debug’ı mutlaka kapatın:
diagnose debug disable
diagnose debug resetÇıktıda find DNAT, doğru policy ID ve SNAT satırlarını arayın. Denied by forward policy check (policy 0) görülüyorsa trafiğe uyan bir firewall policy yoktur; FortiGate paketi varsayılan deny ile düşürmüştür.
Eski Oturumu Temizleme
VIP veya policy değişikliğinden sonra eski session yeni ayarı gizleyebilir. Önce filtre koyup yalnız ilgili oturumu temizleyin:
diagnose sys session filter clear
diagnose sys session filter src 192.168.10.50
diagnose sys session filter dst 203.0.113.10
diagnose sys session clear
diagnose sys session filter clearFortiGate Hairpin NAT Çalışmıyorsa
| Belirti | Muhtemel neden | Kontrol |
|---|---|---|
| Dışarıdan çalışıyor, içeriden çalışmıyor | VIP yalnız WAN arayüzüne bağlı veya hairpin policy yok | VIP extintf, LAN’dan başlayan policy ve policy sırası |
Denied by forward policy check (policy 0) | Arayüz, source, destination VIP veya service eşleşmiyor | Debug flow içindeki in, out, DNAT ve policy satırları |
| DNAT görülüyor ama cevap yok | Aynı ağda SNAT kapalı veya sunucunun dönüş yolu farklı | Policy NAT, sunucu gateway’i ve sunucu firewall’u |
| IP ile açılıyor, alan adıyla açılmıyor | DNS kaydı yanlış veya önbellek eski | nslookup, istemci DNS cache’i ve public DNS kaydı |
| HTTPS sertifika uyarısı çıkıyor | IP ile erişiliyor veya sertifika adı FQDN ile uyuşmuyor | Sertifikanın SAN/CN alanı ve kullanılan URL |
| Yanlış porta gidiyor | VIP external/mapped port eşlemesi hatalı | extport, mappedport ve sunucunun dinlediği port |
| Değişiklik yapıldı ama davranış aynı | Eski session devam ediyor | Filtreli session temizleme ve yeniden test |
| SD-WAN yapısında farklı davranıyor | Policy route veya SD-WAN kuralı akışı etkiliyor | Route lookup, policy route, SD-WAN rule ve debug flow |
En Sık Yapılan Üç Hata
- Policy destination alanına VIP yerine private sunucu adresini seçmek.
- İstemci ve sunucu aynı arayüzdeyken policy’yi
lan -> wan1oluşturmak. - Aynı subnet senaryosunda NAT’i kapatıp dönüş paketinin FortiGate’i atlamasına izin vermek.
Güvenli Bir Hairpin NAT Kuralı İçin
- Source alanını
allbırakmak yerine gerçek kullanıcı subneti veya gerekli cihaz grubu ile sınırlandırın. - Service alanında
ALLkullanmayın; HTTPS, kamera portu veya uygulamanın gerçek portunu seçin. - VIP’de yalnız gereken portları yayınlayın.
logtraffic allile kabul edilen oturumları kaydedin.- WAN’dan erişim gerekmiyorsa ayrı WAN policy açmayın.
- RDP, SSH ve yönetim panellerini doğrudan internete yayınlamak yerine VPN veya ZTNA kullanın.
- Değişiklikten önce ve sonra route, policy hit count, session ve trafik loglarını karşılaştırın.
Sık Sorulan Sorular
Hairpin NAT, NAT Loopback ve U-turn NAT aynı şey mi?
Evet. Üç ifade de iç ağdan başlayan trafiğin public IP’ye gidip firewall üzerinde iç sunucuya çevrilerek yeniden iç ağa gönderilmesini anlatır.
VIP Interface mutlaka any mi olmalı?
LAN’dan gelen hairpin isteğinin VIP ile eşleşebilmesi gerekir. Fortinet’in resmî örneği Interface alanında any kullanır. Daha dar bir tasarım yapacaksanız paketin gerçekten girdiği iç arayüzü de VIP kapsamına almalısınız; yalnız WAN seçmek çoğu hairpin senaryosunda eşleşmeyi engeller.
Policy üzerinde NAT mutlaka açık mı olmalı?
İstemci ve sunucu aynı subnet içindeyse dönüşün FortiGate üzerinden gelmesini sağlamak için genellikle evet. Ayrı, FortiGate tarafından yönlendirilen VLAN’larda simetrik dönüş varsa SNAT teknik olarak gerekmeyebilir; fakat gerçek istemci IP’sini korumak istiyorsanız bunu route ve oturum testiyle doğrulamanız gerekir.
FortiGate modem arkasındaysa Hairpin NAT yapılabilir mi?
FortiGate LAN’dan gelen public hedefli paketi VIP ile eşleştiriyorsa hairpin çalışabilir. Ancak internetten erişim için üst modem/router üzerinde de doğru port yönlendirmesi veya DMZ/bridge tasarımı gerekir. Public IP’nin hangi cihaz üzerinde sonlandığını netleştirmeden yalnız FortiGate policy’sine bakmak yeterli değildir.
Hairpin NAT için nat-source-vip enable şart mı?
Hayır. Bu ayar genel Hairpin NAT anahtarı değildir ve bu rehberde kullanılmaz. Kaynak çevirisi firewall policy üzerindeki NAT ile yapılır.
Dışarıdan erişim çalışıyorsa neden içeriden ayrıca policy gerekir?
Çünkü dış trafik WAN arayüzünden, iç trafik ise LAN veya VLAN arayüzünden girer. FortiGate policy eşleşmesini giriş ve çıkış arayüzleriyle birlikte yapar; çalışan wan1 -> lan policy, lan -> lan hairpin trafiğini otomatik olarak kapsamaz.
Sonuç
FortiGate Hairpin NAT kurulumunun özü üç parçadır: LAN’dan da eşleşebilen bir VIP, gerçek trafik yönüne uyan firewall policy ve dönüş yolunu FortiGate üzerinde tutan kaynak NAT. Kurulumdan sonra yalnız tarayıcı sonucuna bakmayın; Forward Traffic logunda snat+dnat, doğru policy ID ve translated destination değerlerini doğrulayın.
Kurumsal FortiGate tasarımı, VIP/policy düzenlemesi ve sorun giderme için Fortinet çözümleri sayfamızı inceleyebilir veya FortiGate teklif ve danışmanlık talebi oluşturabilirsiniz.
Resmî Fortinet Kaynakları
- FortiOS 7.6.6 Administration Guide — Hairpin NAT
- Fortinet Community — VIP’ye LAN’dan Hairpin NAT ile Erişim
- FortiGate CLI Reference — config firewall vip
- Fortinet Community — VIP extintf ve srcintf-filter Farkı
- Fortinet Community — nat-source-vip ve Central SNAT Davranışı
İçerik Fortinet’in resmî dokümanları temel alınarak hazırlanmıştır. Menü görünümü ve bazı varsayılanlar FortiOS sürümüne göre değişebileceği için uygulamadan önce cihaz sürümünüzün CLI referansını kontrol edin.
Bu konuda destek almak ister misiniz?
Teknoloji mimarlarımız mevcut altyapınızı ücretsiz değerlendiriyor ve size özel çözüm sunuyor.

