Kurumsal Network Kurulumu

FortiGate Firewall VLAN Yapılandırması: Alt Arayüz ve Trunk

FortiGate Firewall VLAN yapılandırması: her ağı etiketli VLAN arayüzü yapmak, üst portu ve native VLAN'ı boş bırakmak, VLAN'lar arası kural ve yanlış VLAN ID.

İlker Pehlivan

FortiGate Firewall VLAN yapılandırması, tek bir fiziksel portun üstüne her iç ağ bölümü için ayrı bir VLAN arayüzü açmaktır ve Network → Interfaces → Create New → Interface ekranında yapılır. NSA’nın ağ altyapısı rehberindeki düzende benzer sistemler ayrı VLAN’lara alınır, aralarındaki geçiş firewall’daki kurala bağlanır ve trunk’ın etiketsiz ağı kullanıcı trafiği taşımaz.

Bu yazı FortiGate Firewall yapılandırma rehberimizin 9. adımıdır. Lab cihazımda personel ağı başta üst portun etiketsiz ağındaydı; onu etiketli bir VLAN’a taşıdım, etiketleri kabloda izledim ve VLAN’lar arasındaki geçişi ölçtüm. En öğretici bulgu VLAN’lar arasında çıktı: FortiGate iki VLAN arasındaki yolu biliyordu, ama trafiği bir kural açana kadar geçirmedi. Switch’te bunun tersi olur.

Örnekteki sınır kapısına tek bir yol gelir, ama o yol taş bir refüjle şeritlere bölünmüştür. Her tır ön camında kendi şeridinin renkli kartını taşır ve görevli ona göre yol verir. Refüjdeki geçiş kapısı kapalıdır; bir şeritten öbürüne geçmek için kapının bilerek açılması gerekir.

FortiGate’te tek yol port kablosu, şeritler VLAN’lar, renkli kart 802.1Q etiketi, refüjdeki geçiş kapısı da kuraldır. Kartı olmayan tırın girdiği şerit, yazının asıl dersini taşıyor.

Bu yazı, Kurumsal Network Kurulumu hizmetimizde iç ağı bölümlere ayırırken firewall tarafında kurduğumuz düzeni anlatır.

FortiGate Firewall VLAN yapılandırması benzetmesi: sınır kapısına giden tek yol taş refüjle iki şeride bölünmüş, her tırın ön camında kendi şeridinin renkli kartı var, refüjdeki geçiş kapısı kapalı
Tek yol, her araç kendi şeridinin kartını taşıdıkça birden çok ayrı şeridi taşır. FortiGate'te de tek kablo birden çok VLAN taşır ve VLAN'lar arasındaki geçiş, bir kural açana kadar kapalıdır.

FortiGate VLAN Arayüzü Nedir? Tek Kabloda Birden Çok Ağ

FortiGate’te VLAN arayüzü, fiziksel bir portun üstünde duran sanal bir arayüzdür. Kendi adresi, kendi yönetim erişimi ve kendi kural sınırı vardır; FortiGate onu fiziksel port gibi ayrı bir arayüz olarak görür. Üst port (lab’da port2) etiketsiz çerçeveleri, VLAN arayüzleri de kendi numarasıyla etiketlenmiş çerçeveleri taşır.

Kablonun öbür ucunda switch’in trunk portu durur; etiketin çerçevenin neresine girdiğini ve trunk portunun access portundan farkını VLAN nedir yazımızda anlattık.

Lab cihazımda port2’nin altında dört VLAN vardı:

  1. misafir: VLAN 60.
  2. muhasebe: VLAN 70.
  3. dmz: VLAN 80.
  4. depo: VLAN 90.

Personel ağı ise ayrı bir VLAN değildi, üst portun kendi adresindeydi:

FortiGate CLI Çıktısı
config system interface
    edit "port2"
        set ip 10.34.30.1 255.255.255.0
        set allowaccess ping
        set alias "ic-ag"
...
        set role lan

Yani personel bilgisayarları etiketsiz çerçeveyle konuşuyordu. Switch tarafında etiketsiz çerçeve, trunk’ın native VLAN’ıdır. Kartı olmayan her tır personel şeridine giriyordu. Bu düzen çalışır, ama aşağıdaki kaynakların ilk istediği şeye aykırıdır.

FortiGate’te VLAN Düzeni Nasıl Olmalı?

Her ağ, personel dahil, etiketli bir VLAN arayüzüdür; üst portun adresi ve yönetim erişimi yoktur. VLAN’lar arasındaki her geçiş firewall’da yazılı bir kurala bağlıdır ve kural yoksa trafik geçmez. VLAN arayüzlerinde yönetim servisi açılmaz; yönetim kendi ağından yapılır.

Bu düzeni NSA’nın Network Infrastructure Security Guidance belgesinin (Mart 2022 sürümü) dört bölümü birlikte tarif ediyor:

  1. Bölüm 2.2, benzer sistemleri gruplamak: iş istasyonları, sunucular, yazıcılar ve telefonlar ayrı alt ağlara ya da VLAN’lara alınır. Alt ağlar arasına bir firewall konursa koruma daha güçlüdür, çünkü saldırganın geçmek için aradaki cihazı ele geçirmesi gerekir. Aradaki cihazda yalnız gereken port ve protokollere izin verilir.
  2. Bölüm 9.3, varsayılan VLAN’ı kapatmak: trunk’lara yalnız trunk’larda kullanılan ayrı bir native VLAN verilir. Kullanıcı ve yönetim trafiği varsayılan VLAN’dan çıkarılır; amaç, saldırganın etiketsiz trafiği bilerek etiketleyip başka bir VLAN’a atlamasını önlemektir.
  3. Bölüm 9.1, dinamik trunk’ı kapatmak: her port elle trunk ya da access olarak yazılır; port kendi kendine trunk’a dönmez.
  4. Bölüm 7.4, yönetim servislerine erişimi sınırlamak: yönetim servislerine yalnız yöneticilerin sistemleri bağlanır. Kullanıcı VLAN’larının arayüzünde HTTPS ve SSH kapalı kalır; yönetim erişiminin nasıl kurulduğunu yönetim erişimi yazımızda anlattık.

