在 AWS EC2 上,我无法进行 wget 或 curl 或任何出站连接

Posted

技术标签:

【中文标题】在 AWS EC2 上,我无法进行 wget 或 curl 或任何出站连接【英文标题】:On AWS EC2, I cannot do wget or curl, or any outbound connection 【发布时间】:2016-01-08 21:29:14 【问题描述】:

在新安装的 EC2 上:

    安全组是默认的。入站和出站都允许 0.0.0.0/0 的“所有流量”。

    “网络 ACL”对入站有一些限制,因为我们希望此域上的网站成为我们慈善组织的内部网络。但是从这台服务器上,我们想通过 SSH 安装一些东西,所以我们需要 wgetcurl。所以Outbound也是

    100 所有流量 0.0.0.0/0 允许

    所有流量 0.0.0.0/0 DENY

默认情况下会添加最后一个“DENY”。

有了这些似乎很正常的设置,我还缺少什么?请注意,所有iptables 规则都已刷新,据我所知,我们不使用 iptables。所有防火墙内容均由 Amazon VPC 安全设置管理。

有什么想法或建议吗?谢谢你。

【问题讨论】:

只是补充,我们不能pingtracert或任何东西。 你倒退了。允许通过入站安全组对您的站点进行所需的访问(拒绝对于所有不允许的内容都是隐含的),并将网络 ACL 在两个方向上恢复为“全部允许”默认值。 NACL 是无状态的、低级的、高级的功能,几乎可以肯定它并没有按照您的预期做您认为的事情。 我遇到了同样的问题,我无法发出任何出站请求,结果发现将入站 NACL 规则设置为与安全组规则相同是罪魁祸首。我刚刚将 NACL Inbound 设置为允许所有并在安全组上留下所需的规则,并且能够再次正常从框发出出站请求。 【参考方案1】:

您似乎可以连接到您的实例(通过ssh 或 RDP),但您无法从该实例访问 Internet 资源。如果是这样,需要检查的事项是:

入站安全组:不相关(但可能没问题,因为您可以连接到实例) 出站安全组:允许0.0.0.0/0 网络访问控制列表 (NACL):首先允许所有进出流量以使其正常运行,然后根据要求限制它们。这也是默认设置(如您在上面列出的) 分配一个公共 IP 地址(在启动时或作为弹性 IP 地址)。如果您能够连接到实例,那么这很好。 在公共子网中启动实例,这意味着子网在路由表中有一条规则将流量定向到 Internet 网关(如果您能够连接到实例,那么这是很好)

您可以连接 INWARDS 的事实表明您的网络设置都是正确的。无法启动 OUTWARDS 连接通常是由于出站安全组设置所致。

【讨论】:

我遇到了同样的问题。入站没问题,因为我可以进入我的实例。但是,我运行 curl 只是挂起。我的出站 SG 设置为允许 0.0.0.0/0。奇怪 啊,我的服务器没有公共 IP。无论如何要通过私有 IP 将流量路由到 Internet 网关? @user2402616 请创建一个新问题,而不是通过对旧问题的评论来提问。

以上是关于在 AWS EC2 上,我无法进行 wget 或 curl 或任何出站连接的主要内容,如果未能解决你的问题,请参考以下文章

无法在 AWS EC2 (Ubuntu) apache 系统上 SSL Godaddy 验证证书

无法从 S3 读取 csv 到 AWS 上 EC2 实例上的 pyspark 数据帧

AWS账户之间的克隆/传输EC2实例(AMI)

无法在 AWS 上的 EC2 与 Python 中的 SSHTunnelForwarder 之间进行连接

AWS EC2 Windows实例无法通过公共IP访问

在 Amazon EC2 上运行的 Tomcat 在 AWS 之外无法访问