Browsed by
Etiket: debian

coTURN Kurulum ve Yapılandırma Adımları

coTURN Kurulum ve Yapılandırma Adımları

Bu blog sayfası, SIP veya WebRTC projeleriniz (Jitsi Meet gibi) için güvenlik duvarlarının veya proxy’lerin arkasındaki kullanıcıların bağlanmasına izin vermek için coTURN sunucusunun kurulum ve yapılandırma adımları kapsar.

TURN Nedir?

TURN, Traversal Using Relays around NAT‘ın kısaltmasıdır. STUN’a benzer şekilde, Internet’teki eşler arasında iletişim kurmak için olası yolların keşfedilmesine yardımcı olmak için kullanılan bir ağ protokolü / paket biçimidir (IETF RFC 5766). Paketleri eşler arasında aktarmak için ortak bir röle sunucusu kullanması nedeniyle STUN’dan farklıdır. TURN, başka bir seçenek olmadığında medya paketlerini eşler arasında ulaştırmak için bir ara sunucu olarak kullanılır. TURN’ün kullanılması durumunda artık bağlantı p2p olmayacağından sunucu kaynakları tüketilir ve eşler arası bağlantıda fazladan bir hop eklenmesi nedeniyle gecikme süresi (latency) artar.

TURN’ü eşlerden birinin simetrik bir NAT’ın arkasında, diğeri ise simetrik bir NAT’ın veya port tabanlı NAT’ın arkasında olduğunda kullanmanız gerekir. Bu durum genelde toplam bağlantıların %10’unda karşımıza çıkar. Geri kalan bağlantıların çoğunda STUN tek başına yeterlidir.

CoTURN Sunucusunu Yüklemek

Ses / Video tabanlı servisler, WebRTC için kullanılan çeşitli UDP portlarını kullanır. NAT arkasındaki ya da sunucunuza doğru UDP bağlantılarını kısıtlayan bir güvenlik duvarı kullanımının olduğu bazı ağlarda kullanıcılar medya sunucunuzla UDP üzerinden bağlantı kuramayabilir.

TURN protokolü, istemciyi TURN sunucusuna bağlanmaya zorlayarak UDP iletişim akışlarının NAT veya güvenlik duvarlarını atlamasına izin vermek ve ardından TURN sunucusunun hedeflerine kendi adına bağlanması için tasarlanmıştır.

Kontrolünüz altında bir TURN sunucusu kullanmak, multimedya uygulamanızla olan bağlantıların başarısını ve aynı zamanda bir proxy gibi davrandığından kullanıcı gizliliğini artırır; böylece eşlerin IP adres bilgilerini artık halka açık bir STUN sunucusuna göndermemiş olursunuz.

Gerekli Donanım

TURN protokolü çok fazla CPU veya RAM’e ihtiyaç duymaz. Buna ek olarak, yalnızca bağlantı kurulumu sırasında (STUN için) kullanıldığında bant genişliği gereksinimleri yüksek değildir. TURN sunucunuz bir medya proxy olarak kullanıldığında eşlerin gönderdiği akışlar kadar giriş ve çıkış bant genişliği ihtiyacı olacaktır. Orta sayıda bağlantı için, tek bir küçük VPS yapılandırması genellikle yeterlidir. CoTURN kurulum için kaynak önerilerimi aşağıda bulabilirsiniz:

  • En az iki vCPU
  • 4GB RAM.
  • 20GB HDD. SSD kullanılabilir, ancak zorunlu değildir.
  • Ağ performansı:
    • Düşük jitter (30ms’den az)
    • Düşük gecikme süresi (latency) (150ms’den az)
    • Her iki yöndeki medya akışlarını karşılayabilmek için yeterli bant genişliği.

Sunucunun NAT arkasında olmasında (Amazon EC2’de olduğu gibi) bir sorun yoktur, ancak herhangi bir porta (TCP 80 & 443, UDP 3478, 10000-20000) gelen tüm UDP ve TCP bağlantılarının coTURN sunucusuna iletilmesi gerekmektedir.

coTURN Gerekli Yazılım ve Kurulum Adımları

coTURN için Debian Netinst veya Ubuntu ile minimal bir sunucu kurulumu işinizi görecektir. CoTURN yazılımı TCP 443 portunu kullandığından, coTURN’ün yükleneceği sunucuda çalışan başka bir web uygulaması olamaz. (farklı bir portta olabilir tabi :))

