首页 文章

如何从亚马逊vpc连接外部世界?

提问于
浏览
51

我通过向导将amazon VPC设置为“仅公共网络”,因此我的所有实例都在公共子网中 .

VPC中分配了弹性IP的实例可以毫无困难地连接到Internet .

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

互联网网关存在 . 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

我还可以做些什么?

10 回答

  • 0

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

    Reference

  • 2

    看来从没有弹性IP的实例进入外部的唯一方法是:

    • 添加NAT(从ami-vpc-nat-beta启动额外的m1.small实例)并为其分配EIP

    • 创建一个额外的子网"private"

    • 将非EIP实例移至该私有子网

    • 修改路由表:私有子网的0.0.0.0/0应该转到NAT

    所以,仅添加NAT是不够的 . 应停止实例并将其移动到另一个子网中的另一个IP .

  • 0

    文档告诉你应该添加NAT Instance

  • 4

    问:没有EIP的实例如何访问互联网?没有EIP的实例可以通过以下两种方式之一访问Internet:没有EIP的实例可以通过NAT实例路由其流量以访问Internet . 这些实例使用NAT实例的EIP来遍历Internet . NAT实例允许出站通信,但不允许Internet上的计算机使用NAT启动与私有寻址计算机的连接,并且

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

    您可以在此处找到有关如何设置nat实例的详细说明:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html
    enter image description here

  • 9

    或者在公共VPC中创建NAT实例,并为该NAT实例添加静态路由

    route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.5 eth0

    其中10.0.0.5是您的nat实例,只需确保包含NAT实例的安全组可以接受来自您需要访问Internet的框的内部流量

  • 0

    您可以在具有EIP的VPC中的任何实例上执行此操作 . 我描述的几条指令here应该可以帮到你 . BTW:不要忘记禁用source / dest . 校验

  • 11

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

    交叉检查安全组的规则 .

    路线表看起来很好 . 它应该工作 .

  • 0

    这对我有用:

    • VPC子网172.20.0.0/16

    • EC2 "nat"网关172.20.10.10与EIP

    去做 :

    • 设置已禁用的源/目标 . 检查你的"nat gw"

    • 创建一个新的"nat-sub"子网ex:172.20.222.0/24

    • 修改路线0.0.0.0/0到172.20.10.10(我的nat gw)"nat-sub"

    • 使用"nat-sub"创建EC2
      以root身份登录nat网关

    • ,尝试:

    root @ 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 -t nat -A POSTROUTING -o eth0 -s 172.20.222.0/24 -j MASQUERADE

    如果有效,请在/etc/rc.local中添加这2行

  • 53

    Security Groups -> Outbound

    *   ALL Traffic ALL     ALL     0.0.0.0/0   Allow
    

    如果您想连接到google.com等外部服务器,甚至想要更新sudo apt-get update,请允许Outbound

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

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

  • 0

    他们有一个名为NAT网关的相对较新的产品就是这样,在您的发布/私有子网边缘创建一个托管NAT实例 .

相关问题