[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openbsd-pf
Subject:    Re: nat on ip range and ftp-proxy
From:       Camiel Dobbelaar <cd () sentia ! nl>
Date:       2007-07-05 7:56:48
Message-ID: Pine.BSO.4.64.0707050945340.16530 () zigzag ! sentia ! nl
[Download RAW message or body]


On Thu, 5 Jul 2007, Попов Игорь Николаевич  wrote:
> I have router under OpenBSD, it main purpose is NAT.
> 
> some rules from /etc/pf.conf
> 
> #...
> table <nat_addr>  const { 80.0.0.21 80.0.0.22 80.0.0.23 80.0.0.24 } 
> table <lan_addr>  const { 192.168.0.0/25 192.168.10.0/24 }
> 
> # NAT
> nat pass on $ext_if inet tagged LAN_INET -> <nat_addr>  round-robin sticky-address
> 
> #...
> 
> # nat marker
> pass  in  on $int_if inet from <lan_addr>  to !(self) keep state flags S/SA \
> tag LAN_INET queue q_traff
> 
> #...
> 
> There are 4 ip addresses (aliases) on $ext_if - the first is used for controlling \
> router, others are used for NAT. And question is how to make ftp-proxy work in this \
> situation? Both source addresses for control and data connections must be the same \
> - many ftp servers deny data connection when control connection has another ip.

ftp-proxy will always make sure to use the same IP for the control and 
data connection.  You can force the address with -a, otherwise ftp-proxy 
lets the kernel pick the source address for the connection.

round-robin among your NAT addresses would be possible, but you have to 
run multiple instances of ftp-proxy.  Something like this probably works 
(untested, and the addresses _must_ be aliases for -a and -b to work):

ftp-proxy -b 80.0.0.21 -a 80.0.0.21
ftp-proxy -b 80.0.0.22 -a 80.0.0.22
ftp-proxy -b 80.0.0.23 -a 80.0.0.23
ftp-proxy -b 80.0.0.23 -a 80.0.0.24

Then use a:
rdr on $int_if from <lan_addr> to any port 21 -> <nat_addr> port 8021 \
    round-robin

(NOTE: it would be better to use 127.0.0.2, 127.0.0.3, etc. for the -b 
addresses and round-robin among those, so they are not easily reachable 
from the outside.  It would clutter the example though.)

Let us know if it works.  :-)

--
Cam



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic