· 6 dk okuma

BGP Sunucu Nedir? Kimler Kullanır, Gereksinimler ve Senaryolar

BGP sunucu, kendi ASN'iniz ve IP bloğunuzla barındırma sağlayıcısının ağına BGP oturumu kurabildiğiniz sunucudur. Bu sunucu VDS ya da fiziksel (dedicated) olabilir. Sunucudaki BGP yazılımı (BIRD, FRR vb.) prefix'inizi sağlayıcıya anons eder ve IP bloğunuz internette sizin kontrolünüzde yaşar.

Bu yazıda tanım yerine kullanım tarafına odaklanıyoruz: BGP sunucuyu kimler, hangi problem için seçer; anycast, multihoming ve IP taşınabilirliği pratikte nasıl çalışır; başlamadan önce neye ihtiyacınız var ve nerede hata yapılır.

BGP sunucu normal sunucudan nasıl ayrılır?

Normal bir sunucuda sağlayıcının verdiği IP adreslerini kullanırsınız. Sağlayıcı değiştirirseniz IP'ler de değişir; DNS, güvenlik duvarı kuralları, mail itibarı ve istemci whitelist'leri baştan düzenlenir.

BGP sunucuda ise IP'ler size aittir. Sunucu üzerindeki BGP oturumu üzerinden şunu söylersiniz: "192.0.2.0/24 bloğuna giden trafik bana gelsin." Sağlayıcı bu rotayı kabul eder ve yayar. Yani IP bloğu bir sağlayıcıya bağlı değil, ASN'inize bağlıdır.

Nixcon'da bu yapı AS40368 üzerinden çalışır. Müşteri ASN'i ve prefix sahipliği RPKI ROA ve RIR/IRR kayıtlarıyla otomatik doğrulanır, ASN AS-NIXCON AS-SET'ine eklenir. Kurulum otomatiktir. Anons türünü de seçersiniz: DDoS korumasız, DDoS korumalı; rota tarafında ise sadece Nixcon rotaları ya da full routing table.

Kimler BGP sunucu kullanır?

Senaryo 1: IP taşınabilirliği

En yaygın neden budur. IP bloğunuz bir sağlayıcıdan diğerine geçerken adresleriniz değişmez. Taşıma adımları basittir:

  1. Yeni sağlayıcıda BGP oturumunu kurup prefix'i anons edin.
  2. ROA'nın yeni upstream için de geçerli olduğundan (origin ASN sizsiniz) emin olun.
  3. Looking glass ve RIPEstat gibi araçlarla yeni yoldan görünürlüğü doğrulayın.
  4. Eski sağlayıcıdaki anonsu kaldırın.

Böylece trafik kesintisiz geçer, çünkü iki yol bir süre paralel yaşar. Sunucuyu taşırken IP'leri değiştirmeyeceğiniz için DNS TTL beklemeniz de gerekmez.

Senaryo 2: Multihoming

Multihoming, aynı prefix'i birden fazla sağlayıcı üzerinden anons etmektir. Bir sağlayıcı arıza yaşarsa BGP rotayı diğer yola kaydırır. BGP sunucu bu tasarımda iki şekilde yer alır: ya sunucunun kendisi bir yolu temsil eder ya da kendi router'ınızla birlikte yedek hat olarak çalışır.

Trafiğin hangi yoldan geleceğini yönetmek için en basit araç AS-path prepend'dir. Yedek yoldan anonsunuza kendi ASN'inizi birkaç kez ekleyerek o yolu daha az tercih edilir yaparsınız:

# BIRD 2: yedek upstream'e giden anonsa prepend
filter export_backup {
  if net = 192.0.2.0/24 then {
    bgp_path.prepend(64496);
    bgp_path.prepend(64496);
    accept;
  }
  reject;
}

Prepend yalnızca gelen trafiği etkiler; çıkan trafik için local-pref kullanırsınız. Bu iki ayrımı karıştırmak yaygın bir hatadır.

Senaryo 3: Anycast

Anycast'te aynı IP (ya da /24 prefix) birden fazla lokasyondan anons edilir. İnternet, istemciyi BGP açısından en yakın lokasyona yönlendirir. DNS çözümleyiciler, CDN kenar düğümleri ve UDP tabanlı hizmetler için idealdir.

Basit bir anycast sunucu şöyle hazırlanır. Servis IP'sini loopback'e ekleyin:

ip addr add 192.0.2.10/32 dev lo

BIRD ile prefix'i statik olarak anons edin:

router id 198.51.100.10;

protocol device { }

protocol static anycast4 {
  ipv4;
  route 192.0.2.0/24 blackhole;
}

filter export_v4 {
  if net = 192.0.2.0/24 then accept;
  reject;
}

protocol bgp upstream1 {
  local as 64496;
  neighbor 198.51.100.1 as 64511;
  ipv4 {
    import none;          # varsayılan rota ayrıca tanımlanır
    export filter export_v4;
  };
}

Buradaki komşu adresi ve ASN'ler dokümantasyon değerleridir; gerçek oturum bilgileri servis kurulumunda size iletilir.

Sağlık kontrolü şarttır. Servis çökerse anonsu çekmelisiniz, aksi halde trafik çalışmayan düğüme gitmeye devam eder. En basit yöntem, bir sağlık betiğinin anons protokolünü kapatıp açmasıdır:

# servis kontrolü başarısızsa anonsu çek
birdc disable anycast4

# servis geri geldiğinde
birdc enable anycast4

Üretimde bu işi systemd timer veya keepalive tarzı bir araçla otomatikleştirin. Ayrıca TCP gibi durum tutan hizmetlerde, rota değişirse bağlantı başka lokasyona düşebilir; bunu uygulama tasarımında hesaba katın.

