STUN ve TURN sunucuları ne işe yarar?
WebRTC; görüntülü görüşme, ekran paylaşımı ve tarayıcıdan tarayıcıya dosya aktarımı gibi uygulamaların temelidir. İki cihazın doğrudan konuşabilmesi için önce birbirlerine hangi adresten ulaşabileceklerini bulmaları gerekir. Ancak cihazların çoğu bir modemin ya da kurumsal güvenlik duvarının arkasında, NAT ile çevrilmiş yerel adreslerle çalışır. STUN ve TURN sunucuları bu sorunu çözer:
- STUN, cihaza internetten nasıl göründüğünü, yani genel IP adresini ve port numarasını söyler. Bu bilgiyle iki taraf çoğu zaman doğrudan bağlantı kurabilir.
- TURN, doğrudan bağlantının mümkün olmadığı durumlarda (simetrik NAT, sıkı güvenlik duvarı, yalnızca TCP'ye izin veren ağlar) trafiği kendi üzerinden aktaran bir röle görevi görür.
Test nasıl yapılır?
- Sunucu adresini stun:, turn: veya turns: ön ekiyle girin (örneğin stun:sunucu.ornek.com:3478 ya da turn:sunucu.ornek.com:3478?transport=tcp).
- TURN sunucuları için kullanıcı adı ve şifre (credential) alanlarını doldurun. Zaman sınırlı kimlik bilgileri kullanıyorsanız süresinin dolmadığından emin olun.
- Gerekirse birden fazla sunucu ekleyip testi çalıştırın. Tarayıcı ICE adaylarını toplar ve her birini türü, adresi, protokolü ve ne kadar sürede geldiğiyle birlikte listeler.
Kendi sunucunuz yoksa “Kendi sunucularımızı test et” seçeneğiyle testin nasıl bir sonuç ürettiğini görebilirsiniz.
Aday türlerini okumak
Test sonucunda gördüğünüz her satır bir ICE adayıdır. Türüne göre ne anlama geldiği değişir:
- host: Cihazın kendi yerel adresi. Modern tarayıcılar bunu gizlilik için rastgele bir .local adıyla gösterir.
- srflx: STUN sunucusundan alınan genel adres. Görüyorsanız STUN çalışıyor demektir.
- relay: TURN sunucusunun size ayırdığı aktarım adresi. Görüyorsanız TURN ve kimlik doğrulama çalışıyor demektir.
- prflx: Bağlantı kontrolü sırasında keşfedilen adres; tek taraflı testte nadiren görünür.
Süre sütunu, adayın testin başlangıcından itibaren kaç milisaniyede geldiğini gösterir. Bu değer sunucunun size olan uzaklığı ve yükü hakkında fikir verir; birkaç yüz milisaniyeyi aşan süreler, görüşmelerin geç başlamasına yol açabilir.
Kendi sunucunuzu kurarken
coturn gibi açık kaynaklı yazılımlarla kendi STUN/TURN sunucunuzu kurabilirsiniz. Kurulumdan sonra en az üç senaryoyu ayrı ayrı test etmek iyi bir alışkanlıktır: UDP üzerinden turn:, TCP üzerinden turn: (?transport=tcp) ve TLS üzerinden turns:. Ayrıca sunucunun dış IP adresini doğru bildirdiğinden emin olun; NAT arkasındaki bir sunucuda bu ayar eksikse relay adayı oluşur ancak gerçek görüşmelerde medya akışı kurulamaz.
Sık karşılaşılan sorunlar
- Hiç relay adayı yok: Kullanıcı adı veya şifre hatalı, sunucuda kimlik doğrulama gizli anahtarı (static-auth-secret) uyuşmuyor ya da TURN portu güvenlik duvarında kapalı olabilir.
- Yalnızca UDP'de çalışıyor: Kısıtlı ağlardaki kullanıcılar için ?transport=tcp veya 443 portunda turns: (TLS) desteği ekleyin.
- turns: başarısız, turn: çalışıyor: TLS sertifikası geçersiz, süresi dolmuş veya alan adıyla eşleşmiyor olabilir.
- srflx adresi beklenenden farklı: Ağınızda CGNAT veya VPN varsa genel adres servis sağlayıcınıza ya da VPN sunucusuna ait görünür.
Test tamamen tarayıcınızda çalışır; girdiğiniz kimlik bilgileri yalnızca tarayıcının belirttiğiniz sunucuya bağlanması için kullanılır. Genel IP adresinizi ve WebRTC sızıntı durumunu görmek için IP adresim sayfasına, WebRTC veri kanalı üzerinden gerçek paket kaybını ölçmek için paket kaybı testine göz atabilirsiniz. Kendi uygulamanızda görüşme kalitesini ölçmeden önce temel gecikmeyi ping testi ile kontrol etmek de faydalıdır.