Natkeep

Natkeep is two programs, one which listens to the network for a pattern of packets. Once a pattern has been identified, the second program begins to inject similar packets into the network. The purpose of this is to keep a NAT's UDP port map alive (hence the name) so that programs which use a call back mechanism will be able to find the client over the network. You also set the TTL with natkeep, which is part of the porint. If TTL is set to 1, the first router that encounters the packets sent by netkeep will discard them, and return an ICMP port unreachable message. The notion is that by keeping the TTL low, you can touch your NAT with packets regularly enough to keep the port mappings active, but other devices further down the network don't have to hear the traffic.

One one the programs this can be used with is AFS. If you're behind a NAT and you've been having problems with AFS maintaining connections or with file corruptions, you may be able to use natkeep to eliminate the problems (I stress the "may" since it depends on what the problem really is).

Fair warning, this is manipulating network in a pretty heinous fashion, so if you work on someone else's network, be cautious with your testing.

For more information, see the Readme file.

Before Installing

Building natkeep

I was able to build a working copy of natkeep for OS X pretty easily, using this sequence from within the source directory.

./configure --prefix="/usr/local" --without-pth-test
make
sudo make install

You can get natkeep from:

The binaries were compiled without the pth-test option, but ran ok on my G4 system.


Last modified: 06 March 2010