NSA’nın 2.2’de andığı ikinci seçenek, VLAN’lar arasını firewall yerine bir yönlendiricide ya da Layer 3 switch’te süzmektir. İkisinin farkı şöyle:

Layer 3 switch’te yönlendirmeFortiGate’te VLAN arayüzü
Yönlendirme açılıncaVLAN’lar arası her trafik geçerKural yazılana kadar hiçbir trafik geçmez
Kısıtlamak içinAyrıca erişim listesi yazılırKural zaten zorunludur
Oturum takibi ve logErişim listesinde yokHer kuralda var
Kablo yüküTrafik switch’te kalırVLAN’lar arası her paket trunk’tan bir gidip bir gelir

Tablonun son satırı, VLAN’lar arası yoğun trafiği olan ağın neden ikisini birlikte kullandığını açıklıyor: aynı güven düzeyindeki VLAN’lar switch’te, farklı güven düzeyindekiler firewall’da yönlendirilir. Switch’te yönlendirmenin nasıl açıldığını ve trafiğin kabloyu kaç kez geçtiğini Layer 3 switch yazımızda ölçtük.

Kaç VLAN Açılmalı?

NSA bir sayı vermiyor, ölçütü veriyor: işi ve güven düzeyi farklı her sistem grubu ayrı bir VLAN olur. Bizim planımızda personel, sunucular, IP telefonlar, kameralar ve misafirler ayrı VLAN’lardır; muhasebe gibi hassas veriyle çalışan bir birim de personelden ayrılır. Planın iki kuralı var:

  1. VLAN numarası, adres bloğunun üçüncü okteti olur. VLAN 30’un ağı 10.34.30.0/24, VLAN 70’inki 10.34.70.0/24. Numarayı bilen adresi de bilir.
  2. Her lokasyonda aynı numara aynı işe ayrılır. Planın tamamını yönetilebilir switch ayarları yazımızdaki segmentasyon planında, segmentlerin neye göre seçildiğini ağ segmentasyonu yazımızda anlattık.

Birinci kural bir standart değil, bizim kuralımız. VLAN’ı tanımlayan IEEE 802.1Q yalnız numaranın aralığını belirliyor: IEEE’nin kendi tanım dosyasında VLAN numarası 12 bitlik bir alandır ve 1 ile 4094 arasında bir değer alır. Numarayla IP adresi arasında bir bağ kurmaz. Kuralın kazancı teşhiste çıkıyor:

  1. Yanlış adres segmentasyon hatasını gösterir. Personel portuna takılı bir bilgisayar 10.34.60.x almışsa port misafir VLAN’ındadır. Sorunun kablo değil, VLAN ataması olduğu adresten okunur.
  2. Logdaki kaynak adres tek bakışta bir gruba bağlanır. 10.34.70.x muhasebedir, 10.34.60.x misafirdir. Envantere bakmak gerekmez.
  3. Birden çok lokasyon ya da müşteri karışmaz. Her ağda aynı kural geçerli olunca numarayı bilen adresi de bilir. Numarayla üçüncü oktetin her ağda başka eşleştiği bir düzende, birden çok yere bakan bir entegratör bir süre sonra hangi numaranın hangi ağ olduğunu ancak belgeye bakarak bulur.

Kuralın bir sınırı var: üçüncü oktet en çok 255 olur, VLAN numarası ise 4094’e kadar çıkar. Bu yüzden kural, 255’e kadar numaralanan ve her VLAN’a bir /24 blok veren bir planda tutar.

Etiketsiz Çerçeve Hangi Ağa Düşer?

Kart her tırın kendi şeridini söyler. Peki kartı olmayan tır nereye gider? Kapının bir kuralı vardır: kartsız gelen her tır, kapının “kartsızlar” şeridine alınır. Bu şeridin nereye çıktığı, kapıyı kuranın kararıdır.

Bu sahneyi dört parça kuruyor:

  1. 802.1Q etiketi tırın ön camındaki renkli karttır; çerçeveye 4 bayt ekler ve VLAN numarasını taşır.
  2. Native VLAN kartsızlar şerididir. Trunk, bu VLAN’ın çerçevelerini etiketsiz taşır.
  3. Üst port (port2) FortiGate’in kartsızlar şeridine bakan kapısıdır. Etiketsiz gelen çerçeveyi o alır.
  4. VLAN arayüzü kendi rengindeki kartı taşıyan tırları alan şerit kapısıdır.

Örnekteki sınır kapısında kartsızlar şeridi personel bürolarına çıkıyorsa, kartını unutan ya da bilerek çıkaran her tır personel bürolarının önüne gelir. Şeridi boş bir cebe bağlarsanız kartsız tır hiçbir yere varamaz. Çerçevenin yolu adım adım şöyledir:

  1. Switch’in access portu cihazdan etiketsiz çerçeveyi alır ve trunk’a koyarken portun VLAN numarasıyla etiketler.
  2. Trunk, native VLAN’ın çerçevelerini etiketsiz bırakır, ötekileri etiketli taşır.
  3. FortiGate etiketli çerçeveyi numarasına göre VLAN arayüzüne, etiketsiz çerçeveyi üst porta verir.
  4. Üst portun adresi yoksa etiketsiz çerçeve hiçbir ağa girmez; ARP sorusuna cevap veren bile olmaz.
