İçeriğe geç
Teknik Orta 14 dk okuma

MikroTik VLAN — Fabrikada 3 Ağı Nasıl İzole Ettim

RouterOS 7 bridge VLAN filtering ile fabrika ağını segmentlere ayırdım. Yönetim, üretim, personel, misafir — 4 VLAN, trunk/access port config, inter-VLAN firewall, CRS326 switch ayarları ve sahada karşılaştığım hatalar.

Erdem Özyurt

· Güncellendi:

Bir fabrikada ağ değerlendirmesi yapıyordum. PLC’ler, ERP sunucusu, çalışan bilgisayarları, IP kameralar ve misafir WiFi — hepsi aynı switch’e bağlı, aynı subnet’te.

Muhasebe bilgisayarından ping attım. PLC’ler cevap verdi. Kameralar cevap verdi. Misafir WiFi AP bile cevap verdi.

Tek bir enfekte cihaz tüm üretim hattını durdurabilirdi.


Senaryo

  • Cihaz: MikroTik RB4011 (router) + CRS326-24G-2S+ (switch)
  • RouterOS: 7.16
  • Mevcut durum: Tüm cihazlar 192.168.1.0/24’te, segmentasyon yok
  • Hedef: 4 VLAN — yönetim, üretim, personel, misafir

VLAN Planı

Konfigürasyona başlamadan önce çizdiğim tablo:

VLAN IDİsimSubnetGatewayİnternetİç Ağ
10Yönetim10.10.10.0/24.1Tüm VLAN’lara
20Üretim10.20.20.0/24.1Sadece yönetimden
30Personel10.30.30.0/24.1Kendi VLAN’ı
40Misafir10.40.40.0/24.1❌ Hiçbir yere

Üretim VLAN’ı internete çıkmaz — PLC’lerin internet erişimi olması güvenlik riski. IEC 62443 endüstriyel ağlarda IT/OT segmentasyonunu kritik güvenlik kontrolü olarak tanımlar (IEC 62443, 2023).


Adım 1: Bridge ve Portlar

# Bridge oluştur — filtering'i henüz AÇMA
/interface bridge
add name=br-main vlan-filtering=no \
    comment="Ana bridge — VLAN filtering sonra açılacak"

İlk hatam: vlan-filtering=yes ile başladım — yönetim erişimim kesildi. Console kablosuyla geri döndüm. Önce her şeyi yapılandır, en son filtering’i aç.

# Portları bridge'e ekle
/interface bridge port

# ether1 = WAN — bridge'e EKLENMEz

# ether2 = Trunk → CRS326
add bridge=br-main interface=ether2

# Lokal access portlar (RB4011 üzerindeki)
add bridge=br-main interface=ether3 pvid=10 \
    comment="Access — Yönetim PC"
add bridge=br-main interface=ether4 pvid=20 \
    comment="Access — PLC switch"
add bridge=br-main interface=ether5 pvid=30 \
    comment="Access — Personel"

pvid access portta kritik — porttan gelen tagsiz trafik bu VLAN’a atanır. Cihazın VLAN’dan haberi yok, switch halleder.


Adım 2: VLAN Tablosu

/interface bridge vlan

# VLAN 10 — Yönetim
# tagged: bridge kendisi (router inter-VLAN için) + trunk port
# untagged: ether3 (yönetim PC'si)
add bridge=br-main vlan-ids=10 \
    tagged=br-main,ether2 \
    untagged=ether3

# VLAN 20 — Üretim
add bridge=br-main vlan-ids=20 \
    tagged=br-main,ether2 \
    untagged=ether4

# VLAN 30 — Personel
add bridge=br-main vlan-ids=30 \
    tagged=br-main,ether2 \
    untagged=ether5

# VLAN 40 — Misafir (WiFi AP trunk'tan geliyor)
add bridge=br-main vlan-ids=40 \
    tagged=br-main,ether2

Bridge’in kendisi tagged listesinde olmalı — yoksa router VLAN trafiğini göremez, inter-VLAN routing çalışmaz. Bu detayı dokümantasyonda bulmak zor, sahada öğrendim.


Adım 3: VLAN Interface ve IP

/interface vlan
add name=vlan10-mgmt interface=br-main vlan-id=10
add name=vlan20-prod interface=br-main vlan-id=20
add name=vlan30-staff interface=br-main vlan-id=30
add name=vlan40-guest interface=br-main vlan-id=40

/ip address
add address=10.10.10.1/24 interface=vlan10-mgmt \
    comment="Yönetim gateway"
add address=10.20.20.1/24 interface=vlan20-prod \
    comment="Üretim gateway"
add address=10.30.30.1/24 interface=vlan30-staff \
    comment="Personel gateway"
add address=10.40.40.1/24 interface=vlan40-guest \
    comment="Misafir gateway"

Adım 4: DHCP — Her VLAN Kendi Havuzunda

/ip pool
add name=pool-mgmt ranges=10.10.10.10-10.10.10.50
add name=pool-prod ranges=10.20.20.10-10.20.20.100
add name=pool-staff ranges=10.30.30.10-10.30.30.200
add name=pool-guest ranges=10.40.40.10-10.40.40.100

/ip dhcp-server
add name=dhcp-mgmt interface=vlan10-mgmt \
    address-pool=pool-mgmt lease-time=8h
add name=dhcp-prod interface=vlan20-prod \
    address-pool=pool-prod lease-time=12h
add name=dhcp-staff interface=vlan30-staff \
    address-pool=pool-staff lease-time=8h
add name=dhcp-guest interface=vlan40-guest \
    address-pool=pool-guest lease-time=1h

/ip dhcp-server network
add address=10.10.10.0/24 gateway=10.10.10.1 dns-server=1.1.1.1
add address=10.20.20.0/24 gateway=10.20.20.1 dns-server=10.20.20.1
add address=10.30.30.0/24 gateway=10.30.30.1 dns-server=1.1.1.1
add address=10.40.40.0/24 gateway=10.40.40.1 dns-server=1.1.1.1

Üretim VLAN’ının DNS’i gateway’in kendisi — dışarı çözümleme yapılmasını istemiyoruz. Gerekirse lokal DNS eklenebilir.

Misafir lease 1 saat — kısa tutmak IP havuzunu verimli kullanır ve geçici bağlantıları sınırlandırır.


Adım 5: Inter-VLAN Firewall

VLAN’lar ayrıldı ama router hepsinin gateway’i — varsayılan olarak aralarında routing yapıyor. Firewall ile kontrol altına al:

/ip firewall filter

# === Established/Related — her zaman en üstte ===
add chain=forward action=accept \
    connection-state=established,related \
    comment="Established bağlantılar"

# === Misafir: SADECE internet ===
add chain=forward action=drop \
    in-interface=vlan40-guest out-interface=!ether1 \
    comment="Misafir → LAN yasak, sadece WAN"

# === Üretim: Dışarıdan giriş sadece yönetimden ===
add chain=forward action=accept \
    in-interface=vlan10-mgmt out-interface=vlan20-prod \
    comment="Yönetim → Üretim: İzin"

add chain=forward action=drop \
    out-interface=vlan20-prod \
    comment="Diğer → Üretim: Yasak"

# === Üretim: İnternete çıkış yok ===
add chain=forward action=drop \
    in-interface=vlan20-prod out-interface=ether1 \
    comment="Üretim → İnternet: Yasak"

# === Personel: Kendi ağı + internet ===
add chain=forward action=drop \
    in-interface=vlan30-staff out-interface=vlan20-prod \
    comment="Personel → Üretim: Yasak"

add chain=forward action=drop \
    in-interface=vlan30-staff out-interface=vlan10-mgmt \
    comment="Personel → Yönetim: Yasak"

# === Genel internet çıkışı ===
add chain=forward action=accept \
    out-interface=ether1 \
    comment="İnternet çıkışı"

Kural sırası kritik — RouterOS yukarıdan aşağıya işler, ilk eşleşen kural uygulanır. Established kuralı en üstte olmazsa mevcut bağlantılar da düşer.

NAT

/ip firewall nat
# VLAN'lar arası trafikte NAT yapma
add chain=srcnat action=accept \
    src-address=10.0.0.0/8 dst-address=10.0.0.0/8 \
    comment="İç ağ: NAT bypass"

# İnternet çıkışı
add chain=srcnat action=masquerade \
    out-interface=ether1 \
    comment="WAN masquerade"

NAT bypass kuralı masquerade’den önce olmalı — yoksa VLAN’lar arası trafikte kaynak IP NAT’lanır, loglarınız işe yaramaz.


Adım 6: VLAN Filtering’i Aç

Her şey hazır. Şimdi Safe Mode ile filtering’i aç:

# Safe Mode: Ctrl+X (WinBox'ta veya terminal'de)
# 9 dakika içinde onaylamazsan otomatik geri döner

/interface bridge set br-main vlan-filtering=yes

# Test et — yönetim PC'sinden router'a erişim var mı?
/ping 10.10.10.1
# Çalışıyorsa → Ctrl+X ile Safe Mode'u kapat (onaylama)

Safe Mode hayat kurtarır. Uzaktan konfigürasyon yapıyorsan ve filtering açınca erişim kesilirse — 9 dakika bekle, otomatik geri döner.


CRS326 Switch Konfigürasyonu

Router tarafı tamam. Şimdi switch:

# CRS326 — RouterOS modunda
/interface bridge
add name=br-sw vlan-filtering=no

