2012-04-20 260 views
51

我有亚马逊VPC通过向导设置为“公共唯一网络”,所以我所有的实例都在公共子网。如何从亚马逊vpc连接到外部世界?

已分配弹性IP的VPC中的实例连接到互联网没有任何问题。

但没有弹性IP的实例无法连接到任何地方。

Internet网关存在。在AWS控制台路由表看起来像

Destination Target 
10.0.0.0/16 local 
0.0.0.0/0 igw-nnnnn 

和路线从实例中显示

Kernel IP routing table 
Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
10.0.0.0  *    255.255.255.0 U  0  0  0 eth0 
default   10.0.0.1  0.0.0.0   UG 100 0  0 eth0 

我试着在安全组打开所有入站和出站流量0.0.0.0/0实例属于该。仍然没有成功。

~$ ping google.com 
PING google.com (74.125.224.36) 56(84) bytes of data. 
^C 
--- google.com ping statistics --- 
6 packets transmitted, 0 received, 100% packet loss, time 5017ms 

我还能做什么?

回答

53

看来,只有这样,才能从没有弹性IP情况下获得外部:

  • 添加NAT(启动额外的M1例如。小从AMI-VPC-NAT-β)和EIP分配给它
  • 创建一个额外的子网,这将是“私有”
  • 将非EIP-情况下,以私人子网
  • 修改路由表:从私有子网的0.0.0.0/0应该去NAT

所以,只需添加NAT是不够的。应停止实例并将其从另一个子网移到另一个IP。

+1

该文档说,您还必须分配一个EIP到NAT实例。 – dparkar 2013-01-11 20:38:05

+1

事实上,没有将EIP分配给NAT实例,它将无法工作。刚刚测试过。 – dparkar 2013-01-11 21:56:40

+3

当然你的NAT应该有EIP。暗示。编辑答案 – 2013-01-16 05:31:46

0

您是否检查子网上的网络ACL?

交叉检查安全组的规则。

路由表看起来不错。它应该工作。

+2

请注意,这些问题在5个月前回答。请注意,“我尝试将所有入站和出站流量都打开到实例所属安全组中的0.0.0.0/0,但仍然没有成功。”意味着它与安全组没有关联。 – 2012-10-11 05:42:10

0

解决此问题需要完成的所有工作是为配置为执行NAT的实例禁用“源/目标检查”。这可以在AWS控制台中的“实例操作”下完成。

Reference

+1

如果您创建了NAT实例,那就是。目前尚不清楚用户是否这样做。 – 2012-11-30 00:41:46

4

或公众VPC内创建一个NAT实例,并添加静态路由到NAT实例

路由添加-net 0.0.0.0 0.0.0.0网络掩码网关10.0.0.5 eth0的

其中10.0.0.5是您的NAT实例,只要确保你的其中包含了NAT实例可以接受内部交通从您需要访问Internet

+1

我做了同样的事情,但它添加了静态路由的实例元数据。元数据:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html公共子网+ EIP和私有子网+ NAT实例是要走的路。 – sayap 2013-09-19 05:08:03

2

箱子你能做到在任何情况下在你的VPC安全组,T帽子有EIP。几乎没有说明我描述here应该可以帮到你。顺便说一句:不要忘记禁用源/ dest。检查

+0

是的,实际上不需要有专门的NAT实例。任何实例都可以扮演这个角色。 – 2014-01-21 07:38:37

8

问:没有EIP的实例如何访问Internet?

实例,而不生态工业园区可以通过两种方式之一 实例访问互联网,无需生态工业园可以借道一个NAT实例 自己的流量来访问互联网。这些实例使用NAT实例的EIP来遍历Internet。该NAT实例允许出站 通信,但是在互联网上不使机器启动 使用NAT到专用寻址机的连接,并

http://aws.amazon.com/vpc/faqs/

你可以找到详细说明如何设置一个NAT实例这里:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html enter image description here

0

这对我的作品有:

  • VPC子网172.20.0.0/16
  • EC2 “NAT” 网关172.20.10.10与EIP

要做到:

  • 设置禁用源/目标。检查你的“nat gw”
  • 创建一个新的“nat-sub”子网例如:172.20.222.0/24
  • 修改路由0.0.0.0/0到172.20.10.10(my nat gw)为“nat-sub NAT-子 “
  • 你的NAT网关为根”
  • 使用创建一个EC2“,请尝试:

根@ GW:〜#的sysctl -q -w把net.ipv4.ip_forward = 1 net.ipv4.conf.eth0.send_redirects = 0

root @ gw:〜#iptables -t nat -C POSTROUTING -o eth0 -s 172.20.222.0/24 -j MASQUERADE 2>/dev/null || iptables的NAT -t POSTROUTING -A -o eth0的-s 172.20.222.0/24 -j MASQUERADE

如果它的工作原理,在/etc/rc.local中

0

安全组添加此2号线 - >外向

* ALL Traffic ALL  ALL  0.0.0.0/0 Allow 

如果要连接到外部服务器,如Google,请允许出站。COM 甚至想要最新情况:sudo易于得到更新

可以使用AWS前端转到安全组允许出站 - >出站

确保选择正确的组为您的AWS实例

+1

不,问题是关于没有弹性IP的情况。 – 2016-02-25 11:44:08

0

他们有一个称为NAT网关的相对较新的产品,它完全做到这一点,在你的pub/private子网的边缘创建一个托管的NAT实例。