BGP Nedir ve MikroTik'te Nasıl Uygulanır? RouterOS 7 Rehberi
BGP nedir, eBGP ve iBGP farkı, MikroTik RouterOS 7'de bgp connection ile peer kurulumu, network duyurma, prefix filtreleme ve multihoming avantajları: ISP seviyesi rehber.
Erdem Özyurt
Kısa cevap: BGP (Border Gateway Protocol), internetteki farklı otonom sistemler (AS) arasında yol bilgisi paylaşan, internetin omurgasını ayakta tutan routing protokolüdür. Bir ağın içinde OSPF çalışır; iki bağımsız ağ (siz ve ISP’niz) birbirine yol öğretecekse BGP devreye girer. MikroTik RouterOS 7’de BGP baştan yazıldı ve artık tek bir /routing/bgp/connection menüsünden yönetilir.
BGP nedir ve ne zaman OSPF yerine gerekir?
BGP, farklı otonom sistemler arasında “hangi IP bloğuna benim üzerimden şu yoldan ulaşılır” bilgisini taşıyan bir path-vector protokolüdür. Otonom sistem (AS), tek bir yönetim altındaki ağ ve ona atanmış bir AS numarasıdır; internet, on binlerce AS’in BGP ile birbirine yol duyurmasından oluşur. OSPF ve BGP rakip değildir; ikisi farklı katmanlarda çalışır.
Ayrım şudur: OSPF bir AS’in içinde (interior gateway protocol) en kısa yolu bulur ve saniyeler içinde yakınsar; BGP ise AS’ler arasında (exterior gateway protocol) çalışır ve kararını mesafeye değil, AS-path uzunluğuna, local-preference’a ve sizin yazdığınız policy kurallarına göre verir. İçeride yüzlerce prefix’i hızlı dağıtmak istiyorsanız OSPF, iki bağımsız ağın birbirine kontrollü biçimde yol öğretmesi gerekiyorsa BGP kullanılır.
Ne zaman BGP’ye geçilir? İki ayrı internet sağlayıcısına bağlanıp yük dağıtmak veya biri düşünce diğerine kayması (multihoming) gerektiğinde, kendi IP bloğunuzu internete duyuracağınızda veya farklı yönetimlerdeki ağları policy ile birbirine bağladığınızda. Tek ISP ve statik default route yetiyorsa BGP’ye ihtiyacınız yoktur; gereksiz karmaşıklık getirir. RouterOS 6’dan geliyorsanız komut setinin tamamen değiştiğini unutmayın; ayrıntısı RouterOS 6’dan 7’ye güvenli geçiş yazısında.
eBGP ile iBGP arasındaki fark nedir?
BGP’nin iki çalışma biçimi vardır ve ikisi de aynı protokoldür; farkı komşunun aynı AS’te mi yoksa farklı AS’te mi olduğudur. eBGP (external) farklı AS numaraları arasında, iBGP (internal) aynı AS içindeki router’lar arasında konuşur. RouterOS 7’de bu ayrımı tek bir parametreyle belirtirsiniz: local.role=ebgp veya local.role=ibgp.
Davranış farkı kritik ve çok sık tuzağa düşürür:
| Özellik | eBGP | iBGP |
|---|---|---|
| Komşu AS | Farklı AS | Aynı AS |
| AS-path | Her atlamada kendi AS’ini ekler | AS eklemez |
| Next-hop | Kendini yazar (varsayılan) | Prefix’in orijinal next-hop’unu korur |
| TTL | Genelde 1 (doğrudan komşu) | Değişebilir (çok atlamalı) |
| Topoloji | Sınırda, noktadan noktaya | Tam mesh veya route reflector |
En büyük tuzak iBGP’dedir: iBGP komşusundan öğrenilen prefix, başka bir iBGP komşusuna tekrar duyurulmaz (döngü önleme). Bu yüzden dört router’ınız varsa ya hepsini birbirine bağlar (tam mesh) ya da bir route reflector kurarsınız. Ölçek büyüdükçe tam mesh yönetilemez hale gelir; o noktada RouterOS’ta local.role=ibgp-rr ile bir reflector, istemcilerde local.role=ibgp-rr-client tanımlarsınız. Reflector rolünü ayrı bir donanım yerine sanal makinede toplamak yaygındır; nasıl yapıldığını CHR ile Proxmox kurulumu yazısında anlattım.
MikroTik RouterOS 7’de temel BGP peer nasıl kurulur?
RouterOS 7’de bir eBGP oturumu için gereken minimum şudur: komşunun IP’si, komşunun AS numarası (remote.as), sizin AS numaranız (as) ve rol (local.role=ebgp). v6’daki instance artı peer ikilisi kaldı; her şey /routing/bgp/connection altında tek satırda tanımlanır. Yerel AS’i connection üzerinde as= ile verirsiniz, ayrı bir instance menüsüne gerek yoktur.
İki router arasında, 10.0.0.0/30 linki üzerinden eBGP kuralım. Router A, AS 65010; Router B, AS 65020.
Router A (10.0.0.1):
# Global router-id (belirtmezseniz BGP bunu /routing/id'den varsayılan alır)
/routing/id
set [find default=yes] id=10.255.255.1
/routing/bgp/connection
add name=to-RouterB \
remote.address=10.0.0.2 \
remote.as=65020 \
as=65010 \
local.role=ebgp \
address-families=ip \
router-id=10.255.255.1
Router B (10.0.0.2):
/routing/id
set [find default=yes] id=10.255.255.2
/routing/bgp/connection
add name=to-RouterA \
remote.address=10.0.0.1 \
remote.as=65010 \
as=65020 \
local.role=ebgp \
address-families=ip \
router-id=10.255.255.2
Dikkat edilecek noktalar: address-families=ip, RouterOS 7’de IPv4 unicast ailesinin gerçek değeridir; birçok blogdaki ipv4 yazımı yanlıştır ve oturum kurulmaz. Çift stack için address-families=ip,ipv6 yazarsınız. Oturumu doğrulamak için:
/routing/bgp/session print
Established durumunu görüyorsanız komşuluk kurulmuştur ancak henüz hiçbir prefix duyurmadınız; bir sonraki adım kendi ağınızı reklama vermektir. Kurulmuyorsa önce iki yön arasında ping çalışıyor mu, ardından firewall’da 179/tcp portu açık mı diye bakın; BGP TCP 179 üzerinden çalışır ve varsayılan RouterOS firewall’ı bunu kesebilir.
Kendi ağımı BGP’ye nasıl duyururum (network advertise)?
BGP kendi bağlı ağlarınızı otomatik duyurmaz; ne reklama vereceğinizi açıkça söylemeniz gerekir. RouterOS 7’de bunun temel yolu, duyurulacak prefix’i bir adres listesine koyup connection’ın output.network alanında o listeyi referans göstermektir. Kritik koşul şudur: duyurmak istediğiniz prefix, routing tablosunda gerçekten var olan bir route ile eşleşmeli; aksi halde BGP onu göndermez.
Router A’nın kendi 192.0.2.0/24 bloğunu Router B’ye duyurmasını isteyelim:
# 1) Duyurulacak bloğu adres listesine ekle
/ip/firewall/address-list
add list=bgp-out-nets address=192.0.2.0/24
# 2) Connection'da bu listeyi çıktı ağı olarak göster
/routing/bgp/connection
set [find name=to-RouterB] output.network=bgp-out-nets
Blok routing tablosunda yoksa (örneğin fiziksel olarak o an bağlı bir arayüzünüz yoksa) prefix’i sabitlemek için bir statik route eklemek yaygın bir yöntemdir; blackhole route bloğun her zaman tabloda durmasını sağlar:
/ip/route
add dst-address=192.0.2.0/24 blackhole
Tek tek adres listesiyle uğraşmak yerine bağlı ve statik route’ların tümünü toplu duyurmak isterseniz redistribute kullanılır; ancak bu, istemeden fazla prefix sızdırmaya çok müsaittir, mutlaka giden filtreyle birlikte kullanın:
/routing/bgp/connection
set [find name=to-RouterB] output.redistribute=connected,static
Duyurduklarınızı komşu bazında /routing/bgp/advertisements print ile teyit edin. Sahada en sık görülen hata, prefix’in tabloda karşılığı olmadığı için sessizce duyurulmamasıdır; oturum Established görünse bile reklam boş kalır.
Gelen ve giden BGP reklamlarını nasıl filtrelerim?
Filtresiz bir eBGP oturumu ciddi risktir: yanlışlıkla tüm internet tablosunu komşunuza geri duyurabilir (transit sızıntısı) veya komşudan gelen hatalı prefix’leri kabul edip trafiğinizi yanlış yönlendirebilirsiniz. RouterOS 7’de filtreler /routing/filter/rule altında zincirler halinde yazılır ve connection’a bağlanır. Kural: hem gireni hem çıkanı denetleyin, “önce reddet, sonra bilinçli kabul et” mantığını kurun.
Gelen tarafta bogon ve özel blokları reddedip aşırı ufak prefix’leri eleyen bir zincir:
/routing/filter/rule
add chain=bgp-in comment="ozel/bogon bloklari reddet" \
rule="if (dst in 10.0.0.0/8 || dst in 172.16.0.0/12 || dst in 192.168.0.0/16) { reject }"
add chain=bgp-in comment="cok kucuk prefixleri ele" \
rule="if (dst-len > 24) { reject }"
add chain=bgp-in rule="accept"
Giden tarafta yalnızca kendi bloğunuzu duyurup gerisini kesin:
/routing/filter/rule
add chain=bgp-out comment="sadece kendi blogum" \
rule="if (dst == 192.0.2.0/24) { accept }"
add chain=bgp-out rule="reject"
Zincirleri connection’a bağlarken RouterOS 7’nin bir isimlendirme asimetrisine dikkat edin: giriş input.filter, çıkış ise output.filter-chain parametresidir. Aynı isimle yazarsanız komut hata verir.
/routing/bgp/connection
set [find name=to-RouterB] input.filter=bgp-in output.filter-chain=bgp-out
Güvenliği bir adım ileri taşımak isterseniz RPKI ile komşunuzun duyurduğu prefix’in gerçekten o AS’e ait olup olmadığını doğrulayabilirsiniz; RouterOS 7’de /routing/rpki altında bir doğrulayıcı tanımlanır ve filtre kuralında rpki eşleştiricisiyle geçersiz kayıtlar reddedilir. Filtre değişikliklerinden sonra oturumu yeniden çalıştırmak için ilgili session’ı refresh etmeyi unutmayın; aksi halde yeni kural yalnız bundan sonraki güncellemelere uygulanır.
BGP’nin avantajları nelerdir?
BGP’nin değeri hızda değil, kontrol ve dayanıklılıktadır. Tek bir en kısa yol dayatmaz; trafiğin nasıl akacağına dair kararı sizin elinize verir. Bu, kurumsal ve ISP altyapılarında dört somut kazanca dönüşür:
| Avantaj | Ne sağlar |
|---|---|
| Multihoming | Birden fazla ISP’ye bağlanıp biri düşünce diğerine otomatik geçiş |
| Policy routing | Trafiği AS-path, local-preference, community ile yönlendirme |
| Ölçeklenebilirlik | Milyonlarca prefix’i kararlı biçimde taşıyabilme |
| Bağımsızlık | Kendi IP bloğunuzu sağlayıcıdan bağımsız internete duyurma |
Multihoming en çok istenen özelliktir: iki sağlayıcıdan yol alıp local-preference ile birini birincil yaparsınız, o düştüğünde BGP saniyeler içinde ikinciyi devreye alır. Politika tarafında ise “şu bloğa giden trafik ucuz hattan, şuraya giden yedek hattan” gibi kuralları AS-path ve community ile kurgularsınız; statik route ile bunu yönetmek imkansızdır.
Sınırı da net söyleyeyim: BGP yavaş yakınsar. OSPF saniyenin altında toparlarken BGP’nin varsayılan zamanlayıcıları çok daha uzundur ve büyük tablolarda güncelleme yayılması zaman alır. Bu yüzden BGP’yi hız için değil, kontrol ve çoklu bağlantı için seçersiniz; ağ içi hızlı yakınsama hâlâ OSPF’in işidir.
BGP nerelerde kullanılır (uygulama alanları)?
BGP, “farklı yönetimlerdeki ağlar birbirine kontrollü yol öğretecek” her yerde çalışır. Pratikte MikroTik ekosisteminde en sık dört senaryoda karşınıza çıkar ve her biri farklı bir donanım profili ister.
- ISP ve WISP multihoming: İki upstream’den tam tablo veya default alıp trafiği policy ile dağıtmak. Burada RAM belirleyicidir; tam tablo taşıyan sınır router’ı için CCR serisi (örneğin CCR2004, CCR2116) doğru tercihtir, doğru modeli hangi MikroTik modeli yazısındaki kriterlerle seçin.
- Veri merkezi ve iBGP omurgası: Çok sayıda iç router’ı route reflector ile ölçeklemek. Reflector CPU ve RAM ister, port istemez; bu yüzden sık sık sanal makinede, CHR üzerinde çalıştırılır.
- MPLS L3VPN: Servis sağlayıcı omurgasında müşteri VRF’lerini taşımak için MP-BGP kullanılır; MPLS etiket dağıtımının üstüne VPNv4 aileleri BGP ile duyurulur. Kurgunun tamamı MikroTik MPLS kurulumu yazısında.
- Kurumsal çoklu hat: İki internet hattını yedekli kullanan orta ölçekli işletmeler. Burada tam tablo şart değildir; genelde default route BGP ile alınır ve küçük bir cihaz yeter.
MikroTik’in BGP için uygunluğu donanıma bağlıdır: CCR serisi çok çekirdekli mimarisi ve bol RAM’iyle tam tablo işlerine, CHR ise portsuz ama işlem gücü isteyen reflector ve lab rollerine uygundur. hAP sınıfı küçük cihazlarda BGP çalışır ama tam tablonun altında ezilir; onları default route senaryolarıyla sınırlı tutun.
BGP mi, OSPF mü, statik mi? Hızlı karar
- Tek ISP, sabit çıkış → statik default route yeter, BGP kurmayın.
- Ağ içi hızlı yakınsama, tek yönetim → OSPF.
- Birden fazla ISP, kendi IP bloğu, policy ile trafik kontrolü → BGP (eBGP).
- Aynı AS’te çok router → iBGP; dörtten fazlaysa tam mesh yerine route reflector.
BGP tasarımı, multihoming kurulumu veya mevcut RouterOS 7 omurganızda prefix filtreleme ve route reflector mimarisi kurmak isterseniz ağ yönetimi hizmetim ve MikroTik destek hizmetim üzerinden ulaşabilirsiniz; ISP omurgası ölçeğinde BGP kurulumu ve sorun giderme yaptığım alanlardan biridir.
Sıkça Sorulan Sorular
BGP nedir, basitçe anlatır mısın?
BGP (Border Gateway Protocol), internetin farklı otonom sistemleri (AS) arasında hangi ağa hangi yoldan gidileceğini paylaşan path-vector routing protokolüdür. OSPF gibi tek bir ağın içinde değil, ağlar arasında çalışır; internetin tamamı BGP ile birbirine bağlıdır. En kısa mesafe metriğine değil, yol bilgisine (AS-path) ve sizin belirlediğiniz policy kurallarına göre karar verir.
MikroTik'te BGP için hangi model gerekir?
BGP her RouterOS sürümünde vardır; sınır özellik değil, RAM ve CPU'dur. Tam internet tablosu (bir milyondan fazla prefix) taşıyacaksanız RAM'i bol bir cihaz gerekir ve CCR serisi (örneğin CCR2004, CCR2116) tam bu iş için tasarlanmıştır. İç BGP, route reflector veya birkaç prefix taşıyan küçük ölçek ise hAP, RB veya CHR ile de rahat yürür.
eBGP ile iBGP arasındaki fark nedir?
eBGP farklı AS numaraları arasında konuşur (örneğin sizinle internet servis sağlayıcınız), iBGP ise aynı AS içindeki router'lar arasında. eBGP her atlamada next-hop'u kendine yazar ve AS-path'e kendi AS'ini ekler; iBGP prefix'i değiştirmeden taşır ve döngüyü önlemek için ya tam mesh ya da route reflector ister.
BGP AS numarası nereden alınır?
İnternete duyurulacak public bir AS numarası ve IP bloğu, bölgesel internet kayıt kuruluşundan bir LIR üzerinden alınır; Türkiye'nin de dahil olduğu bölgede bu kuruluş RIPE NCC'dir. Sadece kendi içinizde kullanacaksanız (iç BGP, veri merkezi, lab) özel AS aralığını (64512 ile 65534 ve 32-bit için 4200000000 ile 4294967294) internete duyurmadan serbestçe kullanabilirsiniz.
BGP tam tablo (full table) için ne kadar RAM gerekir?
Tek bir IPv4 tam tablosu (bir milyonun üzerinde prefix) birkaç yüz megabayt RAM tüketir; iki upstream'den ayrı ayrı tam tablo alıp saklarsanız bu miktar katlanır. Pratikte tam tablo için en az 2 GB, birden fazla upstream ve rahat çalışma için 4 GB RAM'li bir cihaz (CCR sınıfı) hedefleyin. Sadece default route veya birkaç prefix alıyorsanız 256 ile 512 MB yeterlidir.
RouterOS 6 BGP komutlarım neden RouterOS 7'de çalışmıyor?
RouterOS 7'de BGP baştan yazıldı: v6'daki /routing/bgp/instance ve /routing/bgp/peer menüleri kaldırıldı, yerine tek bir /routing/bgp/connection (ve şablon için /routing/bgp/template) geldi. v6 komutlarını aynen yapıştırırsanız çalışmaz; artık yerel AS connection üzerinde as= ile, peer AS ise remote.as= ile verilir.
Kaynaklar
- 1
RouterOS 7 BGP yapılandırması: /routing/bgp/connection, local.role, address-families ve session yönetimi
MikroTik Documentation: BGP (RouterOS) (2026) ↗ - 2
Border Gateway Protocol 4 (BGP-4) protokol tanımı, path-vector mimarisi ve AS-path davranışı
IETF RFC 4271: A Border Gateway Protocol 4 (BGP-4) (2006) ↗ - 3
Otonom sistem (AS) numarası tahsisi ve public AS için LIR süreci
RIPE NCC: Autonomous System (AS) Numbers (2026) ↗
Yazan: Erdem Özyurt
Bilişim Danışmanı · ISP Altyapı · Siber Güvenlik
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 →