我在AWS ECS集群中创建了ECS服务。 我的容器使用awsvpc网络模式。该服务没有负载均衡器。
但是它不能触及任何公共互联网资源。
当我进入ECS实例并通过SSH进入docker容器时,我无法获取任何公共资源。
root@ip-10-3-1-23:/app# traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 *^C
root@ip-10-3-1-23:/app# wget google.com
--2019-08-31 22:34:38-- http://google.com/
Resolving google.com (google.com)... 172.217.9.206, 2607:f8b0:4004:807::200e
Connecting to google.com (google.com)|172.217.9.206|:80... ^C
root@ip-10-3-1-23:/app#
EC2实例安全组:
入站:
Type Protocol Port Range Source Description
All TCP TCP 0 - 65535 10.3.0.0/16
SSH TCP 22 sg-5c260123 (mgmt-bastion)
Custom TCP Rule TCP 51678 sg-0784b8f53ab37c234 (mgmt-jenkins-sg)
出站:
Type Protocol Port Range Source Description
All traffic All All 0.0.0.0/0
服务安全组:
入站:
Type Protocol Port Range Source Description
All TCP TCP 0 - 65535 10.3.0.0/16
出站:
Type Protocol Port Range Source Description
All traffic All All 0.0.0.0/0
请您帮我调试一下,如何允许Internet访问?
答案 0 :(得分:4)
对于使用EC2启动类型的任务,awsvpc网络模式不为任务ENI提供公共IP地址。 要访问Internet,必须在配置为使用NAT网关的专用子网中启动使用EC2启动类型的任务。有关更多信息,请参阅Amazon VPC用户指南中的NAT网关。入站网络访问必须使用私有IP地址或DNS主机名从VPC内进行,或者必须通过VPC内部的负载平衡器进行路由。在公共子网中启动的任务没有出站网络访问权限。
答案 1 :(得分:1)
我通过在创建ECS任务的子网的路由表中添加一个条目来解决此问题。
Destination Target
10.3.0.0/16 local
0.0.0.0/0 nat-02dcc4c6b32bdae00