Please keep in mind I know little about networking, but I’ve done tests that might give a clue of what’s happening.
A friend of mine has a computer that runs Windows 10, and another friend of mine is an Arch Linux user, as am I. We set up a VPN with ZeroTier to play some old games that won’t allow specifying an IP address and detect ongoing games over LAN instead.
For whatever reason, the games on Linux won’t find any games no matter where they are hosted, but it is possible to do so from Windows, which forces us to host and my Windows friend to join. Maybe it’s like the broadcasting packets can’t reach our games on Linux?
Here are the tests I’ve done:
- Connecting to the network
$ sudo zerotier-cli join **[REDACTED]**
[sudo] password for manuel:
200 join OK
$ nmcli connection modify ztc3qrelk2 ipv6.route-metric 1
$ nmcli connection up ztc3qrelk2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
- Tried a game that allows to connect both specifying an IP and auto-listing games over the LAN network, Sven Co-op.
a) If a Linux machine is the host, the game on Windows can detect it.
b) If a Linux machine is the host, the game on the other Linux machine can’t detect it.
c) If a Windows machine is the host, the game on Linux can’t detect it.
d) Connecting specifying the IP address works from anywhere on the VPN.
e) If both Linux computers happen to be on the same physical network, they can detect each others’ games automatically while also being part of the VPN.
Some extra details:
$ nmcli device status
DEVICE TYPE STATE CONNECTION
wlp3s0 wifi connected TP ZELDA
ztc3qrelk2 tun connected ztc3qrelk2
p2p-dev-wlp3s0 wifi-p2p disconnected --
enp2s0 ethernet unavailable --
lo loopback unmanaged --
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 60:e3:27:96:5c:0e brd ff:ff:ff:ff:ff:ff
inet 192.168.0.7/24 brd 192.168.0.255 scope global dynamic noprefixroute wlp3s0
valid_lft 3562sec preferred_lft 3562sec
inet6 fe80::ea8d:bf6e:1bd4:691/64 scope link noprefixroute
valid_lft forever preferred_lft forever
$ ip addr show ztc3qrelk2
4: ztc3qrelk2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 72:67:a5:69:ff:7b brd ff:ff:ff:ff:ff:ff
inet 10.241.19.92/16 brd 10.241.255.255 scope global noprefixroute ztc3qrelk2
valid_lft forever preferred_lft forever
inet6 fe80::d0f8:b78:dc61:881/64 scope link noprefixroute
valid_lft forever preferred_lft forever
$ nmcli d show
GENERAL.DEVICE: wlp3s0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 60:E3:27:96:5C:0E
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: TP ZELDA
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]: 192.168.0.7/24
IP4.GATEWAY: 192.168.0.1
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.0.1, mt = 600
IP4.ROUTE[2]: dst = 192.168.0.0/24, nh = 0.0.0.0, mt = 600
IP4.DNS[1]: 8.8.4.4
IP4.DNS[2]: 8.8.8.8
IP6.ADDRESS[1]: fe80::ea8d:bf6e:1bd4:691/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 600
GENERAL.DEVICE: ztc3qrelk2
GENERAL.TYPE: tun
GENERAL.HWADDR: 72:67:A5:69:FF:7B
GENERAL.MTU: 2800
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ztc3qrelk2
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3
IP4.ADDRESS[1]: 10.241.19.92/16
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 10.241.0.0/16, nh = 0.0.0.0, mt = 1
IP6.ADDRESS[1]: fe80::d0f8:b78:dc61:881/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1
[...]