根本原因分析

根本原因分析

我们的 DMZ 中有一台运行 Windows Server 2016 的服务器,使用 IIS 时,我们在内部网络中以被动模式使用 FTP 时遇到了一些问题。我们希望既能从内部网络使用,也能从外部网络使用。

在根服务器级别,我配置了数据通道端口范围 50000-50100

接下来在 FTP 站点级别,我配置了“FTP 防火墙支持”,并在“防火墙的外部 IP 地址”字段中输入了我们的网络管理员在防火墙中配置的外部地址。

我还配置了其他设置,例如

  • FTP 身份验证 - 已启用基本身份验证
  • FTP 授权规则 - 特定本地 Windows 帐户的读写权限
  • FTP SSL 设置 - 指定 SSL 证书、设置 SSL 策略以要求 SSL 连接,并为 SSL 连接启用用户 128 位加密
  • FTP 用户隔离 - 设置为用户名目录(禁用全局虚拟目录)

如果我从网络外部连接,一切都会顺利进行,但是如果我使用 FileZilla 以被动模式从网络内部连接,它会连接到服务器,建立 TLS,但无法检索目录列表。我可以看到,当它进入被动模式时,它会报告外部 IP,而不是来自我们内部 DNS 的 IP。显然,这是由于 FTP 防火墙支持配置使事情在外部正常工作。

如果我删除指定“防火墙的外部 IP 地址”的设置,那么它可以在内部工作,但不再在外部工作。

有没有办法将其配置为在内部和外部网络的被动模式下工作?

答案1

根本原因分析

对于外部客户端,它们的控制和数据通道都通过您配置的公共 IP 地址。这就是为什么它们通常使用基本配置工作的原因。

但是对于内部客户端来说,它们的控制通道会通过您的 FTP 服务器的私有 IP 地址,而 IIS FTP 仍然会选择您配置的公共 IP 来通知此类客户端使用该 IP 打开数据通道。

根据您的描述“我可以看到,当它进入被动模式时,会报告外部IP,而不是来自我们内部dns的IP。”

解决方案

更换更好的 FTP 客户端软件

某些 FTP 客户端软件(例如 WinSCP)足够智能或可配置,可以从控制通道打开带有服务器 IP 的数据通道。如果您可以切换到此类客户端软件,则无需更改任何防火墙/服务器端设置。有关 WinSCP 的更多信息,请参阅本文。要了解其他客户端软件,请使用搜索引擎或其手册。

更改防火墙设置以允许内部客户端连接到公共 IP 地址

某些防火墙产品(如 Microsoft ISA)允许管理员允许内部客户端连接到公共 IP 地址,因此您可以更改该选项。如果您使用其他防火墙产品,它们的手册中可能会有类似的设置。

答案2

是的,但这是防火墙配置问题。您需要将 IIS 中的“防火墙的外部 IP 地址”设置为服务器的内部的IP 地址。然后,需要将防火墙配置为从外部 IP 地址到内部 IP 地址的 1:1 NAT。可能还会有其他防火墙配置问题,例如 pfSense 需要安装 FTP 代理包来处理 PASV 端口,但这些要求将特定于正在使用的防火墙。大多数商用级防火墙应该有一些方法来配置此设置。

相关内容