Frequently Asked Questions

What is this thing?

The Linux DirectPlay Masquerading Module is intended to be used with the Linux ip_masq functionality. It is a loadable module which allows multiple clients behind a masquerading server to use the DirectPlay protocol for gaming, either as game clients or hosts.


What is a masquerading server?

If you don't know, you probably don't have one or wouldn't be able to install this module yourself anyway. For more information about Linux masquerading, visit the Linux IP Masquerade Resource webpage.


What games are supported?

In theory, any game that uses DirectPlay. In practice, see the gamelist to find out what games it has been tested with so far. This version currently only supports the server port 47624, and the 2300-2400 port range. I've heard possibilities that some DirectPlay games may use additional ports, and that this module may not handle those. Depending on your masquerading setup, however, you may not run into any problems with this. I do not know how far back the current port arrangement goes in the DirectX version history. This module was targetted to the DirectX 7.0 release, but it may work with earlier versions as well.


What are the system requirements?

Well, that's a good question. I've tested this thing only on a Debian 2.2.14 kernel. Theoretically it should work with any kernel version that supports a compatible implementation of IP Masquerading functionality. I'm guessing, however, that it is limited to the 2.2.x series Linux kernels. I don't know enough about this yet one way or the other to say for sure.


How much is really implemented?

DirectPlay protocol support is pretty barebones at the moment. This module does not do any port conflict checking, so if multiple clients try to use the same port, it won't know what to do with them :) Given that each client uses 2 ports, selected at random out of 100 possibilities, the potential for collisions is not too extreme with just a few clients. However, future versions should handle port conflicts gracefully :) Additionally, forwarding incoming connections to a local host works fine, but clients on the WAN and any clients connected to the same game on the LAN won't be able to see each other properly yet. Working on that.


Can I use this thing to run a DirectPlay server?

You sure can! As of version 0.2.00 you can use the "host=www.xxx.yyy.zzz" command when insmod'ing the module to specify a local host to use as a server. Any incoming DirectPlay connection attempts will be forwarded to this host. Future versions will hopefully include dynamic host lookups by hostname, as well as the ability to change the host without having to remove the module and re-insmod'ing it. I've tested this functionality with three external (Internet) clients connecting to my local host and it worked fine. However, any clients on your LAN that are ALSO connected to the same game host will not properly communicate with clients connected from the Internet. See the Known Bugs section of the README for more information about this problem. Finally, be aware of the inherent limitation in the DirectPlay protocal that only ONE host behind your masquerade server is supported at a time. Other computers may act as clients to games on the Internet at the same time, but only one local computer can host a game at a time. This is inherent to the fact that the server port can NOT be specified by clients connecting to your game, and every incoming connection will always hit the same port.


How safe is it?

I wouldn't put this particular module on any machine you feel might be targetted by any body for any reason. I'm a complete newbie to Linux kernel/module coding, and there are probably vulnerabilities in this chunk of code. Not to mention it's probably an unstable little thing that may behave unexpectedly. It was intended primarily for home users who are running Linux masquerade servers to share a private Internet connection, and shouldn't pose too much of a problem to anyone with such a setup who knows two cents about what they're doing. However, I would recommend that, at least until I get a few more polished versions out the door, you don't leave this module loaded except for when you are actually using it.


What do I do if I don't need your module?

Lots of people don't need to use this module, especially as it is still pretty developmental. If you have only one machine behind your Linux masquerading server that is using DirectPlay games, you can just do standard port forwarding to send the DirectPlay traffic to that host. Use the following rules (assuming you have the multiport module installed, and your external IP is <external_ip> and your internal host is <local_ip>) to add the necessary forwards to IPTABLES: