The NAT selection patch for the Linux kernel allows you to select between Endpoint Independent, Endpoint Dependent, Endpoint & Port Dependent, and Port Dependent NAT. Or in RFC 3489 (STUN) terminology: full cone NAT, restricted cone NAT, port restricted cone NAT, or symmetric NAT. (Full cone NAT is not implemented, but it could eventually be achieved using port forwarding either to a specific port or to a full host). For symmetric NAT, it adds also a random new port allocation.