UnrealIRCd

UnrealIRCd WebSocket Ayarları: Tarayıcıdan IRC Bağlantısı

· Güncelleme: · 5 dk okuma

UnrealIRCd WebSocket Ayarları: Tarayıcıdan IRC Bağlantısı
İçindekiler
  1. WebSocket Nedir?
  2. WebSocket Modülü
  3. WebSocket İçin listen Bloğu
  4. TLS Neden Şart?
  5. Web İstemcisi Seçimi ve Kurulumu
  6. Ters Vekil (Reverse Proxy) ile 443 Portu
  7. Web Kullanıcıları İçin Güvenlik
  8. Sık Karşılaşılan Sorunlar
  9. Web İstemcisinin Kullanıcı Deneyimi
  10. Sonuç

Pek çok yeni kullanıcı için IRC'ye başlamanın en büyük engeli bir istemci programı indirip kurmaktır. Web tabanlı IRC istemcileri bu engeli ortadan kaldırır: Kullanıcı bir web sayfasını açar, nick yazar ve sohbete başlar. Bu deneyimin arkasındaki teknoloji WebSocket'tir. Bu rehberde UnrealIRCd websocket desteğini nasıl etkinleştireceğinizi ve web istemcileriyle nasıl güvenli şekilde kullanacağınızı anlatıyoruz.

WebSocket Nedir?

WebSocket, tarayıcı ile sunucu arasında sürekli açık kalan, iki yönlü bir bağlantı kurmayı sağlayan bir web protokolüdür. Normal web sayfaları istek-cevap mantığıyla çalışırken WebSocket bağlantısı açık kalır ve iki taraf istediği zaman mesaj gönderebilir. Bu özellik, IRC gibi anlık mesajlaşma protokollerini tarayıcıya taşımak için idealdir.

Eskiden web IRC istemcileri, araya bir köprü sunucu (gateway) koyarak çalışırdı: Tarayıcı köprüye, köprü IRC sunucusuna bağlanırdı. UnrealIRCd'nin doğrudan WebSocket desteği sayesinde bu ara katmana gerek kalmadan tarayıcı doğrudan IRC sunucusuna bağlanabilir.

WebSocket Modülü

UnrealIRCd'de WebSocket desteği bir modülle sağlanır. Bu modül, güncel sürümlerin varsayılan modül setinde genellikle yüklü gelir. Yüklü olup olmadığını oper olarak /MODULE komutuyla kontrol edebilirsiniz. Modül yönetimi hakkında bilgi için modül yönetimi yazımıza bakın.

WebSocket İçin listen Bloğu

WebSocket bağlantıları için ayrı bir port tanımlamanız gerekir:

listen {
	ip *;
	port 8000;
	options {
		tls;
		websocket { type text; }
	}
}
  • tls; bağlantının şifreli olmasını sağlar. Tarayıcıda bu, wss:// adresi anlamına gelir.
  • websocket { } bu portun WebSocket protokolünü konuşacağını belirtir.
  • type ayarı, web istemcisinin beklediği veri türüne göre seçilir. Çoğu modern web IRC istemcisi metin türüyle çalışır; istemcinizin belgelerine bakın. Güncel sürümlerde bu ayar isteğe bağlı olabilir.

Port numarasını istediğiniz gibi seçebilirsiniz. Bazı kurumsal ağlar alışılmadık portları engellediği için 443 numaralı porttan hizmet vermek erişilebilirliği artırır; ancak bu port genellikle web sunucusu tarafından kullanıldığı için aşağıda anlatacağımız ters vekil yöntemi daha pratiktir.

TLS Neden Şart?

