May 7th, 2015, 12:27
(This post was last modified: May 7th, 2015, 12:39 by EvilLurksInternet.)
Posts: 9
Threads: 0
Joined: Aug 2014
>Are you saying it isn't possible at all to configure these routers to allow port forwarding?
Yes. From what the dude was describing when he was trying to enter portforwarding menu (after he watched several videos on youtube about how to portforward), it seemed that the option was disabled for him, and somewhere there he read things about those horrifying tunnel brokers and tariffs to access more functionality on the router.
It seems they need to change provider or please the tunnel brokers to be able to portforward.
Also they mentioned it was some kind of cellular network derivative - how their internet worked, not sure if that can be useful in assessing their situation.
May 7th, 2015, 12:35
(This post was last modified: May 7th, 2015, 12:38 by EvilLurksInternet.)
Posts: 9
Threads: 0
Joined: Aug 2014
Also, they werent like very close friends with each other. Seemed they only knew each other on internet. And they definatelly werent in 1 local network together, or had same provider, judging by their ip's and they said so. They tried to join on some local ip's they could find anyway (without success). 2 of them had that cellularphone derivative kind of network. And third one said he had like VPN, maybe would be possible to portforward for 1 of them, if they cared to try. But only 1 dude was bright enough to understand video on youtube about portforwarding or atleast cared to do so. I mean, they wanted to spend time helping test it. But they didnt want to learn even how to ping in cmd except 1 of them.
Posts: 13,563
Threads: 49
Joined: Oct 2009
OK, that doesn't sound like something I'm inclined to spend time on, I'm afraid.
Of course if someone else wants to tackle the issue the second post of this thread has the necessary information.
I'm guessing that Gamespy's NatNeg server had a scheme for guessing what the port the next connection opened from a computer would get assigned in the router, and then told both clients to try to connect to each other on these ports. The guess would be based on the three different port numbers seen in the three INIT messages sent to natneg1, natneg2 and natneg3, possibly.*
My current implementation doesn't really attempt any such guess, it just tells the clients to connect to each other on the port numbers seen in the INIT messages sent to natneg1. This works when the router allows anybody to connect to that port and doesn't limit the port forwarding to only accepting response packages from the computer to whom the outgoing packages were originally sent. And it's enough that one of the two routers involved allows this, as that client can then act as the receiver while the more restrictive router acts as the sender.
*If my guess is correct this even requires three separate NatNeg servers working together, communicating between themselves, which is what I think Gamespy had. A single NatNeg server can't do the port number guessing, since when the natneg1, natneg2 and natneg3 domains resolve to the same IP address, they will use the same outgoing port mapping (I think). Although I guess a single NatNeg server could do some blind guessing, such as guessing that the port number increases by 1 for each new connection.
I have to run.
May 8th, 2015, 03:26
(This post was last modified: May 8th, 2015, 03:39 by EvilLurksInternet.)
Posts: 9
Threads: 0
Joined: Aug 2014
>*If my guess is correct this even requires three separate NatNeg servers working together, communicating between themselves, which is what I think Gamespy had.
Well maybe they just communicated all relevant raw data(maybe just observed address/port?) to the clients. And then clients decided the algorithms of guessing and type of router. That would free server processing resource, and remove the need of communications between servers. Rational way to do it from gs developers?
Then only some minor adjustment to NN needed?
Posts: 13,563
Threads: 49
Joined: Oct 2009
(May 8th, 2015, 03:26)EvilLurksInternet Wrote: >*If my guess is correct this even requires three separate NatNeg servers working together, communicating between themselves, which is what I think Gamespy had.
Well maybe they just communicated all relevant raw data(maybe just observed address/port?) to the clients. And then clients decided the algorithms of guessing and type of router. That would free server processing resource, and remove the need of communications between servers. Rational way to do it from gs developers?
Then only some minor adjustment to NN needed?
That's possible, but you'd still need three separate servers. But it's all conjecture. Hard to guess what happens at the server and what happens at the client. Extensive trial and error, better documentation, or a decompiled codebase is required to find out.
I have to run.
Posts: 9
Threads: 0
Joined: Aug 2014
Well i am trying to understand it with official gamespy open sdk - its code of an exemplary gameclient. And it has a documentation file.
U had a look at it?
http://zenhax.com/download/file.php?id=2...8fd4ebf32f
Posts: 13,563
Threads: 49
Joined: Oct 2009
(May 8th, 2015, 16:17)EvilLurksInternet Wrote: Well i am trying to understand it with official gamespy open sdk - its code of an exemplary gameclient. And it has a documentation file.
U had a look at it?
http://zenhax.com/download/file.php?id=2...8fd4ebf32f
Nice find! I was looking for that when I made the NatNeg server replacement, but couldn't find it. I might take a look at that, time permitting.
I have to run.
Posts: 13,563
Threads: 49
Joined: Oct 2009
I looked briefly at the SDK code, specifically at NATify.c. It does indeed look like all the logic for figuring out what type of NAT and port mapping scheme is being used happens on the client. So it may be true that the server doesn't need many modifications in order to support the more restrictive routers.
I have to run.
Posts: 9
Threads: 0
Joined: Aug 2014
About those natify functions - it seems that gameclients should initiate them with a command, most likely NN_ADDRESS_CHECK (0A). And I havent seen NN server receive any unknown commands. So the game is waiting for something before it sends that command. And we can only guess what its waiting for.
On that MKWii there's some info about that command so they must have seen it.
But another thing is in those OpenSDK there is demo application in natneg folder, and it does send 0A command. And it's sent before INIT's.
Posts: 3
Threads: 0
Joined: Jun 2016
ok, so me and some friends are trying to play civilization IV colinization... so we need to understand how to set this server up to run this game. Is it just downloading that original one and telling our host the server ip?.. or is there settings on server we need to set?.. and is there more needed in the host file then just changeing the ips from your list for civ 4?
|