Ded. server multihome not working (clients cant connect)
I have a windows server that has multiple IPs from different networks configured. The windows firewall is enabled. The Ports 27015-27020, 7777-7779 UDP+TCP are opened for all IPs.
Server has following IPs configured:
All IPs - except 126.96.36.199 in this example - are configured with “skipassource=true”.
I startup the chivalry server with:
UDK.exe AOCTD-Moor_p?steamsockets?dedicated=true?MaxPlayers=4 -seekfreeloadingserver -multihome=188.8.131.52 -port=7777 -QueryPort=27015
Also tried with -QueryPort=7778
Everything looks fine on the first spot. The server is listed in the serverlist and I can query it.
BUT: Many users cannot connect to the server. The client stays at “Please wait while the game loads…”. I for myself was also affected so I started the debugging. Disabling the server firewall “fixed” it. So I digged deeper and started up wireshark.
I saw that with the disabled firewall all of the game traffic went through the IP 184.108.40.206. I have removed this IP and then it was 220.127.116.11. It looks like that the gameserver uses the “first” IP when ordered by number (like with “netsh int ipv4 show ipaddresses”), instead of the IP given with -multihome.
Using the UDKLogging.exe it displayed the message “NetComeGo: Open TheWorld… x.x.x.x. (my IP)”. So the server receives the connect request, but then uses a completely different IP as outgoing IP.
It might be a general bug in the UDK and it would great if someone from torn banner studios could forward this as a bug report or try fixing it (if that’s possible).
I know this might be a bit special. But nobody has an idea? :/
I think that you would get better help in the Server Operator’s Hub. I’m moving this thread there and we’ll see what happens.
msl - if you change the priority of the bindings does it change the IP that it responds on? Not suggesting this as a fix, more to troubleshoot the issue.
18.104.22.168/5/6/7 etc - they are the internal IP addresses right?
The IPs I use are official IP addresses.
As I’ve mentioned in my first post it looks like the server uses the “first” IP (if ordered by number). You can check that with the cmd “netsh int ipv4 show ipaddresses”. Adding a new IP, which is then the first one, it uses this new IP for the game traffic.
What do you mean by ‘official’ IP addresses?
Is it an External or Internal IP address?
That are all “external IPs” that can be reached via the whole Internet.
And they are all marked with skipassource=true so that windows does not use them for outgoing traffic by itself. It must be a bug in the UDK or Chivalry code.
why would you use skipassource=true if you want the server to respond on that IP?
I think you would need to explain the setup of your network a bit better, usually I’d expect all the interfaces to be on internal addresses and then use NAT on the router/firewall.
The skipassource option just tells windows not to automatically chose this IP address as a IP to send traffic - except you (the program) explicit wants that i.e. binds a socket to that IP.
I have told that to make clear that the traffic which is going through the wrong IP is chosen by the program and not by windows.
All IPs I talk about are normal, external IPs. The server is a real server located in a datacenter with direct Internet connection. No NAT.