[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Converting ipf & ipnat.rules to pf.conf & nat.conf
> The rule set seems to let most things work correctly. But not the one game
> I am playing :) Asheron's Call. The ports it uses are:
>
> Initial UDP Outbound 9000
> Subsequent UDP Outbound 9004, 9008, 9012
> Subsequent UDP Inbound 9000, 9001, 9004, 9005, 9008, 9009, 9012, 9013
>
I have this problem too, and it also appears in the mail archives as
an unsolved problem.
Assume for the sake of argument that you have just one Windows
box connected to an OpenBSD box, which in turn is connected to
the Internet, applying the usual PF and NAT rules.
The Windows box sends from it's port 9000 to Microsoft's server
port 9000. Nat changes the headers on the packet so that
Microsoft thinks it's coming from OpenBSD port 45378 (for
example).
What Microsoft then does is send a packet from port 9004 to the
NAT's port 45378, i.e., what Microsoft thinks is the Windows' port
9000.
What is supposed to happen is the Windows box gets a reply on
port 9000, finishes initializing the game, and lets you play.
What's really happening is that NAT considers the 9004 to 9000
nee 45378 packet to be a new state and doesn't know what to do
with it, so it drops it - and the game never finishes initalizing.
You can observe what's going on using tcpdump and pfctl -ss.
The only solution I've seen so far (and this is Microsoft's official
solution) is to use portmapping, i.e., assign permanent one to one
relationships between certain ports on the OpenBSD box and a
specific combination of LAN address and port. In other words, any
packet sent to port 45378 should be forwarded to Windows-
machine port 9000 - regardless of what kind of packet it is. This
was possible under OpenBSD 2.9 and prior versions but not under
3.0 and newer versions.
As far as I can determine, based on the man pages, the new NAT
program introduced with 3.0 doesn't allow portmapping. My
assumption is that the designers intended for people do something
like the current RDR and ftp-proxy setup, and there just aint no
AsheronsCall-proxy yet.
However, I would LOVE to be wrong. If someone else has a
solution, please let us both know. Does 3.1 have an upgraded NAT
that would solve this problem?
David
dwar@earthlink.net
P.S. As much as I love the game, I don't use OpenBSD often
enough to justify the time spent coding, testing, and security-
auditing an AsheronsCall proxy. I simply switch the DSL cable
when I want to play. If there is enough demand for it, I'm willing to
take a try at it, but we're talking like 20+ people must want it first.