如何在Amazon AWS上的VPC中的公有子网上启用EC2上的传出HTTP / HTTPS请求

我使用AWS文档中的scheme2设置了VPC: http : //docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

我已将Elastic IP分配给在公用子网中运行的EC2实例。 SSH工作正常,我可以访问运行的网站。 我不能,但不能做出传出的HTTP或HTTPS请求(我注意到这一点,当试图运行yum update )。

我相信我所有的安全设置都是正确的。 我无法通过Internet网关发出HTTP / HTTPS请求吗? 我特别要求在创build时不要将公共IP分配给此实例,因为我知道我将分配一个易受IP访问的网站DNS。 我有专用子网中的实例的NAT设置,但我目前只有RDS实例在那里运行,所以我没有从那里testing传出的请求。

该EC2实例的安全组具有以下出站规则: 在这里输入图像说明

该子网的路由表具有以下设置: 在这里输入图像说明

networkingACL具有以下设置: 在这里输入图像说明

默认DHCP选项集具有以下设置:

 domain-name = ec2.internal domain-name-servers = AmazonProvidedDNS 

默认的/etc/resolv.conf设置是:

 search ec2.internal nameserver 10.0.0.2 

VPC和子网的CIDR块如下:

 VPC: 10.0.0.0/16 Public Subnet: 10.0.0.0/24 Private DB Subnet in US East 1A: 10.0.1.0/24 Private DB Subnet in US East 1C: 10.0.2.0/24 

仍然令人愉快

为什么在这种情况下提供的AWS DNS服务器不工作?

问题

问题是DNS名称不是通过本地DNS服务器parsing,而是最初创buildVPC时提供的 。 我发现我可以将传出的HTTP / HTTPS连接到IP地址,而不需要联系DNS服务器来解决。

我必须在Amazon VPC AWS控制台中创build一个自定义的DHCP选项集,并将Google的公共DNS IP设置为domain-name-servers = 8.8.8.8, 8.8.4.4

然后我不得不更新/etc/resolv.conf设置相同的东西: nameserver 8.8.8.8 nameserver 8.8.4.4