FortiGate'in port2 arayüzü tek kabloyla switch'in trunk portuna bağlı. Kablo VLAN 30 personel, VLAN 60 misafir ve VLAN 70 muhasebe çerçevelerini 802.1Q etiketiyle taşır. Etiketsiz çerçeveler switch'te trunk'ın native VLAN'ına, FortiGate'te üst port port2'ye düşer. port2'nin adresi yok, bu yüzden etiketsiz gelen cihaz hiçbir ağa giremez; native VLAN kullanıcısız bırakılır. FortiGate'te her VLAN kendi adresi olan ayrı bir arayüzdür ve iki VLAN arasındaki geçiş bir kural ister; kural yoksa trafik policy 0 ile reddedilir. FortiGate port2 (ic-ag): üst port etiketsiz · adres yok personel VLAN 30 · 10.34.30.1 misafir VLAN 60 · 10.34.60.1 muhasebe VLAN 70 · 10.34.70.1 VLAN'lar arası geçiş: kural yoksa policy 0 Switch native VLAN kullanıcısız, ayrı numara VLAN 30 personel portları VLAN 60 misafir portları VLAN 70 muhasebe portları tek kablo trunk portu VLAN 30 + 60 + 70 (802.1Q etiketi) etiketsiz: çıkmaz FortiGate'in port2 arayüzü tek kabloyla switch'in trunk portuna bağlı. Kablo VLAN 30 personel, VLAN 60 misafir ve VLAN 70 muhasebe çerçevelerini 802.1Q etiketiyle taşır. Etiketsiz çerçeveler switch'te trunk'ın native VLAN'ına, FortiGate'te üst port port2'ye düşer. port2'nin adresi yok, bu yüzden etiketsiz gelen cihaz hiçbir ağa giremez; native VLAN kullanıcısız bırakılır. FortiGate'te her VLAN kendi adresi olan ayrı bir arayüzdür ve iki VLAN arasındaki geçiş bir kural ister; kural yoksa trafik policy 0 ile reddedilir. FortiGate port2 (ic-ag): üst port etiketsiz · adres yok personel VLAN 30 · 10.34.30.1 misafir VLAN 60 · 10.34.60.1 muhasebe VLAN 70 · 10.34.70.1 VLAN'lar arası geçiş: kural yoksa policy 0 tek kablo, trunk portu VLAN 30 + 60 + 70 etiketsiz: çıkmaz Switch native VLAN kullanıcısız, ayrı numara VLAN 30 personel portları VLAN 60 misafir portları VLAN 70 muhasebe portları
Her şeridin kendi rengi var; kartsızlar şeridi ise boş bir cebe çıkıyor. FortiGate'te bu cep, adresi olmayan üst port.

Bu düzenin kazancı iki tanedir:

  1. Kartsız tır içeri giremez. Yanlış ayarlanmış bir switch portuna ya da native VLAN’a takılan cihaz, hiçbir ağın ağ geçidine ulaşamaz. Lab’da bunu ölçtüm.
  2. Çift etiketleme saldırısının dayanağı kalkar. Saldırı, native VLAN’da bir cihazın dıştaki etiketin sökülmesine güvenmesine dayanır; native VLAN’da kimse yoksa bu adım işe yaramaz. Saldırının nasıl çalıştığını VLAN nedir yazımızın güvenlik bölümünde anlattık.

Bedeli, personel ağını üst porttan bir VLAN’a taşımaktır: o ağı kullanan her kural da yeni arayüze taşınır. Lab’da dört kural taşındı; aşağıda sırasıyla gösterdim.

FortiGate VLAN Yapılandırmasından Önce: Numara, Ağ ve Switch Trunk’ı

VLAN arayüzü açılmadan önce üç şey kâğıt üstünde eşleşir: VLAN numarası, FortiGate’teki arayüz ve o arayüzün ağı. Aynı numaralar switch’in trunk portunda da izinli olmalıdır. Lab’ın planı:

VLANFortiGate arayüzüAğ ve ağ geçidiSwitch trunk’ında
Etiketsizport2 (ic-ag)Adres yokNative VLAN, kullanıcısız
30personel10.34.30.0/24, 10.34.30.1İzinli, etiketli
60misafir10.34.60.0/24, 10.34.60.1İzinli, etiketli
70muhasebe10.34.70.0/24, 10.34.70.1İzinli, etiketli
80dmz10.34.80.0/24, 10.34.80.1İzinli, etiketli
90depo10.34.90.0/24, 10.34.90.1İzinli, etiketli

Switch tarafında VLAN açma, port atama ve trunk ayarını switch VLAN yapılandırması yazımızda, native VLAN’ın etiketsiz çerçeveyi nasıl taşıdığını VLAN nedir yazımızın native VLAN bölümünde gösterdik.

Üst Portu Boşaltmak: Personel Ağını VLAN 30’a Taşımak

FortiGate aynı ağı iki arayüzde tutmuyor. Bunu bir deneme arayüzüyle sınadım: port2 hâlâ 10.34.30.1/24 iken yeni bir VLAN arayüzüne aynı ağdan 10.34.30.2/24 vermeye çalıştım ve cihaz reddetti:

FortiGate CLI Çıktısı
node_check_object fail! for ip 10.34.30.2 255.255.255.0
value parse error before '255.255.255.0'
Command fail. Return code -54

