如果没有弹性IP地址,ec2实例无法在公有子网中访问互联网吗?

问题描述 投票:0回答:4

我在AWS上工作。我创建了一个公共子网,它具有允许所有网络流量的网络 ACL,并与路由表中的互联网网关关联。

然后我创建一个没有弹性ip的ec2实例和一个有弹性ip的ec2实例,安全组也允许所有流量。

我通过 ssh 连接到具有弹性 IP 的实例。当我运行 yum update 和curl www.baidu.com 等时效果很好。但是当我 ssh 到没有弹性 IP 的 ec2 实例时,我无法访问互联网。有人知道这是为什么吗?

amazon-web-services networking amazon-ec2 amazon-vpc elastic-ip
4个回答
37
投票

要使用 Internet 网关从公共子网中的 EC2 实例访问 Internet,该实例需要具有公共 IP 地址。任一者都可以将实例配置为具有公共 IP 地址或附加 EIP。

参考:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html

如果您不想为具有 Internet 访问权限的实例附加公共 IP 地址(考虑私有子网),NAT 实例和 NAT 网关可以提供帮助。

参考:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat.html


9
投票

问题出在连接到您正在使用的子网的网关上。要检查您正在使用的网关:

  • 转到您正在使用的子网
  • 点击
    Route table
  • Routes
    ->
    Destination
    下查找
    0.0.0.0/0
    并在
    Target
  • 下检查您拥有的网关

网关的行为方式如下:

  • 互联网网关 (IGW) 允许具有公共 IP 的实例访问互联网。
  • NAT 网关 (NGW) 允许没有公共 IP 的实例访问互联网。

这是一篇很好的文章,可以帮助您理解并解决您的问题: https://medium.com/awesome-cloud/aws-vpc-difference- Between-internet-gateway-and-nat-gateway-c9177e710af6


5
投票

除了位于具有到 Internet 网关的路由的子网中之外,实例还必须具有公共 IP 地址才能与外界通信(这与弹性 IP 不同)。

您可以在启动实例时指定它,如果没有,则有一个每个子网设置来控制它。除了默认 VPC 中的默认子网之外,每个子网设置默认为 false。 aws 文档中有更多详细信息


0
投票

我有类似的问题:

子网 10.0.1.0 上具有弹性 IP (Amazon Linux 2) 的服务器 A。 服务器 B 位于子网 10.0.2.0 上,具有弹性 IP,因此无法访问互联网。

AWS 的所有配置均正确,但无法从服务器 B 访问互联网。事实证明,这是由服务器 A 上运行的 iptables 引起的。

在 /etc/sysconfig/iptables 中,我需要设置如下所示的一行,然后重新启动:

-A 后路由 -s 10.0.2.0/24 -o eth0 -j 伪装

另一个潜在原因是您需要在服务器 A 上编辑网络接口。 选择“操作”,然后选择“更改源/目标。检查”并取消选中它以禁用。

© www.soinside.com 2019 - 2024. All rights reserved.