【问题标题】:aws ecs docker container cannot reach the internetaws ecs docker 容器无法访问互联网
【发布时间】:2021-09-23 16:54:10
【问题描述】:

我有一个 ECS 集群一个容器实例。我有一个部署 REST API 的 ECS 服务和相应的任务。出于某种原因,互联网无法从容器中访问,但它在容器实例之外。从图 #4 可以看出,该任务部署在子网 subnet-4e211127(公共子网 2)设置中,您可以在图 #8 中看到该设置。它使用互联网网关(igw)。根据这个SO,为了使ECS容器能够访问互联网,我需要将它部署在与nat关联的主题中。

因此,当我编辑公共子网 2 以使用 nat 而不是 igw 时,我失去了与容器实例 (ec2) 的 ssh 连接。这可能是我的 ec2 实例和 ecs 任务使用相同子网的原因,当我从 igw 切换到 nat 时,它也会影响 ec2 ssh?您可以在图片 #1 上找到 ec2 实例设置。

我应该为任务和 ec2 实例使用不同的子网吗?您可以在图片 #2 中使用它。

事实并非如此。我尝试为 ec2 和 ECS 任务使用不同的子网,结果是一样的:从容器中无法访问互联网,但是当我从 igw 切换到 nat。

与 ec2 关联的安全组不强制限制传出流量。

我还在主机(不是容器)上尝试了 iptables 的一些技巧,但没有帮助:

sudo iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT

各位,能否请您修改一下我目前的设置,并提供一些关于我错过了什么的提示。以下是有关我的设置的一些详细信息:

  1. 容器实例(EC2):

  1. 安全组(出站规则):

  1. ECS 服务

  1. ECS 任务

  1. VPC 配置

  1. 私有子网

  1. 公共子网 1

  1. 公共子网 2

  1. 圆桌会议 rtb-7b352e13 / rt-nat

  1. 可路由 rtb-08ae0e5d4eedfb60b / rt-igw

【问题讨论】:

    标签: amazon-web-services amazon-ecs amazon-vpc nat


    【解决方案1】:

    可能有不同的原因,但我建议根据您的信息

    • 首先确保您的 ECS 实例和 aws-vpc 任务位于同一子网中
    • 不要将 ecs 实例放在公共子网中。您仍然可以对您的实例执行 SSH 的声明意味着您的实例位于公共子网中,并且具有公共 IP。公共子网中的所有内容都需要公共 IP 才能与 Internet 通信,只是将其放在公共子网中是行不通的。因此,您需要将 ecs 实例移动到只能通过 NAT GW 访问互联网的私有子网,然后在同一子网中启动您的容器(如果您在ECS服务)

    【讨论】:

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