Bu yüzden sıra şudur: önce üst portun adresi kaldırılır, sonra aynı adres VLAN arayüzüne verilir. Arada personel ağı birkaç dakika kesik kalır; bu iş bakım penceresinde yapılır. Üst portu boşaltan komutlar:

FortiGate CLI
config system interface
    edit "port2"
        set ip 0.0.0.0 0.0.0.0
        unset allowaccess
    next
end

unset allowaccess, adresi olmayan porttaki ping işaretini de kaldırır. Üst portun son hâli, cihazın kendi çıktısından:

FortiGate CLI Çıktısı
config system interface
    edit "port2"
        set vdom "root"
        set type physical
        set alias "ic-ag"
        set device-identification enable
        set lldp-transmission enable
        set role lan
        set snmp-index 2
    next
end

FortiGate’te VLAN Arayüzü Oluşturma

Bu adımdan önce iki şey hazır olmalı:

  1. Plan. Yukarıdaki tablo: numara, ad ve ağ.
  2. Boş ağ. VLAN’a verilecek ağ başka bir arayüzde durmamalı; lab’da 10.34.30.0/24 üst porttan kaldırıldı.

Ayar Network → Interfaces → Create New → Interface yolunda yapılır. Formda tür fabrika ayarında VLAN geliyor. personel arayüzünü şu alanlarla açtım:

  1. Name: personel. Arayüz adı sonradan değiştirilemediği için baştan anlamlı verilir.
  2. VLAN protocol: 802.1Q. Yanındaki 802.1AD, servis sağlayıcıların kendi etiketlerini üst üste koyduğu düzen içindir; iç ağda 802.1Q kullanılır.
  3. Interface: ic-ag (port2), yani kablonun takılı olduğu üst port.
  4. VLAN ID: 30. Switch’teki numarayla aynı olmalıdır.
  5. Role: fabrika ayarında LAN, öyle kaldı.
  6. IP/Netmask: 10.34.30.1/255.255.255.0, bu ağdaki cihazların ağ geçidi.
  7. Create address object matching subnet: fabrika ayarında açık. Kaydedince VLAN’ın ağı için personel address adlı bir adres nesnesi de oluşur.
  8. Administrative Access: formda hiçbir kutu işaretli gelmiyor. Yalnız PING’i işaretledim; HTTPS ve SSH yönetim ağında kalır.
FortiGate yeni arayüz formu: Name personel, Type VLAN, VLAN protocol 802.1Q, Interface ic-ag (port2), VLAN ID 30, IP/Netmask 10.34.30.1/255.255.255.0 ve açık Create address object matching subnet seçeneğiyle personel address nesnesi kırmızı çerçeveyle gösterilmiş; yalnız PING işaretli
VLAN arayüzü üç alandan doğuyor: üst port, numara ve adres. Form aynı ağ için bir adres nesnesini de kendisi öneriyor.

Kaydettikten sonra cihaz arayüzü ve adres nesnesini şöyle yazdı:

FortiGate CLI Çıktısı
config system interface
    edit "personel"
        set vdom "root"
        set ip 10.34.30.1 255.255.255.0
        set allowaccess ping
        set device-identification enable
        set role lan
        set snmp-index 13
        set interface "port2"
        set vlanid 30
    next
end
config firewall address
    edit "personel address"
        set type interface-subnet
        set subnet 10.34.30.1 255.255.255.0
        set interface "personel"
    next
end

personel address nesnesinin türü interface-subnet: nesne arayüze bağlı ve arayüzün ağını izliyor. Kural yazarken kaynak ya da hedef olarak bu nesne seçilir. Adres nesnelerinin türlerini ve adlandırılmasını FortiGate Firewall adres nesneleri yazımızda anlattık.

FortiGate’te CLI ile VLAN Arayüzü

Komut satırının farkını görmek için planın kamera VLAN’ını (50) CLI’dan açtım:

FortiGate CLI
config system interface
    edit "kamera"
        set vdom "root"
        set ip 10.34.50.1 255.255.255.0
        set allowaccess ping
        set role lan
        set interface "port2"
        set vlanid 50
    next
end

Arayüz aynı biçimde oluştu, ama bu kez adres nesnesi oluşmadı: adres listesinde kamera geçen bir nesne çıkmadı. Formdaki seçenek CLI’da yok; CLI ile açılan VLAN’ın nesnesi ayrıca açılır. Interfaces ekranında VLAN’lar üst portun altında ağaç olarak listeleniyor:

FortiGate arayüz listesinde ic-ag (port2) satırının adresi 0.0.0.0/0.0.0.0 ve yönetim erişimi boş, altında depo, dmz, kamera, misafir, muhasebe ve personel VLAN arayüzleri; port2 ve personel satırları kırmızı çerçeveyle gösterilmiş
Üst portun satırı boş: adresi de yönetim erişimi de yok. Bütün ağlar, personel dahil, onun altındaki VLAN arayüzleri.

Ölçümden sonra kamera arayüzünü sildim; kamerası olmayan lab’da boş bir VLAN arayüzü bırakmak istemedim.

Kurallar Arayüze Bağlıdır: Üst Porttan VLAN’a Taşımak

FortiGate’te kural adrese değil, arayüze bağlanır. Personel ağı port2’den personel’e geçince port2’yi kullanan dört kural da yeni arayüze yazıldı:

FortiGate CLI
config firewall policy
    edit 1
        set srcintf "personel"
    next
    edit 2
        set srcintf "personel"
    next
    edit 3
        set dstintf "personel"
    next
    edit 9
        set dstintf "personel" "ic-bolumler" "dmz"
    next
end

