Linux Netfilter discussions
 help / color / mirror / Atom feed
* ftp nat, snat PORT translation ok, dnat PASV translation fail
@ 2003-08-08  8:19 "bognár, attila"
  0 siblings, 0 replies; only message in thread
From: "bognár, attila" @ 2003-08-08  8:19 UTC (permalink / raw)
  To: netfilter

Dear List,

I know this question came up many times, I just cannot solve it. I spent 
a lot of time searching list archives and the web, just found nothing 
that could help.

I have an ftp server with a private ip address, ftp listening on port 
21. I want to DNAT a real address port 21 to it.


+--------------+
| real ip host |
+--------------+ real address: 555.666.777.888
         |
         |
      internet
         |
         |
+--------------+ real addresses: 111.222.333.444, 111.222.333.445
|    firewall  |
+--------------+ internal address: 10.7.7.1
         |
         |
      local network (10.7.7.0/24)
         |
         |
+--------------+ address: 10.7.7.12
|  ftp server  |
+--------------+


I have the following rules (the simplest possible):

iptables -F
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t mangle
iptables -F -t nat
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -t nat -A PREROUTING -p tcp -d 111.222.333.445 
--destination-port 80 -j DNAT --to 10.7.7.12:80
iptables -t nat -A PREROUTING -p tcp -d 111.222.333.445 
--destination-port 21 -j DNAT --to 10.7.7.12:21
iptables -t nat -A POSTROUTING -j SNAT -d ! 10.7.7.0/24 -s 10.7.7.12 
--to-source 111.222.333.445


that is all (apart some other redirections but with other 
addresses/ports, no rules on input/output/forwarding, I will make 
restrictions when it works)

http and other "simple" protocols are working. ftp from the ftp server 
works fine to the internet, both active and passive mode (address in 
PORT command is translated from local to external ip).

active ftp from outside works fine (simple dnat and snat). but passive 
ftp from outside to the ftp server does not work.

user@exthost:~ $ telnet 111.222.333.445
telnet from external machine:
Trying 1111.222.333.445...
Connected to 111.222.333.445.
Escape character is '^]'.
220 ProFTPD 1.2.8 Server (FTP server) [**]
USER username
331 Password required for apartman.
PASS password
230 User apartman logged in.
PASV
227 Entering Passive Mode (10,7,7,12,128,76).
quit
221 Goodbye.
Connection closed by foreign host.
user@exthost:~ $

first problem is that the address of the port the server is waiting the 
connection on is not changed in 227 to a real address and port on the 
firewall.  when I ftp from the ftp server to an external host, the 
address and port in the PORT command is updated as it should be (that is 
there some tracking).

my kernel is 2.4.20, without any special ipfilter patch.

firewall:~# lsmod
Module                  Size  Used by    Not tainted
ip_nat_ftp              3152   0  (unused)
ip_conntrack_ftp        4176   1
firewall:~#

if I add logging targets to the beginning of the chains:

iptables -A INPUT -p tcp -s 555.666.777.888  -m helper --helper ftp -j 
LOG --log-level 7 --log-prefix "fw-input exhost ct: "
iptables -A OUTPUT -p tcp -d 555.666.777.888 -m helper --helper ftp -j 
LOG --log-level 7 --log-prefix "fw-output exhost ct: "

iptables -t nat -A PREROUTING -p tcp -s 555.666.777.888  -m helper 
--helper ftp -j LOG --log-level 7 --log-prefix "fw-nat-pre exhost ct: "
iptables -t nat -A POSTROUTING -p tcp -d 555.666.777.888  -m helper 
--helper ftp -j LOG --log-level 7 --log-prefix "fw-nat-post exhost ct: "

there is a log for both active and passive ftp initiated from the ftp 
server (that is it tracks both passive and active ftp if I am not wrong).

if I access the ftp server from the outside, there is no log at all 
(there is no tracking).


thanks in advance for any help,

attila






^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-08-08  8:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-08-08  8:19 ftp nat, snat PORT translation ok, dnat PASV translation fail "bognár, attila"

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox