Cum se configurează un server TURN extern pentru Jitsi în spatele NAT

Cel mai important aspect: un server TURN extern ar trebui configurat ca rezervă pentru clienții care nu pot stabili o cale WebRTC utilizabilă din cauza NAT sau a firewall-urilor restrictive. Nu înlocuiește Jitsi Videobridge (JVB) în întâlnirile normale cu mai multe părți. Dacă serverul Jitsi în sine se află în spatele NAT, trebuie să faceți totuși JVB accesibil de pe internet, de obicei pe UDP 10000, sau să configurați corect adresa publică anunțată a bridge-ului.

Pentru implementările Jitsi actuale, cel mai curat design este de obicei o gazdă coturn accesibilă publicului cu un nume DNS precum turn.example.com, acreditări limitate în timp furnizate de Prosody prin XEP-0215 ​​și TURN peste UDP/TCP plus TURN peste TLS pentru rețele restrictive. Documentația actuală TURN a Jitsi recomandă în mod explicit acreditările dinamice în loc să se integreze un nume de utilizator și o parolă permanente în configurația browserului. Consultați documentația oficială de configurare Jitsi TURN .

Diagramă de rețea care arată Jitsi în spatele NAT folosind UDP 10000 pentru media direct bridge și un server TURN extern ca rezervă pe porturile TURN
Media Jitsi ar trebui să utilizeze calea normală a bridge-ului atunci când este posibil, în timp ce serverul extern TURN oferă o soluție de rezervă pentru clienții din rețele restrictive.

Când un server TURN extern este soluția potrivită

Folosește TURN atunci când unii participanți pot deschide pagina web Jitsi, dar nu pot stabili conexiuni media fiabile, în special din rețele corporative, Wi-Fi hotelier, campusuri, operatori de telefonie mobilă, VPN-uri sau alte medii care blochează sau filtrează puternic UDP. TURN este util și pentru apelurile Jitsi unu-la-unu atunci când conectivitatea peer-to-peer nu poate fi stabilită direct.

Nu considerați TURN ca prima soluție pentru o configurație greșită a unui Jitsi Videobridge. Ghidul oficial Jitsi Debian/Ubuntu spune că atunci când serverul se află în spatele NAT, routerul trebuie să redirecționeze porturile necesare, iar bridge-ul poate necesita o mapare explicită a adreselor locale-publice. În mod implicit, porturile importante orientate către Jitsi sunt TCP 443 și UDP 10000. Consultați ghidul actual de auto-găzduire Jitsi pentru Debian/Ubuntu înainte de a adăuga TURN.

Simptom sau cerințăCe să verificați mai întâi
Doi utilizatori nu reușesc să se conecteze direct la rețele restricționateTURN este un candidat puternic.
Trei sau mai mulți participanți nu au audio/videoVerificați JVB UDP 10000 și adresa sa publică înainte de a da vina pe TURN.
Utilizatorii din rețelele casnice normale funcționează, dar utilizatorii corporativi eșueazăAdăugați TURN/TLS, de preferință accesibil pe TCP 443 dacă designul rețelei permite acest lucru.
Doriți acreditări care să nu fie expuse permanent în JavaScriptFolosește serviciile externe Prosody cu un secret partajat și acreditări de scurtă durată.

Pasul 1: Pregătiți o gazdă TURN publică și un DNS

Cea mai simplă topologie este o mașină virtuală sau un server separat cu o adresă IP publică. Creați o înregistrare A sau AAAA, cum ar fi turn.example.comaceasta, care să se rezolve la gazda respectivă. Un nume de gazdă dedicat este util în special dacă oferiți ulterior TURN peste TLS, deoarece certificatul trebuie să corespundă numelui de gazdă utilizat de clienți.