Kurallar sırasıyla personelin internet çıkışı (1), desteği bitmiş eski bir bilgisayarın çıkış engeli (2), dışarıdan iç web sunucusuna açılan sanal IP (3) ve WAN yazısındaki özel kaynak reddi (9). Taşımadan sonra üç yolu da sınadım: personelden internete, dışarıdan sanal IP’ye ve muhasebeden DMZ’ye giden üç istek de 200 aldı.

FortiGate VLAN Doğrulaması: Etiket Kabloda Görünüyor mu?

Arayüzler açıldı; şimdi kablonun öbür ucunun aynı numaralarla konuşması gerekiyor. Lab’da switch ve bilgisayarlar yerine bir Linux sunucusu koydum. Sunucu, FortiGate’in port2’sine bağlı kartının üstüne her VLAN için bir alt arayüz açtı ve her birini ayrı bir ad alanına (network namespace) taşıdı, ki ayrı ağlardaki ayrı bilgisayarlar gibi davransınlar. Muhasebe (VLAN 70) için komutlar:

Bash
sudo ip netns exec ic ip link add link ens192 name ens192.70 type vlan id 70
sudo ip netns exec ic ip link set ens192.70 netns muh
sudo ip netns exec muh ip addr add 10.34.70.10/24 dev ens192.70
sudo ip netns exec muh ip link set ens192.70 up
sudo ip netns exec muh ip route add default via 10.34.70.1

Komutların işi sırayla:

  1. ip link add ... type vlan id 70: üst kart ens192’nin üstüne VLAN 70 alt arayüzü açar. Üst kart, personel ağının bulunduğu ic ad alanında duruyor.
  2. ip link set ... netns muh: alt arayüzü muhasebe bilgisayarını taklit eden ad alanına taşır.
  3. ip addr add, ip link set ... up: adres verir ve arayüzü açar.
  4. ip route add default via 10.34.70.1: ağ geçidi olarak FortiGate’in muhasebe arayüzünü yazar.

Personel (30), misafir (60) ve muhasebe (70) ağından kendi ağ geçidine birer ping attım ve üst kartta kabloyu yakaladım:

Çıktı
09:54:41.433263 00:0c:29:a0:71:ae > 00:0c:29:d1:72:37, ethertype 802.1Q (0x8100), length 102: vlan 30, p 0, ethertype IPv4 (0x0800), 10.34.30.10 > 10.34.30.1: ICMP echo request, id 61267, seq 1, length 64
09:54:41.433614 00:0c:29:d1:72:37 > 00:0c:29:a0:71:ae, ethertype 802.1Q (0x8100), length 102: vlan 30, p 0, ethertype IPv4 (0x0800), 10.34.30.1 > 10.34.30.10: ICMP echo reply, id 61267, seq 1, length 64
09:54:41.454009 00:0c:29:a0:71:ae > 00:0c:29:d1:72:37, ethertype 802.1Q (0x8100), length 102: vlan 60, p 0, ethertype IPv4 (0x0800), 10.34.60.10 > 10.34.60.1: ICMP echo request, id 61270, seq 1, length 64
...
09:54:41.473164 00:0c:29:a0:71:ae > 00:0c:29:d1:72:37, ethertype 802.1Q (0x8100), length 102: vlan 70, p 0, ethertype IPv4 (0x0800), 10.34.70.10 > 10.34.70.1: ICMP echo request, id 61273, seq 1, length 64
09:54:41.473734 00:0c:29:d1:72:37 > 00:0c:29:a0:71:ae, ethertype 802.1Q (0x8100), length 102: vlan 70, p 0, ethertype IPv4 (0x0800), 10.34.70.1 > 10.34.70.10: ICMP echo reply, id 61273, seq 1, length 64

Her çerçeve kendi vlan etiketini taşıyor. FortiGate üç ağda da aynı MAC adresiyle (00:0c:29:d1:72:37) cevap veriyor: çerçeveyi hangi arayüze vereceğine MAC adresine bakarak değil, etikete bakarak karar veriyor.

Etiket çerçeveye 4 bayt ekler. 1472 baytlık bir ping VLAN 30’da 1518 baytlık çerçeve oldu; aynı boydaki etiketsiz bir paket 1514 bayttı (onu aşağıda, etiketsiz cihazdan gönderdim):

Çıktı
09:54:41.496517 00:0c:29:a0:71:ae > 00:0c:29:d1:72:37, ethertype 802.1Q (0x8100), length 1518: vlan 30, p 0, ethertype IPv4 (0x0800), 10.34.30.10 > 10.34.30.1: ICMP echo request, id 61276, seq 1, length 1480
...
09:54:44.627100 5e:5a:17:f3:36:4b > 00:0c:29:d1:72:37, ethertype IPv4 (0x0800), length 1514: 10.34.30.99 > 10.34.30.1: ICMP echo request, id 61286, seq 1, length 1480

IP paketi iki durumda da 1500 bayt kaldı; etiket MTU’dan yemedi, çerçeveyi büyüttü. Ethernet’in 1500 baytlık sınırını Ethernet nedir yazımızda anlattık.

Etiketsiz Gelen Cihaz Artık Hiçbir Ağa Giremiyor

Üst portu boşaltmanın sonucunu da ölçtüm. Linux sunucusunda üst karta etiketsiz bir arayüz daha açtım ve ona personel ağından bir adres verdim (10.34.30.99/24): native VLAN’a takılmış, adresini de doğru bilen bir cihaz. Ağ geçidine üç ping attım; üçü de cevapsız kaldı ve ARP kaydı FAILED oldu. FortiGate’te port2 üzerinde etiketsiz ARP ve ICMP paketlerini izledim:

