web-dev-qa-db-fra.com

Le serveur Stun Coturn a renvoyé une erreur avec le code = 701

J'ai mon propre serveur avec ubuntu 19.

REMARQUE: j'ai besoin d'un serveur stun/turn pour une application Web de chat vidéo. Cela fonctionne déjà si les deux appareils sont sur le même réseau.

J'ai installé et configuré avec succès coturn. Je peux démarrer avec succès le serveur tournant en exécutant: turnserver ou Nohup turnserver & dans le terminal.

REMARQUE: j'ai une connexion SSH à mon serveur.

Je me suis également assuré que les ports nécessaires sont ouverts et je les ai vérifiés avec netstat -tulpn.

J'ai également redémarré coturn plusieurs fois en testant Sudo service coturn restart.

J'utilise ces configurations dans le turnserver.conf:

# Also tried 80
listening-port=3478
# Also tried 443
tls-listening-port=5349
listening-ip=<MY-IP4>
listening-ip=<MY-IP6>
relay-ip=<MY-IP4>
external-ip=<MY-IP4>
oauth
user=root:<password>
userdb=/var/lib/turn/turndb
no-stdout-log

C'est ma configuration iceServers en js, qui, je crois, devrait fonctionner (j'ai fait des tonnes d'autres combinaisons).

var pcConfig = {
  'iceServers': [
    {
      'urls': 'stun:<MY-IP4>:80'
    },
    {
      'urls': 'turn:<MY-IP4>:80',
      'credential': '<PASSWORD>',
      'username': 'root'
    }
  ]
};

J'ai fait des tonnes de différentes combinaisons de serveurs stun/turn, par exemple:

  • J'ai utilisé les serveurs stun de google: stun.l.google.com:19302, stun2.l.google.com:19302 etc.

  • J'ai essayé les ports 3478 et 5349 (bien sûr après avoir redémarré coturn)

  • J'ai essayé d'utiliser les informations d'identification pour le serveur stun, mais je suis sûr qu'il n'en a pas besoin

  • J'ai essayé d'utiliser l'adresse IP6

J'ai également fait des tests en direct sur mon projet Web et aussi ici: https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

En gros, l'URL de test ci-dessus me donne toujours:

Note: errors from onicecandidateerror above are not neccessarily fatal. For example an IPv6 DNS lookup may fail but relay candidates can still be gathered via IPv4.
The server stun:<MY-IP4>:80 returned an error with code=701:
STUN server address is incompatible.
The server stun:<MY-IP4>:80 returned an error with code=701:
STUN server address is incompatible.

Peu importe que j'utilise le serveur stun de Google ou le mien, l'erreur est la même.

Mon projet Web et le chat vidéo FONCTIONNENT très bien si j'utilise le même réseau, mais je crois que les serveurs stun and turn ne sont pas utilisés dans le même réseau.

Aussi, pendant que je mettais à jour mon fichier JS, j'ai toujours supprimé le cache, donc le nouveau fichier JS a été utilisé. Ce n'était donc pas non plus un problème.

[~ # ~] modifier [~ # ~]

Cette combinaison ne donne pas d'erreur, seulement:

Note: errors from onicecandidateerror above are not 
neccessarily fatal. For example an IPv6 DNS 
lookup may fail but relay candidates can still be gathered via IPv4.

Testé sur https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

{
  'urls': 'stun:<MY-IP6>:80'
},
{
  'urls': 'turn:<MY-IP4>:80',
  'credential': '<PASSWORD>',
  'username': 'root'
}

J'ai simplement utilisé IP6 pour l'étourdissement et IP4 pour le tour. Le chat vidéo dans un réseau différent ne fonctionne toujours pas, nulle part d'autres erreurs à trouver.

MODIFIER:

Remarqué aujourd'hui que https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ ne fonctionne pas. Je n'ai eu aucune erreur sur Firefox. MAIS vous pouvez y entrer des non-sens et cela ne montrera également aucune erreur ...

MODIFIER:

J'ai également ajouté des certificats maintenant valides:

cert=/usr/local/etc/turn.pem                                                                                    
pkey=/usr/local/etc/turn.key.pem

Semble fonctionner. J'ai redémarré coturn et le statut me dit que tout fonctionne sans problème.

Le chat vidéo ne fonctionne toujours pas dans différents réseaux.

1
Roman

D'accord. Je regardais le tout sous un mauvais angle. La configuration du serveur TURN/STUN est correcte.

Le problème vient du code client/serveur. La signalisation ne fonctionne pas.

J'ai suivi this article, mais j'ai des problèmes pour configurer le service de signalisation. Je pense que cela doit être posé dans une nouvelle question.

1
Roman