Dacă gazda TURN se află ea însăși în spatele NAT-ului, coturn trebuie să știe adresa publică pe care ar trebui să o promoveze. Coturn acceptă o external-ipmapare, inclusiv perechi public/privat, cum ar fi external-ip=203.0.113.10/192.168.1.10. Documentația sa menționează, de asemenea, că porturile de retransmisie trebuie mapate în mod consecvent prin NAT. Consultați exemplul oficial de configurare coturn .

Diagramă cu participanți pe internet folosind un server TURN extern public pentru a ajunge la un server Jitsi Meet în spatele NAT
O gazdă TURN publică separată este de obicei mai ușor de expus în mod constant decât un serviciu TURN ascuns în spatele aceleiași rețele private ca Jitsi.

Pasul 2: Instalați coturn

Pe un sistem Debian sau Ubuntu compatibil, instalați coturn din depozitul de distribuție:

sudo apt update
sudo apt install coturn

Versiunile pachetului variază în funcție de versiunea sistemului de operare, așadar nu copiați un număr de versiune dintr-o captură de ecran sau de pe un alt server. După instalare, confirmați că unitatea de service există și că pachetul a fost instalat turnserver.

Terminalul Ubuntu afișează actualizarea apt urmată de repornirea instalării apt
Instalați coturn cu managerul de pachete pe gazda TURN dedicată; versiunea exactă a pachetului depinde de versiunea de Linux.

Pasul 3: Configurați coturn pentru autentificarea cu secret partajat

Pentru Jitsi, o configurație practică de producție folosește mecanismul de secret partajat al coturn, astfel încât Prosody să poată genera acreditări TURN temporare. Folosiți același secret pe ambele părți. Un punct de plecare minim arată astfel:

listening-port=3478
tls-listening-port=5349
realm=turn.example.com

fingerprint
use-auth-secret
static-auth-secret=REPLACE_WITH_A_LONG_RANDOM_SECRET

min-port=49160
max-port=49200

no-multicast-peers
no-cli

Dacă gazda TURN se află în spatele NAT, adăugați external-ipmaparea corespunzătoare. Dacă activați TURN prin TLS, configurați certși pkeycu un certificat de încredere pentru turn.example.com. Documentația oficială a containerului coturn explică faptul că TURN utilizează un interval de porturi de retransmitere pentru media și că intervalul poate fi restrâns cu min-portși max-port. Consultați documentația oficială a containerului coturn Docker pentru același comportament al porturilor de retransmitere.

Editor de text care prezintă o configurație coturn cu porturi de ascultare, autentificare cu secret partajat, porturi de retransmisie și o mapare IP externă public-privată
Setările tipice coturn includ porturile de ascultare, un secret partajat, un interval de porturi de retransmitere și o mapare IP externă atunci când gazda TURN se află în spatele NAT.

Pasul 4: Deschideți porturile de ascultare și de retransmitere

O eroare frecventă este deschiderea doar a porților 3478 sau 5349, uitându-se intervalul de retransmisie. Listener-ul Coturn acceptă conexiunea TURN inițială, dar mediul de retransmisie utilizează porturi de retransmisie alocate. Dacă ați ales 49160-49200, permiteți același interval prin firewall-ul gazdă, grupul de securitate cloud și orice NAT din amonte.

sudo ufw allow 3478/udp
sudo ufw allow 3478/tcp
sudo ufw allow 5349/tcp
sudo ufw allow 49160:49200/udp

Dacă aveți nevoie de cea mai largă compatibilitate cu rețelele corporative blocate, ghidul TURN de la Jitsi descrie servirea TURN prin TLS pe ​​TCP 443. Aceasta poate necesita un nume de gazdă TURN dedicat și, atunci când HTTPS web partajează aceeași adresă publică, multiplexare TLS SNI. Nu mutați orbește TURN la 443 decât dacă înțelegeți ce deține deja acel port.

Terminal Ubuntu care afișează regulile UFW care permit porturile de ascultare TURN și intervalul configurat de porturi de retransmisie UDP
Firewall-ul trebuie să permită atât listener-ul TURN, cât și intervalul de porturi de retransmitere selectat în coturn.