FortiGate CLI Çıktısı
gmfw01 # diagnose sniffer packet port2 'arp or (icmp and not vlan)' 4 0 a
Using Original Sniffing Mode
interfaces=[port2]
filters=[arp or (icmp and not vlan)]
pcap_lookupnet: port2: no IPv4 address assigned
2026-10-01 09:54:41.530049 port2 -- arp who-has 10.34.30.1 tell 10.34.30.99
2026-10-01 09:54:42.543156 port2 -- arp who-has 10.34.30.1 tell 10.34.30.99
2026-10-01 09:54:43.567110 port2 -- arp who-has 10.34.30.1 tell 10.34.30.99
2026-10-01 09:54:44.636856 port2 -- 10.34.30.99 -> 10.34.30.1: icmp: echo request

Satırlar sırayla şunu söylüyor:

  1. pcap_lookupnet: port2: no IPv4 address assigned: üst portun adresi yok; yakalama aracı bile bunu söylüyor.
  2. Üç arp who-has satırı: etiketsiz cihaz ağ geçidini soruyor; sorular porta ulaşıyor ama cevap çıkmıyor.
  3. icmp: echo request: ARP’yi elle verince paket de porta ulaştı; cevap yine yok.

Örnekteki sınır kapısında kartsız tır kartsızlar şeridine girdi ve boş cebe vardı. Önceki düzende aynı tır personel bürolarının önüne gelirdi.

FortiGate’te VLAN’lar Arası Trafik: Rota Var, Kural Yok

Her VLAN kendi ağ geçidine ulaşıyor. Sıradaki soru şu: iki VLAN birbirine ulaşıyor mu? Personeldeki 10.34.30.10’dan muhasebedeki 10.34.70.10’a ping attım; iki istek de cevapsız kaldı. FortiGate’in pakete ne yaptığını görmek için paketin yolunu izleyen debug flow komutlarını sırayla çalıştırdım:

  1. diagnose debug flow filter addr 10.34.70.10: yalnız bu adrese giden ve gelen paketleri izle.
  2. diagnose debug flow show function-name enable: her satırda kararı veren işlevi göster.
  3. diagnose debug flow trace start 20: sonraki yirmi paketi izle.
  4. diagnose debug enable: çıktıyı ekrana ver.

İlk paketin izi, satır başlarındaki tarih kısaltılarak:

FortiGate CLI Çıktısı
... trace_id=11 func=print_pkt_detail line=5845 msg="vd-root:0 received a packet(proto=1, 10.34.30.10:61360->10.34.70.10:2048) tun_id=0.0.0.0 from personel. type=8, code=0, id=61360, seq=1."
... trace_id=11 func=init_ip_session_common line=6024 msg="allocate a new session-0003fcc2, tun_id=0.0.0.0"
... trace_id=11 func=vf_ip_route_input_common line=2605 msg="find a route: flag=04000000 gw-10.34.70.10 via muhasebe"
... trace_id=11 func=fw_forward_handler line=719 msg="Denied by forward policy check (policy 0)"

Dört satır paketin FortiGate içindeki yolunu veriyor:

  1. Paket personel arayüzünden girdi. FortiGate onu etiketinden tanıdı.
  2. Oturum açıldı. FortiGate bağlantıyı kendi tablosuna aldı.
  3. Rota bulundu: via muhasebe. İki VLAN da FortiGate’e doğrudan bağlı olduğu için yol kendiliğinden biliniyor.
  4. Paket reddedildi: policy 0. personel’den muhasebe’ye giden bir kural yok; listenin sonundaki örtük ret devreye girdi.

Kuralların listede nasıl okunduğunu ve örtük reddi firewall nedir yazımızda anlattık. Switch’te durum tersidir: yönlendirme açıldığı anda VLAN’lar arası her trafik geçer ve kısıtlamak için ayrıca erişim listesi yazmak gerekir. Bunu switch’te VLAN’lar arası yönlendirme yazımızda gösterdik. FortiGate’te VLAN’lar arasındaki yol baştan kapalıdır ve her geçiş yazılı bir kurala dayanır.

Bölge Üyesi VLAN Kuralda Kendi Adıyla Seçilmez

Karşılaştırma için personelden muhasebeye yalnız ping’e izin veren bir kural yazdım. Hedef arayüze muhasebe yazınca cihaz reddetti:

FortiGate CLI Çıktısı
node_check_object fail! for name muhasebe
value parse error before 'muhasebe'
Command fail. Return code -651

Sebep şu: muhasebe, ic-bolumler bölgesinin (zone) üyesi. FortiGate’te bölgeye alınan arayüz kurallarda tek başına seçilmiyor; kural bölgeye yazılıyor, hedef de adres nesnesiyle daraltılıyor. Bölgelerin ne işe yaradığını FortiGate Firewall zone yapılandırması yazımızda anlattık.

Arayüzde yol Policy & Objects → Firewall Policy → Create New:

  1. Name: Personelden muhasebeye ping.
  2. Incoming Interface: personel, VLAN 30’un arayüzü.
  3. Outgoing Interface: ic-bolumler. Listede muhasebe tek başına çıkmıyor, bölgesi seçiliyor.
  4. Source ve Destination: iki VLAN’ın ağı. Hedef adres bölgenin içinden yalnız muhasebeyi ayırıyor.
  5. Service: PING.
  6. NAT: kapalı. Form izin veren her kuralda NAT’ı açık getiriyor. İç ağlar arasında adres değiştirmek, muhasebe tarafının logunda personeldeki makinenin yerine FortiGate’in adresini gösterir.
