UnrealIRCd

UnrealIRCd class ve allow Blokları: Kim, Nasıl ve Kaç Bağlantıyla Bağlanır?

· 5 dk okuma

UnrealIRCd class ve allow Blokları: Kim, Nasıl ve Kaç Bağlantıyla Bağlanır?
İçindekiler
  1. class Bloğu: Bağlantı Sınıfları
  2. allow Bloğu: Kapıdaki Görevli
  3. Özel allow Blokları
  4. Parola Korumalı allow Blokları
  5. Yalnızca Kayıtlı veya Belirli Kullanıcılara İzin Vermek
  6. Sık Karşılaşılan Bağlantı Hataları
  7. Önerilen Başlangıç Ayarları
  8. Sınıf Kullanımını İzlemek
  9. Bot Barındırma Politikası
  10. Değişiklikleri Güvenle Denemek
  11. Sonuç

Sunucunuz ayakta ama kapıda kimin, nasıl ve hangi kurallarla içeri gireceğine kim karar veriyor? UnrealIRCd'de bu görevi iki blok birlikte üstlenir: class ve allow. class blokları bağlantı türlerini ve limitlerini tanımlar; unrealircd allow bloğu ise gelen bağlantıların hangi sınıfa yerleştirileceğini belirler.

class Bloğu: Bağlantı Sınıfları

Bir class, bağlantıların ortak özelliklerini tanımlayan bir şablondur. Örnek yapılandırmada genellikle üç sınıf bulunur: normal kullanıcılar, operatörler ve sunucular.

class clients {
	pingfreq 90;
	maxclients 1000;
	sendq 200k;
	recvq 8000;
}

class opers {
	pingfreq 90;
	maxclients 50;
	sendq 1M;
	recvq 8000;
}

class servers {
	pingfreq 60;
	connfreq 15;
	maxclients 10;
	sendq 20M;
}

Ayarların Anlamı

AyarAçıklama
pingfreqSunucunun bağlantının hâlâ canlı olup olmadığını kaç saniyede bir kontrol edeceği
maxclientsBu sınıfta aynı anda bulunabilecek en fazla bağlantı sayısı
sendqSunucunun bağlantıya göndermek için bekletebileceği en fazla veri miktarı
recvqBağlantıdan alınıp henüz işlenmemiş en fazla veri miktarı
connfreqSunucu sınıflarında, otomatik bağlanma denemeleri arasındaki süre

sendq özellikle önemlidir. Kalabalık bir kanala giren veya /LIST gibi büyük çıktı üreten bir kullanıcının sunucudan aldığı veri bu kuyruğa yazılır. Kuyruk dolarsa kullanıcı "Max SendQ exceeded" mesajıyla düşer. Kalabalık kanallarınız varsa normal kullanıcı sınıfının sendq değerini biraz yüksek tutmak bu sorunu azaltır; ama aşırı yüksek değerler sunucunun bellek kullanımını artırır.

allow Bloğu: Kapıdaki Görevli

allow bloğu, bir bağlantı geldiğinde "Bu kişi içeri girebilir mi, hangi sınıfa girer?" sorusunu cevaplar. Herkesin bağlanabildiği basit bir blok:

allow {
	mask *;
	class clients;
	maxperip 3;
}
  • mask *; herkesin bu bloğa uyduğunu söyler.
  • class clients; bağlantıyı clients sınıfına yerleştirir.
  • maxperip 3; aynı IP adresinden en fazla üç bağlantıya izin verir.

maxperip ve Klon Koruması

maxperip, aynı IP'den gelen bağlantıları sınırlayan basit ama etkili bir korumadır. Bir kişinin onlarca "klon" bağlantıyla kanalları doldurmasını engeller. Değer seçerken dikkat edilmesi gerekenler:

  • Ev kullanıcıları için 2-3 genellikle yeterlidir.
  • Üniversite yurtları, internet kafeler veya mobil operatörler gibi aynı dış IP'yi paylaşan yerlerden gelen kullanıcılar bu sınırdan etkilenebilir.
  • Bu tür yerler için özel bir allow bloğu tanımlayabilirsiniz.

Daha gelişmiş koruma için connthrottle ve flood koruması yazılarımıza da bakın.

Özel allow Blokları

Gerçek bir ağda genellikle birden fazla allow bloğu bulunur. Örneğin kendi botlarınızın çalıştığı sunucuya daha yüksek bir bağlantı sınırı tanımak isteyebilirsiniz:

allow {
	mask 203.0.113.10;
	class clients;
	maxperip 20;
}

Bir üniversitenin ortak çıkış IP'si için:

allow {
	mask 198.51.100.0/24;
	class clients;
	maxperip 15;
}

Bu blokları genel mask * bloğundan sonra yazmanız önerilir. UnrealIRCd, eşleşen blokları belirli bir öncelik sırasına göre değerlendirir; özel kuralları genel kuralın altına koymak, beklediğiniz davranışı elde etmenin en güvenli yoludur. Emin olmadığınız durumlarda bağlanıp /stats çıktılarıyla hangi sınıfta olduğunuzu kontrol edebilirsiniz.

Parola Korumalı allow Blokları

Özel bir test sunucusu veya kapalı bir topluluk ağı işletiyorsanız bağlantıya parola koyabilirsiniz:

allow {
	mask *;
	class clients;
	password "gizliParola";
	maxperip 2;
}

