54

我通过向导将亚马逊 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

我还可以做些什么?

4

11 回答 11

56

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

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

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

于 2012-05-15T04:43:01.220 回答
11

文档告诉您应该添加一个NAT 实例

于 2012-05-12T03:31:15.027 回答
9

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

没有 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 在此处输入图像描述

于 2014-01-30T06:07:23.683 回答
4

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

路由添加 -net 0.0.0.0 网络掩码 0.0.0.0 gw 1​​0.0.0.5 eth0

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

于 2013-05-16T16:41:41.563 回答
2

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

于 2014-01-20T12:13:04.103 回答
1

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

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

于 2019-02-16T16:38:41.717 回答
0

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

交叉检查安全组的规则。

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

于 2012-10-08T17:10:59.590 回答
0

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

参考

于 2012-10-19T12:23:09.310 回答
0

这对我有用:

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

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

于 2015-04-28T12:55:46.603 回答
0

安全组 -> 出站

*   ALL Traffic ALL     ALL     0.0.0.0/0   Allow

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

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

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

于 2016-02-25T07:01:28.767 回答
0

他们有一个相对较新的产品,称为 NAT 网关,它正是这样做的,在您的 pub/private 子网边缘创建一个托管 NAT 实例。

于 2017-08-26T20:22:35.030 回答