feat: support explicit external IP:port for RTC ICE candidates behind non-1:1 NAT
LiveKit currently supports rtc.node_ip / use_external_ip, but only rewrites the advertised IP. It still advertises the local rtc.udp_port.
Example: local LiveKit: 192.168.100.101:7882 NAT mapping: 203.0.113.10:20638 -> 192.168.100.101:7882 External clients receive 203.0.113.10:7882, so signaling succeeds but ICE fails. They need to receive 203.0.113.10:20638. Could LiveKit support a startup-time setting like:
rtc:
udp_port: 7882
external_udp_address: 203.0.113.10:20638LiveKit would continue listening on local port 7882, while advertising the configured external IP and port in server ICE candidates. This is similar to SRS eip=IP:port for NATMap deployments. Dynamic updates are not required initially; restarting LiveKit after the mapping changes is acceptable. Related: livekit/mediatransportutil#95 ai translate
Source: livekit/livekit