【问题标题】:ftp access from AWS VPC private subnet behind a NAT instance从 NAT 实例后面的 AWS VPC 私有子网进行 ftp 访问
【发布时间】:2014-11-26 23:43:00
【问题描述】:

我在 AWS 上创建了一个具有公共子网和私有子网的 VPC。所有应用服务器都在私有子网中,所有出站请求都必须通过面向 Internet 的 NAT 实例。

目前,我们的项目需要应用服务器访问服务提供商提供的 ftp 服务器。

我尝试了几种方法来管理它,但都没有运气。我所做的是在 NAT 和 APP 安全组上打开一个端口范围,比如说 (40000 - 60000),还有标准的 ftp 端口 20 - 21。

用户认证可以通过,但我无法列出来自应用服务器的内容。

我可以通过 NAT 访问 ftp 服务器,一点问题都没有。

那么我应该怎么做才能让它工作呢?

【问题讨论】:

    标签: amazon-web-services ftp nat vpc


    【解决方案1】:

    @JohnRotenstein 是绝对正确的,如果可以的话,你应该使用被动 FTP。如果像我一样,您遇到一个坚持您使用 Active FTP 的客户,因为他们希望您连接的 FTP 站点自 1990 年以来一直在运行,而现在更改它是完全不合理的,然后继续阅读。

    AWS 的 NAT 服务器不支持私有子网中的机器使用 Active FTP 进行连接。句号。如果你问我,这是一个错误,但如果你问 AWS 支持,他们会说这是一个不受支持的功能。

    我们最终想出(并且有效)的解决方案是:

    • 将公有子网中的弹性网络接口 (ENI) 添加到私有子网中的 EC2 实例
      • 所以现在您的 EC2 实例有 2 个网络适配器、2 个内部 IP 等。
      • 让我们将这个新 ENI 称为您的“公共 ENI”
    • 将专用弹性 IP 附加到您的新公共 ENI
      • 假设您获得 54.54.54.54,新公共 ENI 的内部 IP 地址为 10.1.1.10
    • 在您的操作系统的网络配置中添加一个路由以仅使用新的公共 ENI

      • 在 Windows 中,the command 将如下所示,假设您尝试连接的邪恶活动 ftp 服务器位于 8.1.1.1:

        route add 8.1.1.1 mask 255.255.255.254 10.1.1.1 metric 2
        
      • 这将使用子网掩码 255.255.255.254(即此 IP 且仅此 IP)为所有流量添加到 8.1.1.1 处的 FTP 服务器的路由,应使用以太网适配器 2 转到 Internet 网关 10.1.1.1 (您的第二个 NIC)

    • 厌倦了吗?是的,我也是,但现在最困难的部分来了。操作系统不知道它是公共 EIN 的公共 IP 地址。所以你需要教你的 FTP 客户端使用公共 IP 发送 PORT 命令。例如,如果使用 CURL,请使用 --ftp-port 命令,如下所示:

      curl -v --ftp-port 54.54.54.54 ftp://8.1.1.1 --user myusername:mypass
      

    瞧!您现在可以从(几乎完全)位于私有子网中的 EC2 机器连接到噩梦般的活动 FTP 站点。

    【讨论】:

    • 我能够在没有路由的情况下完成curl 部分。只需告诉--ftp-port AWS 分配给实例的公共 IP 就足够了。请注意,从版本 7.19.5 开始,您可以在 IP 之后指定一个范围。所以现在不必打开所有端口,只需打开 AWS 防火墙中的一个范围。
    【解决方案2】:

    尝试在 FTP 上使用被动 (PASV) 模式。

    来自 Slacksite:Active FTP vs. Passive FTP, a Definitive Explanation

    在主动模式 FTP 中,客户端从一个随机的非特权端口 (N > 1023) 连接到 FTP 服务器的命令端口 21。然后,客户端开始监听端口 N+1 并发送 FTP 命令 PORT N+1到 FTP 服务器。然后,服务器将从其本地数据端口(即端口 20)连接回客户端指定的数据端口。

    因此,流量试图在未通过 NAT 的其他端口上进行通信。相反,被动模式创建出站连接,然后将允许通过 NAT

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 2020-09-07
      • 2016-10-02
      • 2014-05-26
      • 2019-09-04
      • 2018-11-26
      • 2018-08-10
      相关资源
      最近更新 更多