coTURN, Debian ve Ubuntu repolarında mevcuttur ve apt-get ile kurulabilir:

$ sudo apt-get update
$ sudo apt-get install coturn

coTURN konfigürasyonu tamamlanıncaya kadar coTURN’un otomatik olarak başlamayacağını lütfen unutmayın. Konfigürasyon adımlarını aşağıda bulabilirsiniz.

CoTURN İçin DNS Girişi

CoTURN sunucunuzun harici IP adresini çözen tam bir alanı adı (FQDN) ayarlamanız gerekir. Aynı zamanda bir TLS sertifikası oluşturmak için de bu alanı adını kullanacaksınız.

TLS Sertifikaları Üretmek

Ücretsiz bir TLS sertifikası oluşturmak için Let’s Encrypt’i kullanan certbot‘u kullanabilirsiniz. Certbot’u kurmak için coTURN sunucunuzda aşağıdaki komutları girin:

$ sudo add-apt-repository ppa:certbot/certbot 
$ sudo apt-get update 
$ sudo apt-get install certbot

Daha sonra, TURN sunucunuza sertifikayı oluşturmak için alan adı adresinizi kullanarak aşağıdaki gibi bir certbot komutu çalıştırabilirsiniz:

$ sudo certbot certonly --standalone --preferred-challenges http \
    --deploy-hook "systemctl restart coturn" \
    -d turn.fatiherikci.com

Certbot komutunun mevcut sürümleri varsayılan olarak sertifikalarınızı otomatik olarak yeniler. Certbot sertifikayı yenilediğinde, coTURN servisini yeniden başlatacağını, böylece coTURN’nin güncellenmiş sertifika dosyalarını kullanmaya başlayacağını unutmayın. Bu işlem, sunucunuzun aktif olarak üzerinden geçirdiği TURN bağlantılarında kesintiye neden olacaktır. Bu durumu engellemek için isterseniz, sertifika yenileme zamanlamasını değiştirebilir veya otomatik yenilemeyi devre dışı bırakabilirsiniz.

CoTURN’ü Yapılandırmak

coTURN yapılandırması /etc/turnserver.conf dosyasında depolanır. Bu dosya için çok fazla seçenek mevcuttur ve bu seçenekler ile ilgili açıklamaları yorum satırlarında bulmanız mümkündür. Aşağıdaki örnekte, önerilen ayarlar olarak yorumların yanı sıra, özelleştirmenin gerekli olduğu yerlerde notların bulunduğu örnek bir yapılandırmayı bulabilirsiniz.

/etc/turnserver.conf dosyasının içeriğini aşağıdaki dosyayla değiştirebilir ve aşağıdaki değişiklikleri yapabilirsiniz:

  • turn.fatiherikci.com adresini TURN sunucunuzun ana bilgisayar adıyla değiştirin.
  • Diğer kalın harfler ile belirtilen satırları kendi sunucunuza göre değiştirin.

Aşağıda bir örnek yapılandırma dosyası görebilirsiniz:

server-name=turn.fatiherikci.com
realm=turn.fatiherikci.com
cert=/etc/letsencrypt/live/turn.fatiherikci.com/cert.pem
pkey=/etc/letsencrypt/live/turn.fatiherikci.com/privkey.pem
fingerprint 
listening-ip=0.0.0.0 
external-ip= 1.2.3.4/192.168.0.1 #ya da sadece dış IP yazın
listening-port=3478 
min-port=10000 
max-port=20000 
log-file=/var/log/turnserver.log 
verbose 
user=myusername:mypassword 
lt-cred-mech

Konfigürasyonu tamamladıktan sonra coTURN’ü çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

$ systemctl start ​​coturn

CoTURN’u Servis Olarak Çalıştırmak

Debian / Ubuntu için olan coTURN paketini başlangıçta etkinleştirmek için /etc/default/coturn dosyasını açarak aşağıdaki satırın commentini açın:

TURNSERVER_ENABLED = 1

Bu kadar! coTURN kurulum adımlarımız tamamlandı. Artık çalışır durumda bir TURN sunucunuz var!

TURN Sunucunuzu Test Etmek

