Closed dnlwgnd closed 5 months ago
We have ended up taking this as a feature request and implemented it right away. You can now use --sni=my-server-name
on the turncat
command line to set the SNI. This should be useful for testing.
Closing this as fixed now in cleaning up open issues for the imminent release of v1, but I'd like to ask you to answer a quick question before abandoning this issue: are you planning to set the SNI for testing only, or do you actually intend to use turncat
in production?
wow thanks will check that out!. I currently want to test with turncat as the most simple scenario and to see wether routing packets through a standard reverse proxy is feasible.
production workload would be webrtc, and I know this is far from ideal. onlyunfortunately it seems very difficult to open up even a single udp port in our firewalls. with turn/tls I would be able to reuse existing pathways.
I also tested with your fork of the mediasoup-demo. this does not currently support the TLS transport at all as it seems. would you be able to add the option for tls transport (while SNI would be required as well) to the demo?
I also tested with your fork of the mediasoup-demo. this does not currently support the TLS transport at all as it seems. would you be able to add the option for tls transport (while SNI would be required as well) to the demo?
Currently no resources, but we're accepting PRs!
Currently no resources, but we're accepting PRs!
fair enough!
would it be as simple as constructing a turns://
url instead of a turn://
? I might be able to add that.
Description
I am trying to use Stunner (and test it with provided Turncat tool) via a standard ingress controller using a TLS passthrough config. In particular, I setup a Stunner gateway with a TURN/TLS listener. Then I setup my ingress (I am using contour) on a subdomain to do TLS passthrough. The ingress controller will then examine the SNI header on the TLS Client Hello Package to choose the target service and then forwards all packets there. No termination or decryption is occuring at the ingress controller. Thus, I am thinking I should be able to use this to establish a turn connection.
However, testing with Turncat (iperf-example from the docs), it does not work, but rather give this EOF error:
When I do the same, but instead target directly the public IP of the stunner gateway loadbalancer, it does work as expected.
I then tried to trace the problem by captureing the relevant packetes and it seems to me that turncat fails to include a SNI header in its TLS packets. Therefor the ingresscontroller has no info as to where the packets should be forwarded and just drops the connection resulting in the observed error. Could this be possible? I appreciate any hints.
Steps to Reproduce
Expected behavior: [What you expected to happen]
Actual behavior: [What actually happened]
Versions
[Which version of STUNner you are using] 0.18.0
Info
[Please copy-paste the output of the below commands and make sure to remove all sensitive information, like usernames, passwords, IP addresses, etc.]
Gateway API status
[Output of
kubectl get gateways,gatewayconfigs,gatewayclasses,udproutes.stunner.l7mp.io --all-namespaces -o yaml
]Operator logs
[Output of
kubectl -n stunner-system logs $(kubectl get pods -l control-plane=stunner-gateway-operator-controller-manager --all-namespaces -o jsonpath='{.items[0].metadata.name}')
]