[OpenAFS-devel] Multiple clients behind NAT

Ethan Tira-Thompson ejt@andrew.cmu.edu
Sat, 8 Jul 2006 01:19:32 -0400


> OpenAFS has certainly had its struggles with clients behind NATs.
> With the 1.4.2 OpenAFS file server I believe that all of these
> troubles are behind us.  The performance of clients behind NATs
> has been successively improved with each of the 1.4.x releases.
Is there a way to tell what version a server is running?
Or anyone just happen to know what version CMU is running on  
{andrew,cs}.cmu.edu? ;)

> One of the features of most NAT solutions is that the NAT will
> map external port numbers to internal address/port values.  If your
> NAT configuration is failing to do this, then you will have trouble
> with many applications.
Well, it wouldn't be NAT if it's not mapping addresses between the  
private and public interfaces ;)
I've done some reading and satisfied myself that it is indeed common  
for NAT to do port mapping as well as address mapping, so multiple  
clients using the same port is fine (the first gets to use the "real"  
port, and the others get remapped to a different source port on the  
public interface so the NAT tell them apart).

However, the trouble I didn't originally foresee is that the AFS  
client running on the NAT box is running on the public network, and  
gets direct access without consulting the NAT.  (or does it?)  So if  
a machine on the private network tries to use the same port, I'm not  
sure if the NAT server can know that another process on the machine  
is already using that port, particularly with UDP (with TCP, it could  
figure out that it can't bind to the port, but with UDP being  
stateless, it might not know there's another process also using the  
port...?)

So if anyone has some experience with this particular configuration  
I'd love to hear about it, or tips on how to configure iptables to  
use dynamic port mapping (where it always remaps the ports instead of  
trying to reuse the source port number), or alternatively remap  
traffic from 7001 on the specific private client to a different port.  
(i'll have to play with that more on Monday)

thanks,
   -ethan