CoTURN sunucunuzu test etmek için Trickle-Ice test aracını kullanabilirsiniz. Trickle ICE’ın web sayfasına gidin ve aşağıdakileri girin:

  • STUN veya TURN URI: turn:PublicIPAdresiniz:3478
  • TURN username: kullanıcıadı
  • TURN password: şifre

Ardından Add Server düğmesini ve ardından Gather Candidates düğmesini tıklayın. Her şey yolunda giderse, sonuç olarak Done görmelisiniz.

Jitsi Meet Debian 10’a Nasıl Kurulur?

Jitsi Meet Debian 10’a Nasıl Kurulur?

Jitsi Meet, çok kullanışlı ve basit, WebRTC tabanlı açık kaynaklı çok platformlu bir video konferans çözümüdür. Jitsi Meet’i bulut tabanlı veya kendi sunucularınızda da kullanabilirsiniz. Bu blog yazımda, Jitsi sunucusunu Debian veya Ubuntu tabanlı linux platformunuza nasıl kuracağınızı açıklayacağım.

Başlamadan önce, Jitsi üzerinden görüntülü görüşme deneyimini merak ediyorsanız, bu URL’yi tıklamanız ve meet.jit.si tarafından desteklenen görüntülü görüşme sayfama gitmeniz yeterli.

Jitsi Meet’i Ubuntu veya Debian linux platformuna kurmak oldukça kolaydır. Bu kılavuzda, Jitsi sunucusunu Debian 10 üzerinde .deb paketlerini kullanarak nasıl kurulacağını bulabilirsiniz.

Ben Debian’ı net kurulum paketinden (netinst) yüklemeyi tercih ediyorum, çünkü bu sayede paketleri güncel olan minimum bir kurulum yapabiliyorum. Bu kurulum yazısında sizin Debian’ı kurabileceğinizi farz ediyorum ve Jitsi kurulumuna temel kurulum noktasından devam edeceğim.

Öncelikle, sudo & ssh gibi temel paketleri kuralım. Konsoldan root olarak oturum açın, ardından gerekli paketleri kurun.

apt-get install -y ssh sudo ufw apt-transport-https

Root olmayan kullanıcınızı (benimki ferikci) /etc/sudoers dosyasına ekleyin.

ferikci  ALL=(ALL:ALL) ALL 

Artık sudo komutlarını kullanarak mevcut kullanıcınızla devam edebilirsiniz.

Opsiyonel: UFW güvenlik duvarını etkinleştirin ve gereken portları açın:

sudo ufw allow in ssh 
sudo ufw allow in http 
sudo  ufw allow in https 
sudo  ufw allow in 10000:20000/udp 
sudo  ufw enable 

Eğer linux makinenize SSH ile bağlıysanız, “ufw allow ssh” komutunu girdikten sonra “ufw enable” komutunu girin, aksi takdirde mevcut SSH bağlantınızı kaybedebilirsiniz.

Ardından linux makinenizi yeniden başlatın:

reboot

Şimdi kurulumun geri kalanında mevcut kullanıcınızla SSH üzerinden tekrar oturum açın.

Jitsi GPG anahtarını ekleyin.

 wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add - 

Jitsi deposunu ekleyin ve apt yi güncelleyin

sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
sudo apt-get -y update 

Jitsi-Meet Kurulumu

Artık Jitsi sunucu kurulumuna hazırsınız. Jitsi-meet’i bağımlılıklarıyla birlikte kurmak için aşağıdaki komutu kullanın:

sudo apt-get -y install jitsi-meet

Kurulum esnasında bilgisayar adınız (hostname) sorulacak ancak, sadece bilgisayar adınızı yazmayın, bu alana bilgisayar adınızı FQDN olarak yazmalısınız, aksi takdirde bağlantı ile ilgili sorunlarla karşılaşabilirsiniz. Bu arada, FQDN’nin DNS sunucuları tarafından çözüğlebildiğinden emin olun. (Ya da FQDN’i bilgisayarınızın hosts dosyanıza ekleyebilirsiniz.).

Jitsi Hostname (FQDN) Ayarları

Kurulumda bundan sonra sertifika istenecektir. Ben bu kurulumda kendinden imzalı SSL sertifikası kullanacağım, bu yüzden ilk seçeneği seçiyorum.

