Video call not set up properly over OpenVPN/tun
Submitted by W. Michael Petullo
I am trying to make a video call between two computers using empathy. One computer is connected to my home LAN, and the other computer is connected from a remote location via a OpenVPN/tun tunnel to the same LAN (OpenVPN client). The LAN's network ID is 192.168.1.0/24, and the OpenVPN/tun network uses 22.214.171.124/24. Let us assume 10.0.0.0/24 is the network the OpenVPN client physically connects to.
The computer physically present on my LAN can see the video from the OpenVPN client, but the OpenVPN client cannot see the video from the computer physically present on my LAN (VPN client).
I used Wireshark to watch a video call establish. One thing I noticed is that the VPN client sent the following in a JINGLE(transport_info) message:
CANDIDATE [name="rtcp" protocol="udp" port="45185" address="192.168.2.x"] [...] CANDIDATE [name="rtp" protocol="udp" port="58599" address="10.0.0.y"]
As you can see, the VPN client seems to advertise its non-VPN address in the second CANDIDATE messages. I would expect the VPN client to only advertise 192.168.2.x.
I have started to look at the source code which makes up empathy and telepathy, but I have not yet found the code which binds empathy to a network interface for the purpose of establishing a video stream. My theory is that empathy is binding to the first interface instead of to the interface which hosts the default route. Could someone point out where I should look for this? (I do not yet completely understand empathy's architecture, so I am not yet sure if I should be looking in empathy or a library.)