Bu durumda kullanıcıların istemcilerinde sunucu parolası tanımlaması gerekir. mIRC'de bu, sunucu ayarlarındaki "Password" alanına yazılır veya bağlanırken şu şekilde verilir:

/server irc.ornekagi.net +6697 gizliParola

Unutmayın: Sunucu parolası, NickServ parolasıyla aynı şey değildir. Nick şifresi services tarafından yönetilir. Bu ayrım için NickServ komutları yazımıza bakabilirsiniz.

Yalnızca Kayıtlı veya Belirli Kullanıcılara İzin Vermek

UnrealIRCd 6 ile gelen esnek eşleştirme sistemi sayesinde allow bloklarında yalnızca IP değil, başka ölçütler de kullanılabilir. Örneğin bir bloğu yalnızca TLS ile bağlananlara veya belirli bir güvenlik grubuna uygulayabilirsiniz. Bu yöntemle, örneğin şifresiz bağlantılara daha düşük bir maxperip değeri vermek mümkündür.

Sık Karşılaşılan Bağlantı Hataları

Hata mesajıOlası neden
"You are not authorized to connect to this server"Hiçbir allow bloğuna uymuyorsunuz
"Too many connections from your IP"maxperip sınırına ulaşıldı
"Server is full"Sınıfın maxclients sınırı doldu
"Password mismatch"allow bloğundaki parola yanlış veya eksik
"Max SendQ exceeded"Kullanıcının sendq kuyruğu doldu

Önerilen Başlangıç Ayarları

Küçük ve orta ölçekli bir ağ için:

  1. Normal kullanıcı sınıfında sendq 200k ile başlayın, kalabalık kanallarınız varsa artırın.
  2. Genel allow bloğunda maxperip 3 kullanın.
  3. Bot sunucunuz ve bilinen ortak IP'ler için ayrı, daha yüksek limitli bloklar tanımlayın.
  4. Oper ve sunucu sınıflarını normal kullanıcılardan ayrı tutun.

Sınıf Kullanımını İzlemek

Ayarları bir kez yazıp unutmak yerine zaman zaman gerçek kullanımı kontrol etmek, limitlerin doğru seçildiğinden emin olmanızı sağlar. Oper olarak /STATS komutunun ilgili çıktıları sınıfları ve her sınıftaki bağlantı sayısını gösterir. Eğer normal kullanıcı sınıfınız maxclients sınırına sıkça yaklaşıyorsa ya kapasiteyi artırmanız ya da yeni bir sunucu eklemeniz gerekir. Log dosyalarında sık sık "Max SendQ exceeded" nedeniyle düşen kullanıcılar görüyorsanız sendq değerini kademeli olarak artırmayı düşünün.

Bot Barındırma Politikası

Pek çok ağ, kullanıcıların kendi Eggdrop botlarını veya bouncer bağlantılarını ağa getirmesine izin verir. Bu durumda bot sahiplerinin aynı IP'den birden fazla bağlantı açması doğaldır. Herkese yüksek bir maxperip vermek yerine, onaylanan bot barındırma sunucularının IP adreslerini ayrı allow bloklarıyla tanımlamak hem kontrolü elinizde tutar hem de genel kullanıcı havuzunu klonlara karşı korur. Bu blokları bir yorum satırıyla kimin adına, hangi tarihte açıldığını belirterek işaretlemek, aylar sonra listeyi temizlerken işinizi kolaylaştırır. Bot kurulumu hakkında bilgi için Eggdrop kurulumu yazımıza bakabilirsiniz.

Değişiklikleri Güvenle Denemek

Sınıf ve izin ayarlarında yapılan bir hata, en kötü ihtimalle kimsenin sunucuya bağlanamamasına yol açabilir. Bu yüzden değişiklikten önce ./unrealircd configtest çalıştırın, rehash yaptıktan sonra da hemen yeni bir bağlantı açarak giriş yapabildiğinizi doğrulayın. Mevcut bağlantınızı kapatmadan test etmek, bir sorun çıkarsa oper olarak müdahale edebilmenizi sağlar. Değişikliğin hangi kullanıcıları etkileyeceğini önceden düşünmek ve gerekiyorsa kanal duyurusuyla bildirmek, ağın geri kalanında gereksiz bir paniği önler.

Sonuç

class ve allow blokları, sunucunuzun kapı politikasıdır. Doğru ayarlanmış sınıflar sunucunuzun kaynaklarını korur, iyi düşünülmüş allow blokları ise kötü niyetli bağlantıları sınırlarken gerçek kullanıcılarınızın rahatça bağlanmasını sağlar. Sıradaki adım, sunucunun hangi portlardan bağlantı kabul edeceğini belirlemek: listen ve TLS portları.

IRC sorunun mu var? Kanalda birlikte çözelim.

💬 Kanala Bağlan

Sıkça Sorulan Sorular

maxperip ne işe yarar?

Aynı IP adresinden aynı anda en fazla kaç bağlantı yapılabileceğini belirler. Klon ve bot saldırılarını sınırlamak için önemlidir.

Bir kullanıcı birden fazla allow bloğuna uyarsa hangisi geçerli olur?

UnrealIRCd allow bloklarını belirli bir sıraya göre değerlendirir; genellikle dosyada daha sonra gelen ve eşleşen blok önceliklidir. Özel blokları genel bloğun altına yazmak en güvenli yoldur.

Sunucuma parola koyabilir miyim?

Evet. allow bloğuna password ayarı ekleyerek o bloğa uyan herkesin bağlanırken parola girmesini zorunlu tutabilirsiniz.