FortiGate New Policy formu, Personelden muhasebeye ping: Outgoing Interface ic-bolumler, Destination n-muhasebe ve kapalı NAT anahtarı kırmızı çerçeveyle işaretli
Muhasebe VLAN'ı kuralda bölgesiyle seçiliyor, hedef adres onu bölgenin içinden ayırıyor.

Ekrandaki adres nesnelerinin adı bugünkü adlar: kural kaydedildiğinde cihazın kendiliğinden oluşturduğu personel address ve muhasebe address kullanılıyordu, rehberin adres nesneleri adımında n-personel ve n-muhasebe olarak yeniden adlandırıldı. Kural bu biçimde kaydedildi:

FortiGate CLI
config firewall policy
    edit 10
        set name "Personelden muhasebeye ping"
        set srcintf "personel"
        set dstintf "ic-bolumler"
        set action accept
        set srcaddr "personel address"
        set dstaddr "muhasebe address"
        set schedule "always"
        set service "PING"
    next
end

Aynı ping bu kez cevap aldı. İzde reddin yerini kural numarası aldı; cevap paketi de yeni bir kural aramadan, açılan oturumun dönüş yönü olarak geçti:

FortiGate CLI Çıktısı
... trace_id=15 func=vf_ip_route_input_common line=2605 msg="find a route: flag=04000000 gw-10.34.70.10 via muhasebe"
... trace_id=15 func=fw_forward_handler line=881 msg="Allowed by Policy-10:"
... trace_id=16 func=print_pkt_detail line=5845 msg="vd-root:0 received a packet(proto=1, 10.34.70.10:61480->10.34.30.10:0) tun_id=0.0.0.0 from muhasebe. type=0, code=0, id=61480, seq=1."
... trace_id=16 func=resolve_ip_tuple_fast line=5931 msg="Find an existing session, id-0003fd42, reply direction"

Ölçümden sonra kuralı sildim; kural setinin nasıl tasarlandığını FortiGate Firewall policy yapılandırması yazımızda anlattık.

Örnekteki sınır kapısında refüjdeki geçiş kapısı kapalı durur ve açılması için görevlinin yazılı bir talimatı gerekir. Talimat yoksa tır kendi şeridinde kalır, şerit ne kadar yakın olursa olsun.

FortiGate VLAN Sorun Giderme: Yanlış VLAN ID Sessiz Kalır

VLAN’da en sık karşınıza çıkacak arıza, iki uçtaki numaranın tutmamasıdır. Bunu lab’da kurdum: Linux sunucusunda muhasebe ağından bir adres (10.34.70.11) verdim, ama alt arayüzün numarasını 71 yaptım. Adres doğru, etiket yanlış. Ağ geçidine ping cevapsız kaldı; kabloda ağ geçidini soran ARP istekleri göründü, cevap gelmedi:

Çıktı
09:57:59.882946 00:0c:29:a0:71:ae > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 46: vlan 71, p 0, ethertype ARP (0x0806), Request who-has 10.34.70.1 tell 10.34.70.11, length 28
09:58:00.933479 00:0c:29:a0:71:ae > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 46: vlan 71, p 0, ethertype ARP (0x0806), Request who-has 10.34.70.1 tell 10.34.70.11, length 28
09:58:01.957547 00:0c:29:a0:71:ae > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 46: vlan 71, p 0, ethertype ARP (0x0806), Request who-has 10.34.70.1 tell 10.34.70.11, length 28

Sonra FortiGate tarafına baktım. Paket yakalama komutunu port2 üzerinde yalnız VLAN 71 çerçevelerini gösterecek biçimde çalıştırdım ve beş ping boyunca bekledim: ekrana tek satır düşmedi.

FortiGate CLI Çıktısı
gmfw01 # diagnose sniffer packet port2 'vlan 71' 4 0 a
...
0 packets received by filter
0 packets dropped by kernel

Aynı komutu VLAN 70 için çalıştırınca doğru numaralı istemcinin çerçeveleri hemen göründü:

FortiGate CLI Çıktısı
gmfw01 # diagnose sniffer packet port2 'vlan 70' 4 3 a
...
2026-10-01 09:57:40.268977 port2 -- 802.1Q vlan#70 P0 
2026-10-01 09:57:40.269046 port2 -- 802.1Q vlan#70 P0 
2026-10-01 09:57:41.295735 port2 -- 802.1Q vlan#70 P0 

Lab’daki FortiGate sanal makinesi, tanımadığı bir etiketle gelen çerçeveyi kendi yakalamasında bile göstermedi. Etiketsiz çerçeve ise yakalamada görünmüştü; yani cihaz bilinmeyen numarayı etiketsiz çerçeveden farklı ele alıyor. Donanım modellerinde davranış farklı olabilir, ama sonuç aynı yere çıkar: yanlış numara hata üretmez, sessizlik üretir. Teşhis bu yüzden numaraları karşılaştırarak başlar:

  1. FortiGate’teki numara: show system interface muhasebe çıktısındaki set vlanid satırı.
  2. FortiGate’e hangi etiketin geldiği: diagnose sniffer packet port2 'vlan 70'. Kendi numaranızla hiçbir şey görünmüyorsa çerçeve ya başka numarayla geliyor ya hiç gelmiyor.
  3. Switch’teki numara ve trunk izni: trunk portunda bu VLAN’a izin var mı, cihazın portu hangi VLAN’da? Switch tarafındaki doğrulama komutlarını switch VLAN yapılandırması yazımızın doğrulama bölümünde anlattık.

Örnekteki sınır kapısında yanlış renkte kart taşıyan tır uyarı almaz; hiçbir şerit onu kendi aracı saymaz ve tır yolda bekler.