Pasul 5: Configurați Jitsi pentru a face publicitate serviciului TURN extern

Pe o implementare curentă de pachete Debian/Ubuntu Jitsi, Prosody folosește mod_external_servicescodul STUN/TURN pentru a publica informații către clienți. Exemplul Prosody al lui Jitsi folosește un external_service_secretplus și un external_servicestabel cu secret = true. Secretul partajat trebuie să corespundă codului . al codului coturn static-auth-secret.

external_service_secret = "REPLACE_WITH_THE_SAME_LONG_RANDOM_SECRET";

external_services = {
    { type = "stun", host = "turn.example.com", port = 3478 },
    { type = "turn", host = "turn.example.com", port = 3478,
       transport = "udp", secret = true, ttl = 86400, algorithm = "turn" },
    { type = "turns", host = "turn.example.com", port = 5349,
       transport = "tcp", secret = true, ttl = 86400, algorithm = "turn" }
};

Păstrați modulele existente și setările specifice site-ului în fișierul Prosody generat de Jitsi; nu înlocuiți întregul fișier cu fragmentul de cod de mai sus. Numele exact al fișierului urmează în mod normal domeniului de implementare sub /etc/prosody/conf.d/. Exemplul de configurare Jitsi din amonte poate fi verificat în depozitul oficial Jitsi .

Dacă utilizați implementarea oficială Docker, este de preferat variabilele de mediu documentate ale acesteia în locul editării manuale a fișierelor Prosody generate. Documentația Docker actuală expune TURN_CREDENTIALS, TURN_HOST, TURN_PORT, , TURN_TRANSPORT, TURNS_HOSTși TURNS_PORT. Consultați ghidul curent de auto-găzduire Jitsi Docker, deoarece valorile implicite ale variabilelor se pot schimba între versiuni.

Terminalul verifică înregistrarea DNS TURN, porturile 3478 și 5349 și intervalul configurat de firewall pentru porturi de retransmisie.
Înainte de a schimba Jitsi, verificați dacă numele de gazdă TURN se rezolvă și dacă coturn ascultă efectiv pe porturile de transport așteptate.

Pasul 6: Reporniți și validați serviciile

După schimbarea coturn-ului, reporniți-l și verificați starea acestuia:

sudo systemctl restart coturn
sudo systemctl status coturn
sudo ss -lntup | grep -E '3478|5349'

După modificarea configurației Prosody, validați sintaxa acesteia dacă pachetul Prosody oferă verificatorul, apoi reporniți Prosody. În funcție de ce ați modificat în Jitsi, poate fi potrivită și repornirea serviciilor Jitsi relevante:

sudo prosodyctl check config
sudo systemctl restart prosody

O stare curată a serviciului coturn dovedește doar că daemonul rulează. Nu dovedește că acreditările se potrivesc, că intervalul de retransmisie este accesibil sau că un browser poate obține un candidat de retransmisie.

Terminalul care afișează coturn a fost repornit cu succes și activ cu mesaje de ascultare TURN și TLS
Folosește verificările stării serviciului și ale listener-elor ca prim pas de validare; timestamp-urile și ID-urile proceselor vor diferi pe serverul tău.
Terminal care arată că serviciile legate de Jitsi sunt repornite după modificările configurației
Reporniți doar serviciile Jitsi afectate de modificările de configurație, apoi testați cu o sesiune nouă de browser.

Pasul 7: Testați dacă TURN poate transmite efectiv media

Testarea din aceeași rețea locală nu este suficientă. Folosiți cel puțin un client dintr-o rețea diferită, ideal o conexiune mobilă sau o rețea despre care se știe că restricționează UDP. În diagnosticarea WebRTC a browserului, căutați un candidat ICE de tip relay. Un candidat de retransmisie înseamnă că browserul a obținut cu succes acreditările TURN și a creat o alocare TURN.

