Greetings,
A friend (steam) and I (GOG) rely on direct connect to play together. We're geographically in the southwest united states, but in different states.
I have observed that at times my game starts without the direct connect checkbox checked, and trying to check it results in "Changing direct connect settings failed". Other times I close and re-open the game, load into the save, and it's fine.
My friend also runs into an issue where he will be told "Connecting to NATPunch server failed. Connection via online wasn't successful either", regardless of the connection state of my client.
I started troubleshooting on my machine using wireshark each session and found that the game connects to these servers:
natpunch3.larian.com
natpunch4.larian.com
natpunch5.larian.com
natpunch6.larian.com
Whenever our clients would pick natpunch6, we'd never have issues. On natpunch 3-5, usually it would take a few re-loads.
Using nslookup I found that there is split DNS for natpunch3 - natpunch5:
Here are the addresses each of those servers resolve to, and their working status when I force the client to resolve to it in the hosts file:
DOMAIN IP FAM STATUS DETAIL
-----------------------------------------------------------------------
natpunch3.larian.com 18.135.120.182 IPv4 BAD This is an amazon host?
natpunch3.larian.com 212.129.13.222 IPv4 GOOD host is at rev.poneytelecom.eu
natpunch4.larian.com 35.178.141.26 IPv4 BAD This is a different amazon host?
natpunch4.larian.com 212.129.16.146 IPv4 GOOD host is at rev.poneytelecom.eu
natpunch5.larian.com 212.129.19.189 IPv4 GOOD host is at rev.poneytelecom.eu
natpunch5.larian.com 146.59.90.230 IPv4 BAD This is a host at ovh.net?
natpunch6.larian.com 212.129.51.208 IPv4 GOOD host is at rev.poneytelecom.eu (no split DNS here)
I'm not super aware of how DNS selects what address to try, maybe number of hops or latency, but when it picks anything that's not a server at rev.poneytelecom.eu the connection fails.
In wireshark when we filter for raknet traffic, we see "Connection Banned" from the other hosts, which if I understand correctly is the raknet protocol response to a refused connection.
Forcing the resolution in the hosts file has given us a 100% success rate so far, but I wanted to report this because this feels like a load balancing measure and I don't necessarily want to bypass that.
Thanks!