Doğrulama: FortiGate’in VLAN Düzeni Doğru mu?

Ayar bittiğinde beş şey kontrol edilir; her biri yukarıda lab’da ölçüldü:

  1. Üst port boş. Interfaces listesinde üst portun adresi 0.0.0.0/0.0.0.0, yönetim erişimi boştur; etiketsiz gelen bir cihazın ARP sorusu cevapsız kalır.
  2. Her ağ etiketli. Kablodaki yakalamada her ağın çerçevesi kendi vlan etiketini taşır.
  3. Kurallar yeni arayüzde. show firewall policy çıktısında eski üst port adı geçmez.
  4. VLAN’lar arası trafik kurala bağlı. Kuralı olmayan geçiş diagnose debug flow çıktısında policy 0 ile düşer.
  5. Numaralar iki uçta aynı. diagnose sniffer packet port2 'vlan N' her VLAN için çerçeve gösterir.

Sonuç: FortiGate’te Her Ağ Etiketli Bir VLAN, Üst Port Boş

FortiGate’te VLAN, üst portun altında açılan ve kendi adresi olan ayrı bir arayüzdür. Doğru düzende personel ağı da etiketli bir VLAN’dır, üst portun adresi ve yönetim erişimi yoktur ve VLAN’lar arasındaki her geçiş yazılı bir kurala bağlıdır. Lab’da dört şey beklenenden farklı çıktı:

  1. FortiGate aynı ağı iki arayüzde tutmadı. Personel ağını taşımak için önce üst portun adresini kaldırmak gerekti; arada ağ kısa bir süre kesik kaldı.
  2. Kurallar arayüze bağlıydı. Ağ aynı kalsa da arayüz değişince dört kuralın da arayüz satırı elle değiştirildi.
  3. Zone üyesi VLAN kuralda kendi adıyla seçilemedi. muhasebe için yazılan kural, zone’a yazılıp adres nesnesiyle daraltılınca kaydedildi.
  4. Yanlış numara ile etiketsiz çerçeve farklı davrandı. Etiketsiz çerçeve FortiGate’in yakalamasında göründü ama cevapsız kaldı; VLAN 71 çerçevesi yakalamada bile görünmedi.

Örnekteki sınır kapısında tek yol birden çok şeridi taşır, çünkü her tır kendi şeridinin kartını taşır ve refüjdeki kapı kapalı durur. Kartsızlar şeridinin boş bir cebe çıkması da kapıyı kuranın kararıdır: kartını unutan tır hiçbir büronun önüne varamaz.

VLAN’lardaki cihazlara adres dağıtmayı ve isteği başka ağdaki bir sunucuya ileten DHCP relay’i FortiGate Firewall DHCP sunucusu yazımızda anlattık. Açılış listesinin kalanı 20 adımlık kontrol listesinde duruyor.

FortiGate Firewall VLAN Yapılandırması Hakkında Sık Sorulan Sorular

Çünkü aralarında kural yoktur. FortiGate iki VLAN arasındaki rotayı kendiliğinden bilir, ama trafiği bir kural açmadıkça geçirmez. Lab'da personel VLAN'ından muhasebe VLAN'ına giden ping, diagnose debug flow çıktısında rotayı buldu ve Denied by forward policy check (policy 0) satırıyla düştü. Yalnız ping'e izin veren bir kural eklenince aynı ping geçti, cevabı da açılan oturumun dönüş yönünden döndü.
Olmamalı. Üst portun etiketsiz ağı, switch tarafında trunk'ın native VLAN'ıdır ve NSA ağ altyapısı rehberi bölüm 9.3'te native VLAN'ın kullanıcı trafiği taşımamasını istiyor. Kullanıcı ağı da etiketli bir VLAN arayüzü olur. Lab'da üst portun adresi kaldırıldıktan sonra etiketsiz gelen bir cihazın ARP soruları ve paketleri porta ulaştı, ama hiçbir ağa giremedi.
Aynı FortiGate portundan birden çok VLAN geçiyorsa evet. Switch portu elle trunk yapılır ve yalnız FortiGate'te açılan numaraları taşımasına izin verilir. Trunk'ın native VLAN'ı da hiçbir cihazın bağlı olmadığı ayrı bir numara olur.
Hiçbir hata görünmez, cihazlar yalnızca ulaşamaz. Lab'da adresi muhasebe ağından, VLAN numarası yanlış (71) olan bir istemcinin ARP soruları kabloda göründü ama cevapsız kaldı. FortiGate'in port2 üzerindeki paket yakalaması VLAN 71 çerçevelerinden tek birini bile göstermedi; teşhisin ilk adımı iki taraftaki numarayı karşılaştırmaktır.
İkisi aynı arayüzü üretir, bir farkla: arayüz formundaki Create address object matching subnet seçeneği fabrika ayarında açıktır ve VLAN'ın ağı için bir adres nesnesi de oluşturur (lab'da personel address). CLI ile açılan arayüz için böyle bir nesne oluşmadı. Kural yazarken bu nesneye ihtiyaç duyacaksanız ya formu kullanın ya da nesneyi ayrıca açın.
İlker Pehlivan
Yazan

BT Danışmanı | Ağ, Sistem ve Güvenlik Yönetimi

İlker Pehlivan, karmaşık BT altyapılarını ölçeklenebilir ve güvenli sistemlere dönüştürür. Buradaki rehberleri kendi laboratuvarında kurup ölçerek yazar.

LinkedIn

Benzer Makaleler

Kurumsal Network Kurulumu altındaki diğer 114 makale