ionorg / ion-sfu

Pure Go WebRTC SFU
MIT License
962 stars 238 forks source link

[Question] Does ion-sfu support tcp turn? #395

Closed buriedgod closed 3 years ago

buriedgod commented 3 years ago

Note: I couldn't find a template for queries, please feel free to close it if this is not the right place and please direct me to the correct place.

Description: in the configuration file config.toml, i could find

[[webrtc.iceserver]]
urls = ["turn:turn.awsome.org:3478"]

I'm confused whether ion-sfu support tcp turn, and if yes on how to do that.

OrlandoCo commented 3 years ago

Hellos @buriedgod , the configuration above is for stun/turn servers for being used by the SFU when you deploy it behind a nat or firewall.

But also ion-sfu comes with an embedded turn server which support UDP/TCP/TLD/DTLS to enable it just look at:

[turn]
# Enables embeded turn server
enabled = false
# Sets the realm for turn server
realm = "ion"
# The address the TURN server will listen on.
address = "0.0.0.0:3478"
# Certs path to config tls/dtls
# cert="path/to/cert.pem"
# key="path/to/key.pem"
[turn.auth]
# Use an auth secret to generate long-term credentials defined in RFC5389-10.2
# NOTE: This takes precedence over `credentials` if defined.
# secret = "secret"
# Sets the credentials pairs
credentials = "pion=ion,pion2=ion2"
buriedgod commented 3 years ago

@OrlandoCo Thanks for the response.

I needed to use the SFU behind a NAT. In that case how's it possible to make ion-sfu connect to a TCP TURN?

adwpc commented 3 years ago

Note: I couldn't find a template for queries, please feel free to close it if this is not the right place and please direct me to the correct place.

Description: in the configuration file config.toml, i could find

[[webrtc.iceserver]]
urls = ["turn:turn.awsome.org:3478"]

I'm confused whether ion-sfu support tcp turn, and if yes on how to do that.

You can uncomment this and set to your turn server:

# [[webrtc.iceserver]]
# urls = ["stun:stun.stunprotocol.org:3478"]
# [[webrtc.iceserver]]
# urls = ["turn:turn.awsome.org:3478"]
# username = "awsome"
# credential = "awsome"
buriedgod commented 3 years ago

Thanks for the response @adwpc !, I hope my question still stands unanswered.

In browser we can set the turn transport to tcp by setting the turnserver url as following turnurl?transport=tcp , i know that pion/turn supports tcp turn, but i have seen no documentation whether or how ion sfu support turn with tcp transport. Please let me know if it does / how to do that?

OrlandoCo commented 3 years ago

@buriedgod yes ion-sfu turn supports TCP once enabled, you can do turnurl?transport=tcp as you say and should work, but the turn address should be public accesible

buriedgod commented 3 years ago

@OrlandoCo thank you for the response. Will check!