howto make SNAT preserve translation ip for all connections from the same internal ip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



    Hi, all.
Say, I use iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.1-194.236.50.7 for NAT. Accordingly to man:
The source IP for each stream that we open would then be allocated randomly from these (194.236.50.1-194.236.50.7), and a single stream would always use the same IP address for all packets within that stream.

What if I want that internal ip from block 192.168.0.0/24 is always translated into the same external ip?
PF from OpenBSD does it:

     For nat and rdr rules, (as well as for the route-to, reply-to and dup-to
     rule options) for which there is a single redirection address which has a
     subnet mask smaller than 32 for IPv4 or 128 for IPv6 (more than one IP
     address), a variety of different methods for assigning this address can
     be used:

     bitmask
           The bitmask option applies the network portion of the redirection
           address to the address to be modified (source with nat, destination
           with rdr).

     random
           The random option selects an address at random within the defined
           block of addresses.

     source-hash
           The source-hash option uses a hash of the source address to deter-
           mine the redirection address, ensuring that the redirection address
           is always the same for a given source.  An optional key can be
           specified after this keyword either in hex or as a string; by de-
           fault pfctl(8) randomly generates a key for source-hash every time
           the ruleset is reloaded.

     round-robin
           The round-robin option loops through the redirection address(es).

           When more than one redirection address is specified, round-robin is
           the only permitted pool type.

     static-port
           With nat rules, the static-port option prevents pf(4) from modify-
           ing the source port on TCP and UDP packets.

     Additionally, the sticky-address option can be specified to help ensure
     that multiple connections from the same source are mapped to the same
     redirection address.  This option can be used with the random and round-
     robin pool options.  Note that by default these associations are de-
     stroyed as soon as there are no longer states which refer to them; in or-
     der to make the mappings last beyond the lifetime of the states, increase
     the global options with set timeout src.track.  See STATEFUL TRACKING
     OPTIONS for more ways to control the source tracking. 
   


[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux