mumble-voip / mumble

Mumble is an open-source, low-latency, high quality voice chat software.
https://www.mumble.info
Other
6.44k stars 1.12k forks source link

Allow client to bind to specific IP address+port (VPN) #5938

Open trymeouteh opened 2 years ago

trymeouteh commented 2 years ago

Context

Adding a network interface setting into the Mumble client and Mumble server.

Description

I recently discovered that qBittorrent essentially has a VPN Kill Switch feature built into the client which will kill its connection if it detects your VPN has disconnected. VPN kill switches from VPN clients for the desktop are not fully reliable as they can often fail and you can still connect to the internet with a unencrypted connection with your IP exposed.

I would like to purpose adding this feature in the settings for both the Mumble client and Mumble server. This way if your VPN disconnects, The client and/or server will also lose internet access too. There has been many times my VPN disconnects without me knowing while I was browsing the web.

Mumble component

Both

OS-specific?

No

Additional information

Sometimes I do host a mumble server over a VPN since my VPN supports port forwarding. Having a setting in the INI file for network interface would be useful also.

davidebeatrici commented 2 years ago

Technically it's not a kill switch: the setting simply allows to bind the application to a specific interface (IP address) on the system.

https://github.com/mumble-voip/mumble/blob/1b26a55ef18bcf5894efe12f9519fb2fde2650fe/auxiliary_files/mumble-server.ini#L111-L113

We can easily implement it for the client too.

Krzmbrzl commented 2 years ago

I would argue that this should be the job of your VPN client and not the job of Mumble.

If your VPN client is not reliable in this, use a different one.

I'm arguing against implementing this in Mumble as the code is already complex enough and by keep adding features to it that technically don't belong into it's responsibilities, this will only worsen the situation (mind you: even if implementing itself is easy, it's the long term maintenance that I am concerned with)

davidebeatrici commented 2 years ago

No maintenance burden involved: we simply allow the user to bind the socket(s) we use to a specific IP address and/or port.

An actual kill switch would indeed be the job of the VPN client or, more specifically, the operating system's routing table.

Krzmbrzl commented 2 years ago

Well, if this is as simple as you make it sound, I'd be okay with that.