I'm trying to set up a NAT firewall on FreeBSD in front of a set of PC
machines that will be playing games. Asheron's Call is one example of a
game I've had lots of trouble with. Searching various archives, I've
seen everything from "it can't be done" to "I use Sygate (or Windows
ICS) and it works just fine".
The usual advice for owners of Unix gateways is to redirect the
incoming UDP request on port 9000 (or some range that includes that) to
the machine playing Asheron's Call. But I want to have more than one
machine playing the game, and I want to use DHCP to dynamically assign
internal IP addresses.
I think I've figured out why it works on those other Windows-based NAT
servers and not on FreeBSD.
DirectX games require the server to be able to open TCP and UDP
connections to the client. The FreeBDS server has no way to know to
which machine such an incoming request is to be forwarded, and
therefore drops the request on the ground. The PC-based proxies do know
which machine such incoming connections should be bound to. How? See
http://msdn.microsoft.com/library/psdk/directx/dpover_3s1l.htm
Basically, the client first requests a TCP connection on some port.
Later, the server requests an additional UDP connection on the same
port to the client. The Windows-based proxys handle an incoming UDP
connection request by finding a host that holds a TCP connection on the
same port to the same host.
I don't see a way to configure FreeBSD's natd to do that, but adding
this feature would allow DirectX games (read: Microsoft games such as
Asheron's Call) to run through a FreeBSD gateway.
Advice?
Sent via Deja.com http://www.deja.com/
Before you buy.