我只是使用最新版本的FileZilla服务器build立一个FTP服务器。 我build立了一个用户,并给他们一个主目录。 如果我通过127.0.0.1:21或192.168.1.42:21(我的本地IP)连接到服务器,文件可以上传和下载,一切正常。 但是,当我通过我的外部域名www.suchipi.com:21连接,服务器连接,但目录列表失败。 我以为这可能是我如何设置我的Alogging错误,但通过75.70.128.37:21连接到我的外部IP导致同样的问题。 端口21是唯一转发的端口。 我需要进一步的其他端口吗?
您还需要打开端口20 / TCP以允许数据连接的stream量。 configuration为使用被动模式时,该端口将被FTP客户端使用。
如果你的防火墙有FTP协议连接跟踪,比如netfilter的ip_conntrack_ftp和ip_nat_ftp ,那么你只需要加载合适的模块和/或指定你允许FTP协议(不仅是端口21)。
如果防火墙不支持FTP协议,则唯一的select是将FTP服务器configuration为允许被动模式客户端。 为此,您需要允许TCP端口21用于控制连接,TCP端口20用于数据连接。 数据连接用于列出文件夹和文件传输。
我需要进一步的其他端口吗?
是的,你需要 – 而且没有静态列表。 FTP有一个非常糟糕的问题:在主动模式下,服务器将在RANDOM(!)端口连接TO(!)客户端。 你需要从命令stream中获取端口号。 基本上你说“列表”,服务器试图打开一个TCP连接到RANDOM端口上的客户端发送列表。 哎哟。
这就是为什么你可以把客户端置于PASSIVE模式,这意味着所有的连接都是从客户端打开的,但即使这样你也需要转发其他端口。
一般来说,FTP来自甚至连防火墙都没有想过的地方 – 而有人却把服务器连接到客户端时做出了错误的决定。
如果你没有PORT FORWARD,这个工作会好得多,但是使用一个知道如何转发FTP的适当的路由器/防火墙(即不仅仅是TCP会话,还要处理TCP会话的内容和翻译端口号等等)。 几乎每一个明智的防火墙都应该能够这样做 – 即使是Linux,你只需要远离“愚蠢的”tcp转发。
http://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDoQFjAB&url=http%3A%2F%2Fwww.linuxquestions.org%2Fquestions%2Flinux-security-4%2Fftp-出版-需要的帮助-configuration-iptables的function于被动模式中,非标准端口-891483%2F&EI = AhOgT9mbI8eg4gS0n5XxAg&USG = AFQjCNE6yy7PObATNc0tDQoC2Co3RUFrUQ
对可能出现的问题也有一些解释,正如你所看到的那样,这是一个痛苦的过程。
一般来说,最好不要在这种情况下使用FTP,不好意思说。
启用被动模式。 将它们设置为一个设定的端口范围(一些随机的高端口,20000-22000 fe)。 不要忘记在防火墙上打开这些端口,并将它们与端口20一起转发到路由器上。