0

我在 Windows 上运行 FILE-Zilla ftp 服务器,其中一台 LAN pc 连接到我的路由器。我正在尝试通过在路由器中添加端口转发规则(NAT)来使用路由器 WAN ip (WAN-to-LAN)从路由器外部的网络访问 FTP 服务器。根据以下配置,我在这里有 2 个案例。第一个工作正常第二个不工作(在被动模式下)。

注意:我在运行 ftp 服务器的 Windows 7 防火墙中添加了自定义入站规则。

配置#1

Filezilla FTP server port: 21
Passive port range: 50000-51000

NAT - external port: 21
NAT - internal port: 21

Windows firewall inboud rule port allow port: 21, 50000-51000

Client connecting to: <Wan IP>:21

如果客户端尝试使用主动/被动模式进行连接,这将起作用

配置#2

Filezilla FTP server port: 2000
Passive port range: 50000-51000

NAT - external port: 21
NAT - internal port: 2000

Windows firewall inboud rule port allow port: 2000, 50000-51000

Client connecting to: <Wan IP>:21

这仅在客户端设置为活动模式时才有效。 客户端无法使用被动模式配置。客户端可以连接并且登录成功,但在服务器端以这样的错误消息结束,没有任何目录列表。

227 Entering Passive Mode (192,168,1,2,195,85)

注意:这两种情况都工作在 LAN-LAN 网络中。

4

1 回答 1

1

我的猜测是配置 #1 之所以起作用,只是因为 NAT 足够聪明,可以PASV在服务器的响应中转换 IP 地址。但它可能只对标准 FTP 端口这样做。


您应该告诉 FileZilla FTP 服务器它的外部 IP 地址。转到编辑 > 设置 > 被动模式设置 > IPv4 特定 > 外部服务器 IP 地址以进行被动模式传输

当前,您的 FTP 服务器正在向客户端发送其内部 IP 地址。并且客户端显然无法连接到IP地址。

并让 NAT 转发被动端口范围 (50000-51000) 中的端口。


尽管更改会中断 LAN-LAN 连接。要同时允许 LAN 和 WAN 连接,请检查 NAT 是否也可以配置为转换非标准端口的 IP 地址。尽管无论如何翻译都只适用于未加密的连接。而且您不应该使用未加密的连接!

EPSV如果您的客户允许,最后一个选项是使用扩展的被动模式 ( )。在扩展被动模式下,响应中没有 IP 地址。FTP 客户端使用 FTP 服务器的主 IP 地址进行数据连接。

于 2017-02-28T08:26:27.270 回答