De asemenea, urmăriți jurnalele coturn în timp ce utilizatorul de test se conectează. Ar trebui să vedeți alocări autentificate și trafic de retransmitere atunci când este selectat TURN. Dacă observați erori de autentificare, comparați coturn static-auth-secretcu secretul de acreditare TURN din Prosody sau Docker. Dacă alocările reușesc, dar mediul tot eșuează, verificați firewall-ul portului de retransmitere și maparea NAT.

Nu forțați TURN doar să demonstreze că serverul există, decât dacă aveți un motiv controlat pentru testare. În condiții normale, ICE alege cea mai bună cale de lucru. Prin urmare, o implementare reușită poate avea multe întâlniri care nu necesită niciodată TURN.

Pasul 8: Păstrați configurația JVB NAT separat de depanarea TURN

Acesta este punctul care previne cea mai mare pierdere de timp în depanare. Un server Jitsi în spatele NAT necesită în continuare configurarea corectă a accesibilității publice a podului. Ghidul actual de pornire rapidă Jitsi spune că podul se configurează în mod normal automat, dar dacă apelurile mai mari eșuează, puteți adăuga o mapare statică ice4j.harvest.mappingsub /etc/jitsi/videobridge/jvb.conf:

ice4j {
  harvest {
    mapping {
      static-mappings = [
        {
          local-address = "192.168.1.20"
          public-address = "203.0.113.20"
        }
      ]
    }
  }
}

Redirecționați UDP 10000 de la marginea publică către gazda JVB și asigurați-vă că adresa publică este cea pe care clienții la distanță o pot accesa efectiv. TURN poate ajuta clienții din rețele restrictive, dar nu ar trebui utilizat pentru a ascunde o mapare NAT JVB defectă.

Diagramă de rețea care pune accent pe media directă a punții Jitsi peste UDP 10000 cu TURN utilizat doar ca cale de rezervă
Arhitectura dorită menține JVB accesibil direct pentru mediile normale, în timp ce TURN rămâne o soluție de rezervă pentru rețelele care nu pot utiliza calea directă.

Listă de verificare rapidă pentru depanare

  • Numele de gazdă TURN nu se rezolvă: corectați DNS-ul înainte de a testa Jitsi.
  • 3478/5349 ascultă local, dar nu de la distanță: inspectează firewall-ul gazdă, firewall-ul cloud, NAT-ul routerului și filtrarea furnizorului.
  • Acreditările eșuează: verificați dacă secretul partajat este identic în configurația Coturn și Jitsi/Prosody.
  • Apare un candidat de retransmisie, dar mediul eșuează: verificați dacă intervalul de porturi de retransmisie configurat este deschis de la un capăt la altul.
  • Doar apelurile cu mai multe părți eșuează: verificați JVB UDP 10000 și anunțul JVB pe adresă publică.
  • Doar rețelele corporative eșuează: adăugați sau verificați TURN prin TLS, adesea pe TCP 443, acolo unde este cazul.
  • Modificările din Docker dispar după repornire: configurați variabilele acceptate .envîn loc să editați fișierele generate în interiorul containerelor.

Cum arată un rezultat corect

O configurație sănătoasă are trei comportamente observabile. În primul rând, utilizatorii obișnuiți pot accesa direct Jitsi Videobridge fără TURN atunci când rețelele lor permit acest lucru. În al doilea rând, utilizatorii din rețele restrictive pot primi acreditări TURN temporare și pot obține un relaycandidat ICE. În al treilea rând, coturn afișează alocări autentificate doar atunci când este necesar, în loc să realizeze fiecare întâlnire în mod implicit.

Această combinație vă oferă o soluție utilă fără a transforma serverul TURN într-un blocaj inutil al lățimii de bandă. De asemenea, menține depanarea curată: problemele JVB NAT rămân probleme JVB, în timp ce TURN rezolvă problema mai restrânsă a conectivității WebRTC atunci când rutele directe sunt blocate.

Lasă un comentariu

