Is it feasible to run a TURN server behind NAT?
from hackysphere@lemmy.ca to selfhosted@lemmy.world on 15 Feb 06:37
https://lemmy.ca/post/60460741

I am running a defederated local Matrix server, and I need to set up calls. From what I can tell, the “legacy” calls require a STUN and TURN server, and the new MatrixRTC standard seems to require them as well for Livekit to work. However, I do not want to expose anything out to the public internet, as I want everything to be behind NAT for local access only (all of the clients for the server will also be behind the NATted network). I also have Tailscale running on my servers, and it would be useful if I would be able to connect to the TURN server even when not in the network. Is there a way to get STUN/TURN to work in this situation? It seems that all the servers expect to have public network access.

#selfhosted

threaded - newest

LodeMike@lemmy.today on 15 Feb 06:39 next collapse

The turn server must be able to access other nodes on the Internet and vice versa unless operating exclusively within your local matrix server.

hackysphere@lemmy.ca on 15 Feb 07:01 collapse

Oops, autocorrect seems to have messed up some of my words. All of the clients that connect to the servers are behind the same NATted network, and some are behind an additional level of NAT.

undrwater@lemmy.world on 15 Feb 07:14 next collapse

This looks like a really good explanation of how all the pieces work: What Are STUN, TURN, and ICE? | LiveSwitch Server Documentation share.google/PV7BKE7Q56vOE9lHl

Based on what you wrote, it looks like you’ll need ICE hosts, but no STUN / TURN.

thelittleblackbird@lemmy.world on 15 Feb 08:09 next collapse

Ipv6, get an ipv6. There is not nat in ipv6

Aganim@lemmy.world on 15 Feb 08:29 next collapse

Have I got news for you. ☹️

Edit: I’ll just add an ‘/s’ for good measure, as apparently I was too subtle. Be sensible, don’t do NAT66.

thelittleblackbird@lemmy.world on 15 Feb 08:41 next collapse

What a lot of nonsense. Of course the technology exists and of course it can be done. But in reality is not done because it simply doesn’t bring any benefit.

And in addition a address translation is not nat ™ because the server can be hit from the outside.

Today in ipv4 we have likely 2 Nats, 1 after your router and the other by the carrier (cgnat) and ipv6 those are non existent

Aganim@lemmy.world on 15 Feb 09:48 collapse

It was meant tongue-in-cheek, you seem to be taking it much more seriously than I intended it to be. 🙂

But in reality is not done because it simply doesn’t bring any benefit.

Fully agree that there is absolutely no benefit to NAT66, it only causes enormous headaches. I sincerely hope nobody uses it these days, this poor bastard however did manage to find a VPS provider that used NAT66 back in 2018: blog.apnic.net/2018/02/02/nat66-good-bad-ugly/ 🤢

thelittleblackbird@lemmy.world on 15 Feb 14:25 collapse

Fuck, there is a law in internet (which name I cannot recall) about the impossibility of distinguish an ironic message.

I felt in that trap completely!!

Aganim@lemmy.world on 15 Feb 14:33 collapse

Haha, don’t worry, no harm done. Maybe I was a bit too subtle in hindsight.

That’s Poe’s Law by the way.

possiblylinux127@lemmy.zip on 15 Feb 19:22 collapse

Don’t NAT ipv6. It is bad in so many ways.

hackysphere@lemmy.ca on 15 Feb 17:04 collapse

Unfortunately my ISP doesn’t support IPv6 yet, both for the public internet and for my local network.

thelittleblackbird@lemmy.world on 15 Feb 18:39 next collapse

Seems like a very reasonable reason to switch to another isp well established in the 21st century

hackysphere@lemmy.ca on 15 Feb 19:20 collapse

I live in a rural area, so my only options are dealing with a mobile hotspot for everything or getting satellite internet for more than double the price.

It’s also not worth it for me to switch internet providers just to have calls on my Matrix server work

possiblylinux127@lemmy.zip on 15 Feb 19:21 collapse

Have you asked? It might be worth sending a email at least.

hackysphere@lemmy.ca on 15 Feb 19:35 collapse

They only seem to support it for business customers for now, not for consumer usage.

stratself@lemdro.id on 15 Feb 16:02 next collapse

If you want a non-federating LAN-only Matrix server, then STUN/TURN can be behind the NAT. Since you have Tailscale, STUN/TURN can also expose itself on the Tailscale VPN too. Just configure proper DNS records per-interface and you should be fine.

Since calls are p2p, the purpose of STUN is to determine a client’s (usually public) IP address, and TURN is to relay the connection if they can’t connect directly (i.e. behind NAT). If your clients are on the same LAN/VPN with unrestrictive firewalls then you might not even need any STUN/TURN altogether.

Decronym@lemmy.decronym.xyz on 15 Feb 16:10 next collapse

Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:

Fewer Letters More Letters
DNS Domain Name Service/System
IP Internet Protocol
NAT Network Address Translation
VPN Virtual Private Network
VPS Virtual Private Server (opposed to shared hosting)

5 acronyms in this thread; the most compressed thread commented on today has 7 acronyms.

[Thread #96 for this comm, first seen 15th Feb 2026, 16:10] [FAQ] [Full list] [Contact] [Source code]

Lyra_Lycan@lemmy.blahaj.zone on 15 Feb 16:57 next collapse

I’m not qualified enough to answer that, but…

I tried setting up calls and while STUN/TURN works in WAN, but not LAN, Element are supposed to be making a replacement that makes voice and video calls entirely E2EE, aka Livekit, which I’ve completely failed to get working. So far I’ve given up on improving my instance’s features and stick to Element Classic. I hope you get it running well!

hackysphere@lemmy.ca on 15 Feb 17:04 collapse

I’m in the same situation, I can do “legacy” calls almost without issues, but Livekit has constant issues connecting to TURN.

possiblylinux127@lemmy.zip on 15 Feb 19:21 collapse

What do you need STUN for? If anything you might want TURN but that is probably not needed everything is on the same network.

hackysphere@lemmy.ca on 15 Feb 19:36 collapse

It’s apparently needed for “legacy” and the new MatrixRTC calls on Matrix