Başlamadan önce gereksinimler

Gereksinim Not
ASN Bir RIR'den (ör. RIPE NCC) doğrudan ya da bir LIR aracılığıyla alınır.
IP bloğu IPv4'te genel internet için pratikte en az /24, IPv6'da /48 gerekir. Daha küçük prefix'ler çoğu ağda filtrelenir.
ROA (RPKI) Prefix'in hangi ASN tarafından anons edilebileceğini tanımlar.
IRR kaydı route / route6 nesneleri ve ASN'in AS-SET'e eklenmesi.
BGP yazılımı BIRD 2 veya FRRouting; Linux ya da uyumlu bir yığın.
Sunucu kaynakları Full table alacaksanız yeterli RAM ve CPU planlayın (bir milyona yakın IPv4 rotası).

Sahipliği doğrulamadan başlamak mümkün değildir; bu nedenle kayıtlarınızı önceden kontrol edin:

# IRR'da route nesnesi ve origin kontrolü
whois -h whois.radb.net -- '-i origin AS64496'

# RIPEstat ile RPKI doğrulama durumu
curl -s "https://stat.ripe.net/data/rpki-validation/data.json?resource=AS64496&prefix=192.0.2.0/24"

Yanıtta durum valid olmalıdır. invalid ise ROA'daki origin ASN ya da maxLength değeri yanlıştır.

Yaygın hatalar ve çözümleri

Oturum Active ya da Connect durumunda kalıyor. Komşu IP'yi, ASN'i ya da yerel firewall'daki TCP 179 iznini kontrol edin. birdc show protocols all upstream1 çıktısında Last error satırına bakın.

Oturum Established ama prefix görünmüyor. Export filtreniz prefix'i geçirmiyor olabilir. birdc show route export upstream1 ile gerçekten ne gönderdiğinizi doğrulayın.

Prefix anons ediliyor ama bazı ağlardan erişilemiyor. ROA invalid ise RPKI doğrulaması yapan ağlar rotayı düşürür. ROA'yı doğru origin ASN ve maxLength ile güncelleyin. /24'ten küçük prefix kullanıyorsanız da aynı sonuç olur.

IRR nesnesi eksik. Bazı upstream'ler prefix filtrelerini IRR verisinden üretir. route nesnesi ve AS-SET kaydı olmadan anons yayılmaz.

Anycast'te trafik bozuk düğüme gidiyor. Sağlık kontrolü yoktur ya da çok yavaştır. Anonsu otomatik çekecek mekanizma kurun.

Giden trafik yanlış IP ile çıkıyor. Sunucu kendi blok adresini kaynak olarak kullanmıyorsa kaynak adresi kurallarını (ip route ... src) belirleyin.

Anonsu doğrulama

Anonsu yayınladıktan sonra dışarıdan görünürlüğü test edin. Nixcon'un herkese açık looking glass sayfasında İzmir, Frankfurt ve ABD noktalarından BGP rota, ping ve traceroute sorguları yapabilirsiniz. Böylece prefix'in farklı bölgelerden nasıl göründüğünü görürsünüz.

DDoS koruması ile birlikte düşünün

IP bloğunuz sizin olduğunda saldırı hedefi de o blok olur. Bu yüzden anons türünü bilinçli seçin: Güvenli, düşük riskli hizmetlerde korumasız anons yeterli olabilir; oyun, API ya da müşteri hizmeti veren IP'ler için korumalı anons daha mantıklıdır. Korumalı yolun nasıl çalıştığını DDoS koruma ve firewall sayfasında bulabilirsiniz.

Hangi sunucu türü?

VDS, hızlı kurulum ve esneklik isteyen çoğu senaryo için yeterlidir. Çok yüksek paket işleme ya da özel donanım gerekiyorsa fiziksel sunucu mantıklıdır. Kendi router'ınızı yerleştirecekseniz colocation düşünülür. Kendi ASN'inizle BGP oturumu kurabileceğiniz seçenekleri BGP destekli VDS sunucular sayfasında görebilirsiniz.

Özet

BGP sunucu, IP'lerinizi sağlayıcıdan bağımsız hale getirir. Anycast ile gecikmeyi düşürür, multihoming ile süreklilik sağlar, IP taşınabilirliği ile sağlayıcı değişimini kolaylaştırır. Başarı için üç şey gerekir: ASN ve prefix'in doğru kaydı, geçerli ROA ve düzgün filtreler. Bu üçü tamamsa kurulum çoğu zaman saatler içinde biter.

Sık sorulan sorular

BGP sunucu için ASN almak zorunlu mu?

Evet. BGP oturumunda anonsu yapan taraf bir ASN ile tanımlanır. ASN'i bir RIR'den doğrudan ya da bir LIR aracılığıyla alabilirsiniz. Kendi IP bloğunuz da olmalıdır.

/24'ten küçük prefix anons edebilir miyim?

Genel internette IPv4 için pratikte en küçük kabul edilen prefix /24, IPv6 için /48'dir. Daha küçük prefix'ler çoğu ağda filtrelenir ve erişilemez kalır.

BGP VDS ile full routing table almak gerekir mi?

Zorunlu değildir. Sadece anons yapacaksanız ve yalnızca Nixcon rotalarını almak yeterliyse full table gerekmez. Full table için daha fazla RAM ve CPU ayırmanız gerekir.

ROA invalid olursa ne olur?

RPKI doğrulaması yapan ağlar rotayı reddeder ve prefix'iniz bu ağlardan erişilemez olur. ROA'daki origin ASN ve maxLength değerlerini anonsunuzla uyumlu hale getirin.

Kendi ASN'inizle BGP oturumu kurmak için BGP VDS seçeneklerini inceleyin.İncele