【问题标题】:How to connect to outside world from amazon vpc?如何从亚马逊 vpc 连接到外部世界?
【发布时间】:2012-05-01 21:32:36
【问题描述】:

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

VPC 中分配有弹性 IP 的实例可以毫无问题地连接到互联网。

但是没有弹性 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

我还能做什么?

【问题讨论】:

    标签: amazon-ec2 amazon-web-services connectivity vpc amazon-vpc


    【解决方案1】:

    似乎从没有弹性 IP 的实例中退出的唯一方法是:

    • 添加一个 NAT(从 ami-vpc-nat-beta 启动一个额外的 m1.small 实例)并为其分配 EIP
    • 创建一个额外的“私有”子网
    • 将非 EIP 实例移动到该私有子网
    • 修改路由表:来自私有子网的 0.0.0.0/0 应该去 NAT

    因此,仅添加 NAT 是不够的。应停止实例并将其从另一个子网移至另一个 IP。

    【讨论】:

    • 文档说您还必须为 NAT 实例分配 EIP。
    • 事实上,如果不将 EIP 分配给 NAT 实例,它将无法工作。刚刚测试。
    • 当然你的NAT应该有EIP。暗示着。编辑了答案
    • 不要忘记在 NAT 实例源/目标检查中禁用。
    • 他们一定是最近才进行了“NAT 实例源/目标检查”,因为我以前从来不用在连接之前禁用它。相当愚蠢的默认设置不允许外部连接,而我想象中的大多数人都会使用它。
    【解决方案2】:

    文档告诉您应该添加 NAT Instance

    【讨论】:

      【解决方案3】:

      问。没有 EIP 的实例如何访问互联网?

      没有 EIP 的实例可以通过以下两种方式之一访问 Internet 没有 EIP 的实例可以通过 NAT 实例路由其流量 访问互联网。这些实例使用 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

      【讨论】:

        【解决方案4】:

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

        route add -net 0.0.0.0 网络掩码 0.0.0.0 gw 1​​0.0.0.5 eth0

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

        【讨论】:

        【解决方案5】:

        您可以在您的 VPC 中具有 EIP 的任何实例上执行此操作。我描述的here 很少有说明应该对您有所帮助。顺便说一句:不要忘记禁用源/目标。检查

        【讨论】:

        • 是的,实际上不需要专用的 NAT 实例。任何实例都可以扮演这个角色。
        【解决方案6】:

        没有 EIP 的实例可以通过以下两种方式之一访问 Internet 没有 EIP 的实例可以通过 NAT 实例路由其流量以访问 Internet。这些实例使用 NAT 实例的 EIP 来遍历 Internet。 NAT 实例允许出站通信,但不允许 Internet 上的机器使用 NAT 发起与私有地址机器的连接。

        https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html

        【讨论】:

          【解决方案7】:

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

          交叉检查安全组的规则。

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

          【讨论】:

          • 请注意,这些问题是 5 个月前回答的。请注意,“我尝试在实例所属的安全组中打开所有入站和出站流量到 0.0.0.0/0。仍然没有成功。”表示它没有与安全组连接。
          【解决方案8】:

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

          Reference

          【讨论】:

          • 如果您已经创建了一个 NAT 实例,那就是。目前尚不清楚用户是否这样做了。
          【解决方案9】:

          这对我有用:

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

          待办事项:

          • 设置禁用的源/目标。检查你的“nat gw”
          • 创建一个新的“nat-sub”子网,例如:172.20.222.0/24
          • 将“nat-sub”的路由 0.0.0.0/0 修改为 172.20.10.10(我的 nat gw)
          • 使用“nat-sub”创建 EC2
          • 在您的 nat 网关上以 root 身份尝试:

          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 伪装 2> /dev/null || iptables -t nat -A POSTROUTING -o eth0 -s 172.20.222.0/24 -j 伪装

          如果可行,在 /etc/rc.local 中添加这两行

          【讨论】:

            【解决方案10】:

            安全组 -> 出站

            *   ALL Traffic ALL     ALL     0.0.0.0/0   Allow
            

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

            您可以使用 AWS 前端 goto Security Groups -> Outbound 允许出站

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

            【讨论】:

            • 不,问题是关于没有弹性 IP 的实例。
            【解决方案11】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-05-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-03-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多