【发布时间】: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
各位,能否请您修改一下我目前的设置,并提供一些关于我错过了什么的提示。以下是有关我的设置的一些详细信息:
- 容器实例(EC2):
- 安全组(出站规则):
- ECS 服务
- ECS 任务
- VPC 配置
- 私有子网
- 公共子网 1
- 公共子网 2
- 圆桌会议 rtb-7b352e13 / rt-nat
- 可路由 rtb-08ae0e5d4eedfb60b / rt-igw
【问题讨论】:
标签: amazon-web-services amazon-ecs amazon-vpc nat