/interface bridge port
# ether1 = Uplink (trunk → RB4011)
add bridge=br-sw interface=ether1

# Yönetim portları
add bridge=br-sw interface=ether2 pvid=10
add bridge=br-sw interface=ether3 pvid=10

# Üretim portları (PLC'ler)
add bridge=br-sw interface=ether4 pvid=20
add bridge=br-sw interface=ether5 pvid=20
add bridge=br-sw interface=ether6 pvid=20
add bridge=br-sw interface=ether7 pvid=20

# Personel portları
add bridge=br-sw interface=ether8 pvid=30
add bridge=br-sw interface=ether9 pvid=30
add bridge=br-sw interface=ether10 pvid=30
add bridge=br-sw interface=ether11 pvid=30
add bridge=br-sw interface=ether12 pvid=30

# WiFi AP (trunk — misafir + personel VLAN)
add bridge=br-sw interface=ether24

/interface bridge vlan
add bridge=br-sw vlan-ids=10 \
    tagged=ether1 untagged=ether2,ether3
add bridge=br-sw vlan-ids=20 \
    tagged=ether1 untagged=ether4,ether5,ether6,ether7
add bridge=br-sw vlan-ids=30 \
    tagged=ether1,ether24 untagged=ether8,ether9,ether10,ether11,ether12
add bridge=br-sw vlan-ids=40 \
    tagged=ether1,ether24

# Switch yönetimi için — trunk üzerinden VLAN 10'dan erişim
/interface bridge vlan
add bridge=br-sw vlan-ids=99 tagged=ether1

# En son: filtering aç
/interface bridge set br-sw vlan-filtering=yes

WiFi AP’ye trunk bağlantı gidiyor — AP üzerinde SSID bazlı VLAN ataması yapılır:

  • Firma-WiFi → VLAN 30 (personel)
  • Misafir → VLAN 40 (misafir)

Switch Chip vs CPU — Performans Farkı

YöntemThroughputCPU YüküNe Zaman
Bridge VLAN filtering (switch chip)Line rate (~25 Gbps)%0-2RouterOS 6.41+ destekli cihazlar
Eski yöntem (CPU bridge)100-300 Mbps%40-80Switch chip’i olmayan cihazlar
SwOS (CRS)Line rate%0Sadece L2 — routing yok

Switch chip desteğini doğrula:

/interface ethernet print
# "switch: switch1" → donanımsal VLAN ✅
# "switch:" boş → CPU üzerinden ⚠️

RB4011, CRS326, CRS328, CCR2004 — hepsi switch chip destekli. hAP lite gibi küçük cihazlarda switch chip sınırlı (MikroTik Docs, 2025).


Sahada Karşılaştığım Hatalar

1. “VLAN filtering açtım, erişimim kesildi”

Yönetim portum VLAN tablosunda yoktu. Console kabloyla girdim, geri aldım.

Çözüm: Yönetim VLAN’ını (tagged=bridge, untagged=yönetim portu) önce ekle, sonra filtering’i aç. Safe Mode kullan.

2. “Access port cihazı IP alamıyor”

PVID ile VLAN tablosu tutarsızdı — pvid=20 ama VLAN tablosunda o port untagged olarak eklenmemişti.

Kontrol:

/interface bridge port print where interface=ether4
# pvid=20 mi?

/interface bridge vlan print where vlan-ids=20
# untagged listesinde ether4 var mı?

İkisi tutarlı olmalı.

3. “VLAN’lar arası trafik geçmiyor ama geçmesi lazım”

Bridge VLAN tablosunda bridge kendisi tagged listesinde değildi.

/interface bridge vlan print
# tagged sütununda "br-main" görünmeli

Bridge tagged değilse router VLAN trafiğini göremez — inter-VLAN routing çalışmaz.

4. “Trunk port hiçbir VLAN taşımıyor”

Trunk portun pvid’si ayarlanmıştı — access port gibi davranıyordu.

Kontrol:

/interface bridge port print where interface=ether2
# pvid=1 (varsayılan) olmalı, özel bir değer olmamalı
# frame-types=admit-all olmalı

5. “NAT bypass unutuldu — loglar karıştı”

VLAN’lar arası trafikte masquerade çalışıyordu. Üretim VLAN’ındaki PLC’lere yönetimden bağlanınca kaynak IP router IP’si olarak görünüyordu.

# NAT bypass kuralını masquerade'den ÖNCE koy
/ip firewall nat print
# accept (iç ağ) → masquerade (WAN) sırasında olmalı

Test Matrisi

Konfigürasyon bittikten sonra uyguladığım test:

KaynakHedefBeklenenSonuç
Yönetim (10.10.10.x)Üretim PLC (10.20.20.x)✅ Erişim
Yönetimİnternet✅ Erişim
Personel (10.30.30.x)Üretim PLC❌ Timeout
Personelİnternet✅ Erişim
PersonelYönetim router❌ Timeout
Misafir (10.40.40.x)Herhangi iç ağ❌ Timeout
Misafirİnternet✅ Erişim
Üretimİnternet❌ Timeout

Tüm satırlar eşleşiyorsa segmentasyon doğru çalışıyor.

# Router üzerinden VLAN bazlı ping testi
/ping 10.20.20.10 src-address=10.10.10.1
# → yanıt gelmeli (yönetim → üretim)

/ping 10.20.20.10 src-address=10.30.30.1
# → timeout olmalı (personel → üretim yasak)

Topoloji Diyagramı

                    İnternet
                       |
                   [ether1 — WAN]
                   [  RB4011  ]
                   [ether2 — Trunk]
                       |
            ┌──────────┴──────────┐
            |     CRS326 Switch   |
            ├─────────────────────┤
            | ether1  — Trunk ↑   |
            | ether2-3  — VLAN 10 |  Yönetim
            | ether4-7  — VLAN 20 |  Üretim (PLC)
            | ether8-12 — VLAN 30 |  Personel
            | ether24   — Trunk → WiFi AP
            └─────────────────────┘
                       |
                   [WiFi AP]
              SSID: Firma-WiFi → VLAN 30
              SSID: Misafir    → VLAN 40

Sonuç

3 saat sürdü. Kablo değişikliği sıfır. Ek donanım maliyeti sıfır.

Üretim PLC’leri artık sadece yönetim ağından erişilebilir. Personel bilgisayarı PLC’yi görmüyor. Misafir WiFi sadece internet veriyor.

NIST 800-125B bunu “temel güvenlik kontrolü” olarak tanımlıyor (NIST, 2019). Ama ismi ne olursa olsun — işe yarıyor. O fabrikada artık tek bir enfekte cihaz tüm üretimi durduramaz.


SiberKale olarak ağ segmentasyonunu müşterilerimize uyguluyoruz — misafir WiFi neden ayrılmalı, VLAN’sız ağın riskleri, KOBİ’ler için 4 adımlık geçiş planı:

Misafir WiFi’ı Neden Ayrı Ağda Olmalı? — VLAN Rehberi (SiberKale, iş odaklı)


Kaynaklar: MikroTik Bridge VLAN Table Docs (2025), IEEE 802.1Q (2022), NIST SP 800-125B (2019), IEC 62443 (2023)

#mikrotik #vlan #routeros #bridge #segmentasyon #802.1q #switch #fabrika
Paylaş: 𝕏 Twitter LinkedIn

Sıkça Sorulan Sorular

Bridge VLAN filtering ile eski VLAN yöntemi arasındaki fark nedir?

Eski yöntemde her VLAN için ayrı bridge veya VLAN interface oluşturulur — trafik CPU üzerinden geçer. Bridge VLAN filtering'de switch chip donanımsal olarak VLAN ayırımı yapar — hat hızında (line rate) çalışır, CPU yükü minimum. RouterOS 6.41+ ve 7.x'te bu yöntem standart.

VLAN filtering açınca neden yönetim erişimim kesildi?

vlan-filtering=yes devreye girdiğinde, yönetim için kullandığın port da VLAN tablosunda tanımlı olmalı. Önce yönetim VLAN'ını ekle, portunu untagged yap, sonra filtering'i aç. Ya da Safe Mode (Ctrl+X) kullan — 9 dakika içinde onaylamazsan otomatik geri döner.

PVID ne işe yarar?

Port VLAN ID. Access porttan gelen tagsiz (untagged) trafik bu VLAN'a atanır. Örneğin pvid=20 demek: bu porta bağlı cihaz VLAN 20'ye ait, cihazın VLAN'dan haberi yok.

Trunk port ile access port farkı nedir?

Access port tek bir VLAN taşır, trafik tagsiz geçer — PC, yazıcı, PLC gibi son cihazlar için. Trunk port birden fazla VLAN taşır, 802.1Q tag ile etiketlenir — switch-switch veya switch-router arası bağlantılar için.

Kaç VLAN'a kadar performans sorunu yaşamam?

Switch chip destekli cihazlarda (CRS326, RB4011) 4094 VLAN'a kadar donanımsal destek var — pratikte 50-100 VLAN bile sorunsuz çalışır. Performans sorunu VLAN sayısından değil, inter-VLAN routing'deki firewall kural sayısından kaynaklanır.

Erdem Özyurt

IT Danışmanı · ISP Altyapı · Siber Güvenlik · Sakarya

Kablo döşemekten kod yazmaya, ağ tasarımından web geliştirmeye — Layer 1'den Layer 7'ye bütünlük içinde çalışıyorum.

Hakkımda daha fazla →