AWS VPC 端点后面的 IIS FTP

IIS FTP behind AWS VPC Endpoint

提供上下文:我在 IIS 中的 WS2019 EC2 实例中有一个 FTP 服务器 运行 在 VPC A[=39 中=]需要被VPC B和C访问。最后一个在GCP中,A和B在AWS中。

  • VPC A 和 B 具有对等连接。
  • VPC B 和 C 通过 VPN 连接。
  • VPC C 不与 A 交换数据,除了这个 FTP 服务器;因此,维持一个 VPN 对我来说是昂贵的。

我按照此指南在 VPC A 中构建 NLB,然后将其附加到 VPC B 中的 VPC 端点。

How to run an FTPS server behind the AWS Network Load Balancer | by Michael Kirk | Medium

当我测试 TCP 连接时,它工作正常

PS C:\Users\johndoe> Test-NetConnection -ComputerName vpce-0948b61f1f991b98b-1w539hu9.vpce-svc-0ed1458eb15584b09.us-east-1.vpce.amazonaws.com -Port 21


ComputerName     : vpce-0948b61f1f991b98b-1w539hu9.vpce-svc-0ed1458eb15584b09.us-east-1.vpce.amazonaws.com
RemoteAddress    : 10.70.255.253
RemotePort       : 21
InterfaceAlias   : WAN
SourceAddress    : 10.58.32.20
TcpTestSucceeded : True

但是,当我尝试通过 FTP 客户端 连接时,我收到以下 错误消息

Status: Resolving address of vpce-0948b61f1f991b98b-1w539hu9.vpce-svc-0ed1458eb15584b09.us-east-1.vpce.amazonaws.com
Status: Connecting to 10.70.255.253:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: TLS connection established.
Status: Logged in
Status: Retrieving directory listing...
Command:    PWD
Response:   257 "/" is current directory.
Command:    TYPE I
Response:   200 Type set to I.
Command:    PASV
Response:   227 Entering Passive Mode (10,74,163,58,43,209).
Command:    LIST
Response:   150 Opening BINARY mode data connection.
Error:  Connection timed out after 20 seconds of inactivity
Error:  Failed to retrieve directory listing

如果我的被动模式使用 public 或私有 IP 地址进行应答,会有什么不同吗?我检查了所有的安全组和路由表...

有人能帮我弄清楚这是怎么回事吗?

您需要了解 FTP 被动模式。 FTP 客户端正在连接到位于 10.70.255.253:21 的 FTP 服务器。 FTP 服务器正在为 LIST 命令 10.74.163.43:209 设置 IP/Port 并等待。

FTP 客户端应该连接到 IP:PORT。它没有启动连接,FTP 服务器在 20 秒后超时。

请注意,FTP 客户端为命令连接 (10.70.255.253) 连接的地址与服务器认为它应该回复数据传输命令的地址 (10.74.163.43) 不同。 FTP 服务器存在配置问题。

注意:由于 FTP 客户端正在连接到 FTP 服务器以在不同于 21 的端口上执行数据传输命令,因此您还必须允许那些 ingress 端口通过防火墙。

注意:出于安全原因,大多数 FTP 客户端 不会 连接到不同的 IP 地址。