10 cele mai bune instrumente Ping Sweep pentru găsirea dispozitivelor în rețeaua dvs.

10 cele mai bune instrumente Ping Sweep pentru găsirea dispozitivelor în rețeaua dvs.

Comparați 10 instrumente de scanare ping pentru descoperirea rapidă a rețelelor LAN, scanarea multi-platformă și gestionarea adreselor IP. Aflați ce vă poate spune o scanare (sweep).

6 Cele mai bune instrumente de gestionare a rețelei pentru urmărirea performanței

6 Cele mai bune instrumente de gestionare a rețelei pentru urmărirea performanței

Comparați șase instrumente de gestionare a rețelei pentru monitorizarea performanței, inclusiv acoperirea SNMP, maparea, alertele, modelele de implementare și compromisurile de costuri.

QoS în rețele: Ce face calitatea serviciilor și cum funcționează

QoS în rețele: Ce face calitatea serviciilor și cum funcționează

Aflați ce înseamnă QoS în rețele, cum marcajele DSCP și cozile de trafic prioritizează aplicațiile vocale, video și de business și ce nu poate remedia QoS.

Cel mai bun software de server SFTP pentru transferuri securizate de fișiere

Cel mai bun software de server SFTP pentru transferuri securizate de fișiere

Compară software-ul de server SFTP fiabil pentru Windows și Linux, inclusiv OpenSSH, Bitvise, SolarWinds și SFTPGo. Găsește soluția potrivită pentru nevoile tale de securitate și transfer de fișiere.

Cele mai bune practici de monitorizare a rețelei: Ce să urmăriți și ce instrumente să utilizați

Cele mai bune practici de monitorizare a rețelei: Ce să urmăriți și ce instrumente să utilizați

Construiți o monitorizare practică a rețelei cu o acoperire clară a dispozitivelor, indicatori de performanță utili, alerte acționabile și o comparație între SolarWinds NPM, PRTG și OpManager.

Cele mai bune 7 instrumente de gestionare a adreselor IP pentru echipele de rețea

Cele mai bune 7 instrumente de gestionare a adreselor IP pentru echipele de rețea

Comparați șapte instrumente de gestionare a adreselor IP pentru descoperirea subrețelelor, coordonarea DNS și DHCP, inventarul rețelei și IPAM open-source.

10 cele mai bune instrumente de scanare a rețelei pentru descoperirea dispozitivelor și a adreselor IP

10 cele mai bune instrumente de scanare a rețelei pentru descoperirea dispozitivelor și a adreselor IP

Comparați instrumentele de scanare a rețelei pentru descoperirea rapidă a dispozitivelor, scanări IP pe mai multe platforme și IPAM pentru întreprinderi, cu îndrumări privind potrivirea fiecărei opțiuni la rețeaua dvs.

Cum se utilizează Nmap pentru Traceroute și citirea căii de rețea

Cum se utilizează Nmap pentru Traceroute și citirea căii de rețea

Folosește opțiunea --traceroute din Nmap pentru a mapa salturi la o gazdă autorizată, a înțelege ieșirea saltului și a RTT-ului și a depana răspunsurile lipsă fără a suprascana.

6 Cele mai bune instrumente de monitorizare a serverelor Windows pentru o disponibilitate și o performanță mai bune

6 Cele mai bune instrumente de monitorizare a serverelor Windows pentru o disponibilitate și o performanță mai bune

Comparați șase instrumente de monitorizare Windows Server în funcție de colectarea datelor Windows, vizibilitatea aplicațiilor, modelul de implementare și licențierea pentru a găsi instrumentul potrivit.

6 instrumente de monitorizare a rețelei Linux pentru dispozitive, gazde și trafic

6 instrumente de monitorizare a rețelei Linux pentru dispozitive, gazde și trafic

Comparați șase instrumente de monitorizare a rețelei Linux pentru descoperirea dispozitivelor SNMP, grafice de interfață, metrici gazdă, verificări de servicii și fluxuri de trafic.