Web sitenizin HTTPS ile açıldığını varsayalım. Tarayıcılar, HTTPS üzerinden açılan bir sayfanın şifresiz bir WebSocket (ws://) bağlantısı kurmasına izin vermez. Bu yüzden WebSocket portunuz mutlaka TLS kullanmalı ve geçerli bir sertifikaya sahip olmalıdır. Kendinden imzalı sertifikalarla tarayıcı bağlantıyı sessizce reddeder ve kullanıcı yalnızca "bağlanılamıyor" hatası görür. Sertifika kurulumu için Let's Encrypt sertifikası rehberimize bakın.

Web İstemcisi Seçimi ve Kurulumu

WebSocket portu hazır olduktan sonra bir web istemcisine ihtiyacınız var. Açık kaynaklı web IRC istemcileri genellikle iki şekilde kullanılabilir:

  1. Kendi sunucunuzda barındırmak: İstemcinin dosyalarını web sunucunuza yükleyip ayarlarında UnrealIRCd'nin WebSocket adresini (wss://irc.ornekagi.net:8000) belirtirsiniz.
  2. Hazır hizmet kullanmak: Bazı istemciler, kendi barındırdıkları sürüm üzerinden sizin sunucunuza bağlanmanıza izin verir.

Kendi sitenizde barındırmak; görünümü özelleştirmenize, varsayılan kanalı ayarlamanıza ve kullanıcı deneyimini kontrol etmenize olanak tanır. Bu sitedeki ana sayfa apleti de aynı mantıkla çalışır: Panelden eklenen bir web istemcisi kodu, ziyaretçilerin doğrudan kanala bağlanmasını sağlar.

Ters Vekil (Reverse Proxy) ile 443 Portu

WebSocket'i ayrı bir port yerine web sitenizin kendi adresi üzerinden sunmak isterseniz web sunucunuzu ters vekil olarak kullanabilirsiniz. Örneğin Nginx, /webirc yolundan gelen WebSocket isteklerini UnrealIRCd'nin yerel WebSocket portuna iletebilir. Bu yöntemin avantajları:

  • Kullanıcılar yalnızca 443 numaralı porta bağlanır; kurumsal güvenlik duvarlarına takılmazlar.
  • TLS sertifikasını web sunucusu yönetir.
  • UnrealIRCd'nin WebSocket portu dışarıya kapalı kalabilir.

Bu yöntemde dikkat edilmesi gereken önemli bir nokta vardır: UnrealIRCd, bağlantıların hepsini ters vekilin IP adresinden geliyormuş gibi görür. Kullanıcıların gerçek IP adreslerinin doğru şekilde aktarılması için UnrealIRCd'de ters vekilin güvenilir bir kaynak olarak tanımlanması ve vekilin gerçek IP'yi ileten başlıkları göndermesi gerekir. Aksi hâlde bütün web kullanıcıları aynı IP'den geliyormuş gibi görünür; maxperip sınırına takılırlar ve tek bir kişiye konan ban hepsini etkiler. Bu ayrıntı için UnrealIRCd belgelerindeki ilgili bölümü takip edin.

Web Kullanıcıları İçin Güvenlik

Web istemcileri yeni kullanıcılar için kapıyı açar; ama aynı kapı kötü niyetli kullanıcılar için de açıktır. Birkaç önlem almanızı öneririz:

  • Güvenlik grupları: WebSocket kullanıcılarını ayrı bir güvenlik grubu olarak ele alıp gerekirse onlara farklı flood sınırları uygulayabilirsiniz. Bkz. güvenlik grupları ve reputation.
  • Connthrottle: Web istemcileri üzerinden gelen bot saldırılarına karşı yeni bağlantı sınırlarının etkin olduğundan emin olun. Bkz. connthrottle.
  • Kanal korumaları: Web istemcinizin varsayılan olarak bağlandığı kanal, en çok saldırı alan kanal olacaktır. Bu kanalda +F flood profilini ve gerektiğinde +R modunu kullanın.
  • CAPTCHA: Kendi barındırdığınız web istemcisinde bağlanmadan önce bir doğrulama adımı eklemek, otomatik bot girişlerini büyük ölçüde azaltır.

Sık Karşılaşılan Sorunlar

SorunOlası neden
Tarayıcı bağlanamıyorSertifika geçersiz veya kendinden imzalı
"Mixed content" hatasıHTTPS sayfasından ws:// adresine bağlanılmaya çalışılıyor
Bütün web kullanıcıları aynı IP'den görünüyorTers vekil gerçek IP'yi iletmiyor veya güvenilir olarak tanımlı değil
Bağlantı kuruluyor ama hemen kopuyorWebSocket türü istemciyle uyumsuz
Port erişilemiyorGüvenlik duvarında WebSocket portu kapalı

Tarayıcının geliştirici araçlarındaki ağ sekmesi, WebSocket bağlantısının hangi aşamada başarısız olduğunu görmenizi sağlar.

Web İstemcisinin Kullanıcı Deneyimi

WebSocket yalnızca teknik altyapıdır; kullanıcıların sizde kalıp kalmayacağını belirleyen şey ilk izlenimdir. Web istemcinizde varsayılan kanalın yardımsever bir karşılama mesajı göstermesi, yeni kullanıcılara nick kaydının nasıl yapılacağını anlatan kısa bir bilgi kutusu eklemek ve mobil cihazlarda rahat kullanılabilen bir arayüz seçmek, web üzerinden gelen ziyaretçileri kalıcı kullanıcılara dönüştürmenin en etkili yollarıdır. Kanalınızda bir karşılama botu kullanmak isterseniz Eggdrop karşılama scripti yazımıza göz atabilirsiniz.

Sonuç

WebSocket desteği, IRC ağınızı program kurmaya üşenen yeni kuşak kullanıcılara açmanın en etkili yoludur. Geçerli bir TLS sertifikası, doğru yapılandırılmış bir listen bloğu ve iyi seçilmiş bir web istemcisiyle ziyaretçileriniz tek tıkla kanalınıza katılabilir. Kullanıcıların host adlarının nasıl belirlendiğini öğrenmek için sıradaki rehberimiz DNS ve ident.

IRC sorunun mu var? Kanalda birlikte çözelim.

💬 Kanala Bağlan

Sıkça Sorulan Sorular

WebSocket bağlantısı için TLS şart mı?

Pratikte evet. HTTPS üzerinden açılan web sayfaları yalnızca güvenli WebSocket (wss) bağlantılarına izin verir; bu yüzden geçerli bir sertifika gerekir.

Web istemcisini kendi sitemde barındırabilir miyim?

Evet. Açık kaynaklı web IRC istemcilerini kendi sunucunuzda çalıştırıp UnrealIRCd'nin WebSocket portuna bağlayabilirsiniz.

WebSocket kullanıcıları normal kullanıcılardan farklı mı?

Ağ içinde normal kullanıcı gibi görünürler; ancak güvenlik grubu ayarlarında ayrı bir grup olarak ele alınabilirler.