Jitsi SSL Sertifika Konfigürasyon Menüsü

Kurulum bir süre sonra tamamlanacak ve komut istemine geçecektir.

Şimdi video konferans GUI’nize bağlanma zamanı geldi. Jitsi sunucusunun ana sayfasına gitmek için https://FQDN adresini kullanın:

https://jitsi.test.local

Oda adı giriş alanına sahip bir ana sayfa göreceksiniz. Bir oda adı girin ve Go düğmesine tıklayın.

Jitsi Meet Ana Sayfa

Hepsi bu kadar! Aynı prosedürle veya https://FQDN/odaadı URL’sini kullanarak odanıza daha fazla katılımcı ekleyebilirsiniz.

https://jitsi.test.local/testroom
Ve Jitsi Meet Çalışır

Jitsi’yi Bir NAT Arkasında Çalıştırmak

Jitsi sunucunuzu iç IP ile bir NAT arkasında kullanmak istiyorsanız, yönlendiricinizi aşağıdaki portları Jitsi Meet sunucunuza yönlendirecek şekilde yapılandırmanız (port forwarding) gerekir:

  • 80/TCP
  • 443/TCP
  • 10000-20000/UDP

Ardından /etc/jitsi/videobridge/sip-communicator.properties dosyasına iç ve dış IPlerinizi içeren aşağıdaki satırları eklemeniz gerekir:

org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=[İÇ.IP.ADRESİ]
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=[DIŞ.IP.ADDRESİ]

Örnek olarak kendi konfigürasyonum şöyle:

org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=192.168.1.20
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=95.9.74.32
miniSIPServer Kurulum Adımları (Debian/Ubuntu Linux)

miniSIPServer Kurulum Adımları (Debian/Ubuntu Linux)

miniSIPServer, Çin merkezli bir firmanın yaklaşık 10 yıldır geliştirdiği, kullanımı son derece kolay, basit bir arayüze sahip ve Windows / Linux / Raspberry Pi ortamlarında çalışabilen bir SIP santral sunucusu. Görsel bir arayüzü bulunduğundan çok hızlı bir şekilde (yaklaşık 1 saat) bir IP santral kurulumu yapabiliyorsunuz. Bir diğer özelliği de paralı bir lisansa ihtiyaç duymadan 30 gün boyunca kullanabiliyorsunuz. Bu sayede özellikle hızlı test ortamları oluşturabilmek için ideal. Bu yazıda miniSIPServer’ı Linux (Debian / Ubuntu) ortamında nasıl kurabileceğinizi anlatacağım.

Kurulum:

Kurulum dediğim gibi çok basit. Debian veya Ubuntu işletim sistemini bir desktop arayüzü ile kurup ağ bağlantılarını yaptıktan sonra ilgili kütüphanelerin kurulumunu yapın. Daha sonra da miniSIPServer’ı myvoipapp.com sitesinden indirip kurabilirsiniz. Bu adımları detaylı bir şekilde aşağıda bulabilirsiniz:

Gerekli Kütüphane ve Uygulamalar

miniSIPServer’ın çalışabilmesi için gerekli kütüphaneler ve uygulamaları apt ile kurabilirsiniz. Bunun için aşağıdaki komutu kullanabilirsiniz:

sudo apt-get install libqt4-dev libqtcore4 libqtgui4 libqt4-network libqt4-xml libsrtp0-dev curl gcc g++ 

miniSIPServer Kurulumu

bu linkten kullanmak istediğiniz kullanıcı sayısına karşılık gelen versiyonunu indirin.

.deb paketini indirdiğiniz klasöre gidin ve dpkg ile miniSIPServer’ı kurun. Örneğin 20 kullanıcılı V35 paketi için aşağıdaki komutu kullanabilirsiniz:

sudo dpkg --install mss_v35_u20.deb

Kurulum bittikten sonra uygulamayı /opt/sipserver/ klasöründe bulabilirsiniz. Uygulamayı çalıştırmak için desktop arayüzünde Internet -> miniSIPServer linkini kullanabilirsiniz.

Aşağıdaki videomda bu anlattığım adımları ve bir IP telefonu basitçe nasıl ekleyebileceğinizi görsel olarak bulabilirsiniz: