我目前正在尝试使用 debian 和 proftpd 设置家庭 FTP 服务器,但遇到了一个让我困惑的问题。我相信我已经设置了大部分东西,但我无法使用外部 IP 访问我的 FTP 服务器。我已经在路由器上转发了正确的端口,并且检查了http://www.yougetsignal.com/tools/open-ports/确保它确实已打开。我在服务器上本地使用 telnet 检查端口是否接受连接。我可以通过 LAN 使用 ftp。但是,我仍然无法从外部访问任何东西。
我认为还需要进行一些路由器配置才能解决此问题,例如通过内部 IP 将我的 ftp 端口上的所有连接路由到我的服务器,但我在路由器上找不到任何选项来执行此操作。这是必要的步骤吗?有一个使用 DMZ 托管的选项,但如果可能的话,我宁愿避免使用它。我可以根据要求提供其他信息,请让我知道您认为可能有帮助的任何信息。谢谢。
-布拉德
PS-我有一台 Telus Actiontec 调制解调器/路由器
更新 - !! 在工作中试用我的 ftp 服务器,成功了!我想我毕竟设置正确了。但让我困惑的是,为什么服务器不再允许我本地连接?这对我来说似乎很奇怪。另外,我不明白为什么如果我尝试使用外部地址从同一网络进行连接,我会被直接拒绝。回家后我会进一步研究,但还是感谢你们的帮助。
更新 2 - 我发现无法再进行本地连接的问题。我将伪装地址设置为我的外部 IP,由于某种原因,当我使用 LAN 地址连接时,它挂在 MLSD 上。我已删除伪装地址,我将检查明天上班是否需要它。如果我发现任何东西,我会更新此页面。
最后更新 - 我刚刚在工作中检查过,一切都按计划进行。我现在可以通过家里的 LAN 地址和其他地方的外部地址访问服务器。我觉得有点奇怪,它仍然不适用于家里的外部地址,我不明白为什么它不适用,但如果我仍然能够从任何地方访问它,那就没有负面影响。我将把 ultrasawblade 的回复标记为答案,因为归根结底,这是因为我忘记设置我的被动端口范围。感谢你们的帮助,我希望我的经验能帮助别人。
答案1
我已经在路由器上转发了正确的端口,并且检查了http://www.yougetsignal.com/tools/open-ports/以确保它确实已被打开。
问题可能是,对于 FTP,通常需要转发多个端口。如果客户端以“主动”模式连接,FTP 用户将使用两个端口,一个用于控制 (tcp 21),一个用于数据 (tcp 20)。
如今,客户端通常以“被动”模式连接到 FTP 服务器。这意味着服务器实际上会连接回客户端进行数据传输。在许多服务器上,如果您不指定范围,则会选择 1024 以上的随机端口,这意味着您需要打开防火墙上的几乎每个端口。但是,至少vsftpd
Windows 上的 Filezilla Server 允许您设置 FTP 服务器将使用的端口的最小和最大范围。每个可能的并发客户端都需要一个端口。
有比 FTP 更易于设置且更安全的文件访问选项,例如 SCP。如果您只是为了获取文件,或者您正在与可以安装/使用 SCP 客户端的人打交道,请考虑使用它们。
答案2
如果您的计算机只有一张以太网卡(即,它只连接到路由器),那么问题就出在路由器上,并且是 NAT。
仔细检查您的 IP、路由器的 IP 表、静态 DHCP 租约等。
(这与 proftpd 无关。如果它在 LAN 上运行,则没问题。)
更多信息:检查防火墙。您可能在服务器上安装了“iptables”。尝试禁用它,然后检查是否可以连接。具体方法如下:
$ su
$ /etc/init.d/iptables 停止