UnrealIRCd

IRC Ağı Kurma: Hub ve Leaf Sunucularla Ağ Mimarisi Tasarımı

· Güncelleme: · 5 dk okuma

IRC Ağı Kurma: Hub ve Leaf Sunucularla Ağ Mimarisi Tasarımı
İçindekiler
  1. IRC Ağları Ağaç Yapısındadır
  2. Hub ve Leaf Kavramları
  3. Hub Sunucunun Özellikleri
  4. Leaf Sunucuların Yerleşimi
  5. Kullanıcıları Sunuculara Dağıtmak: Round-Robin DNS
  6. Yedek Hub ve Otomatik Bağlanma
  7. Services Nereye Bağlanmalı?
  8. Ne Zaman Yeni Sunucu Eklemeli?
  9. Tutarlılık Kuralları
  10. Ağı İzlemek
  11. Sonuç

Tek sunuculu bir IRC kurulumu, küçük bir topluluk için mükemmel bir başlangıçtır. Ancak kullanıcı sayısı arttıkça, farklı bölgelerden kullanıcılar geldikçe veya kesintilere karşı dayanıklılık önemli hâle geldikçe birden fazla sunucuya ihtiyaç duyarsınız. IRC ağı kurma sürecinde en önemli kararlardan biri, sunucuların birbirine nasıl bağlanacağıdır. Bu rehberde hub ve leaf kavramlarını ve sağlam bir ağ mimarisinin nasıl tasarlanacağını anlatıyoruz.

IRC Ağları Ağaç Yapısındadır

IRC protokolünün temel kuralı şudur: Ağdaki sunucular bir ağaç yapısı oluşturur. Yani herhangi iki sunucu arasında yalnızca tek bir yol bulunabilir; döngü oluşturan bağlantılara izin verilmez. A sunucusu B'ye, B sunucusu C'ye bağlıysa, C'nin doğrudan A'ya da bağlanması döngü yaratır ve ağ bu bağlantıyı reddeder.

Bu kural, mesajların ağda tek bir yoldan ilerlemesini ve çift teslimatı önler. Ancak aynı zamanda bir bağlantı koptuğunda ağın ikiye bölünmesine (netsplit) yol açar. İyi bir ağ tasarımı, bu bölünmelerin etkisini en aza indirmeyi hedefler.

Hub ve Leaf Kavramları

Hub (merkez), birden fazla sunucunun bağlandığı sunucudur. Ağın omurgasını oluşturur ve sunucular arasındaki trafiği taşır.

Leaf (yaprak), ağa yalnızca bir bağlantıyla, genellikle bir hub üzerinden bağlanan sunucudur. Kullanıcılar genellikle leaf sunuculara bağlanır.

Tipik küçük bir ağ şöyle görünür:

        hub.ornekagi.net
        /       |       \
 istanbul    ankara    frankfurt
  (leaf)     (leaf)     (leaf)
        \
     services

Services de genellikle hub'a veya hub ile aynı veri merkezindeki bir leaf'e bağlanır.

Hub Sunucunun Özellikleri

  • Kullanıcı kabul etmez: Pek çok ağ, hub sunucuya normal kullanıcı bağlantısına izin vermez. Bu, hub'ın kullanıcı kaynaklı saldırılardan etkilenmesini önler.
  • Güçlü bağlantı: Hub'ın internet bağlantısı ağdaki en kararlı bağlantı olmalıdır; çünkü hub giderse bütün leaf'ler birbirinden kopar.
  • Gizli adres: Hub'ın IP adresi mümkün olduğunca gizli tutulmalıdır. Saldırganlar hub'ı hedef alarak bütün ağı bölebilir.

Kullanıcı bağlantısını kapatmak için hub sunucuda istemci portları açmamak veya allow bloklarını yalnızca sunucu bağlantılarına izin verecek şekilde yapılandırmak yeterlidir. Ayrıntılar: listen ve TLS portları.

Leaf Sunucuların Yerleşimi

Leaf sunucular, kullanıcılarınızın bulunduğu bölgelere yakın yerleştirilmelidir. Türkiye'deki kullanıcılar için Türkiye'de veya yakın bir Avrupa veri merkezinde bulunan bir sunucu, düşük gecikmeli ve akıcı bir sohbet deneyimi sağlar. Farklı ülkelerden kullanıcılarınız varsa her bölge için bir leaf eklemek mantıklıdır.

Leaf'leri farklı sağlayıcılara ve farklı veri merkezlerine dağıtmak, bir sağlayıcıda yaşanan kesintinin bütün ağı etkilemesini önler.

Kullanıcıları Sunuculara Dağıtmak: Round-Robin DNS

Kullanıcıların hangi sunucuya bağlanacağını bilmesini beklemek yerine tek bir ana ad kullanırsınız: irc.ornekagi.net. Bu ad için DNS'te bütün leaf sunucuların IP adreslerini içeren birden fazla kayıt tanımlanır. DNS her sorguda bu adresleri farklı sırayla döndürür ve kullanıcılar sunucular arasında kabaca eşit şekilde dağılır.

Bölgesel adlar da tanımlayabilirsiniz: tr.irc.ornekagi.net yalnızca Türkiye'deki leaf'leri, eu.irc.ornekagi.net Avrupa'dakileri gösterebilir. Bir sunucu bakıma alındığında ilgili DNS kaydını geçici olarak kaldırmak, yeni kullanıcıların o sunucuya yönlenmesini engeller. TLS sertifikalarının bu ortak adları da içermesi gerektiğini unutmayın; bkz. Let's Encrypt sertifikası.

Yedek Hub ve Otomatik Bağlanma

Tek bir hub, ağınızın tek hata noktasıdır. Daha dayanıklı bir yapı için ikinci bir hub kullanabilirsiniz. Ancak ağaç kuralı nedeniyle bir leaf aynı anda iki hub'a bağlı olamaz. Çözüm, leaf'lerde her iki hub için de link bloğu tanımlamak ve otomatik bağlanmayı birincil hub'a göre ayarlamaktır. Birincil hub erişilemez olduğunda leaf yedek hub'a bağlanır. Bu senaryo dikkatli bir planlama gerektirir; yapılandırma ayrıntıları için link bloğu yazımıza bakın.

Services Nereye Bağlanmalı?

Services ağın en önemli bileşenlerinden biridir. Services bağlantısı koptuğunda nick ve kanal korumaları devre dışı kalır. Bu yüzden:

  • Services'i hub sunucuyla aynı makinede veya aynı veri merkezinde çalıştırın.
  • Services bağlantısını yerel adres üzerinden kurun.
  • Services'in bağlı olduğu sunucuya kullanıcı bağlantısı kabul ettirmemek, saldırılardan etkilenmesini önler.

Ayrıntılar: ulines ve services.

Ne Zaman Yeni Sunucu Eklemeli?

Yeni bir sunucu her zaman daha iyi demek değildir. Her sunucu ek bakım, ek güvenlik yükü ve ek bir bölünme noktası demektir. Yeni sunucu eklemeyi şu durumlarda düşünün:

  1. Kapasite: Mevcut sunucunun kaynakları veya bağlantı sınırları yetersiz kalıyorsa.
  2. Bölgesel gecikme: Uzak bir bölgeden çok sayıda kullanıcınız varsa.
  3. Dayanıklılık: Tek sunucunuz bakıma girdiğinde bütün ağın kapanmasını istemiyorsanız.
  4. Saldırı dayanıklılığı: DDoS saldırılarında kullanıcıları farklı sunuculara dağıtabilmek için.

Küçük bir topluluk için tek bir iyi yapılandırılmış sunucu, beş özensiz sunucudan çok daha iyidir.

Tutarlılık Kuralları

Çok sunuculu bir ağda bazı ayarlar bütün sunucularda aynı olmalıdır:

AyarNeden?
network-nameAğın kimliği
Cloak modülü ve anahtarlarıTutarlı gizlenmiş hostlar ve banlar
ulinesServices yetkilerinin her yerde geçerli olması
Modül setiKanal ve kullanıcı modlarının tutarlılığı
Uzunluk sınırlarıNick ve konu uzunluklarının tutarlılığı
Spamfilter kurallarıAğ genelinde aynı koruma

Bu ayarları ortak bir include dosyasında toplayıp bütün sunucularda kullanmak tutarlılığı garanti eder. Bkz. unrealircd.conf temel yapısı.

Ağı İzlemek

Çok sunuculu bir ağda hangi sunucunun nereye bağlı olduğunu görmek için oper olarak /MAP ve /LINKS komutlarını kullanabilirsiniz. Web paneli de ağın topolojisini görsel olarak gösterebilir; bkz. JSON-RPC ve web paneli. Sunucu bağlantılarının kopma ve kurulma olaylarını log'larda ve oper bildirimlerinde düzenli izlemek, sorunlu bağlantıları erken fark etmenizi sağlar.

Sonuç

İyi tasarlanmış bir IRC ağı, ağaç yapısının kurallarına uyan, güçlü bir hub etrafında kullanıcılara yakın leaf sunuculardan oluşan, services'i güvenli bir konumda tutan ve bütün sunucularda tutarlı ayarlar kullanan bir yapıdır. Küçük başlayın, ihtiyaç doğdukça büyüyün ve her yeni sunucuyu aynı özenle yapılandırın. UnrealIRCd rehber serimizin başına dönmek isterseniz UnrealIRCd nedir yazımızdan başlayabilirsiniz.

IRC sorunun mu var? Kanalda birlikte çözelim.

💬 Kanala Bağlan

Sıkça Sorulan Sorular

Hub sunucu nedir?

Birden fazla sunucunun bağlandığı, ağın omurgasını oluşturan sunucudur. Genellikle normal kullanıcı bağlantısı kabul etmez.

Leaf sunucu nedir?

Kullanıcıların bağlandığı ve ağa genellikle tek bir hub üzerinden bağlanan sunucudur.

Küçük bir ağ için kaç sunucu gerekir?

Birkaç yüz kullanıcıya kadar tek bir sunucu genellikle yeterlidir. Yedeklilik ve bölgesel erişim için ikinci bir sunucu eklemek büyümenin doğal adımıdır.