You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

私有子网内EC2实例无法使用yum及网络连接问题排查求助

AWS私有子网EC2实例无法联网安装软件包问题

问题背景

我的AWS架构如下(架构图:[架构图]):

  • 可以从公有子网内的EC2实例连接到私有子网内的EC2实例
  • 尝试在私有子网实例上用yum安装软件包时失败,原因是yum无法联网
  • 临时将私有子网的路由表修改为与公有子网一致后,仍然出现报错

报错信息

Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Could not retrieve mirrorlist https://amazonlinux-2-repos-eu-central-1.s3.dualstack.eu-central-1.amazonaws.com/2/core/latest/x86_64/mirror.list error was
12: Timeout on https://amazonlinux-2-repos-eu-central-1.s3.dualstack.eu-central-1.amazonaws.com/2/core/latest/x86_64/mirror.list: (28, "Failed to connect to amazonlinux-2-repos-eu-central-1.s3.dualstack.eu-central-1.amazonaws.com port 443 after 2701 ms: Couldn't connect to server")

其中一个配置的仓库连接失败(未知原因),yum没有足够的缓存数据继续执行。此时yum只能终止操作,以下是几种可行的解决思路:

1. 联系仓库上游提供商修复问题。

 2. 重新配置仓库的baseurl等参数,指向可用的上游源。这种方法通常适用于你使用的发行版版本比仓库支持的版本新,但旧版本的软件包仍能正常使用的情况。

 3. 临时禁用该仓库后执行命令:
        `yum --disablerepo=<repoid> ...`

 4. 永久禁用该仓库,yum默认不会再使用它。之后可以通过`--enablerepo`参数临时启用,或者重新永久启用:

        `yum-config-manager --disable <repoid>`
    或者
        `subscription-manager repos --disable=<repoid>`

 5. 配置仓库不可用时自动跳过。注意yum在执行大多数命令时仍会尝试连接该仓库,每次都会失败,导致yum运行变慢。但如果只是临时问题,这是一个不错的折中方案:

        `yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true`

无法找到repo: amzn2-core/2/x86_64的有效baseurl

初步排查

  • 执行ping google.com时所有数据包均丢失,推测是网络连接问题
  • 私有子网内实例的出站规则(截图:[出站规则])

排查与解决步骤

1. 确认路由表配置有效性

虽然你把私有子网路由表改成和公有子网一致,但要核对以下几点:

  • 路由表是否包含指向**Internet Gateway(IGW)**的0.0.0.0/0路由条目
  • 该路由表是否已正确关联到目标私有子网
  • 检查路由表的传播设置,确保没有冲突的路由策略覆盖了默认路由

2. 校验安全组出站规则

从你提供的出站规则截图来看,需要确认:

  • 是否允许所有出站流量(0.0.0.0/0),至少要允许HTTPS(443端口)和DNS(53端口,UDP/TCP协议)的出站访问
  • 该安全组是否已经正确关联到私有子网的EC2实例

3. 检查网络访问控制列表(NACL)

NACL是子网级的防火墙,容易被忽略:

  • 确认NACL的出站规则允许443、53端口的流量通过
  • 确认NACL的入站规则允许临时端口范围(通常是1024-65535)的响应流量返回,否则请求发出去后收不到响应

4. 验证实例的公网访问属性

  • 私有子网的EC2实例是否分配了弹性公网IP(EIP)?如果路由表指向IGW,但实例没有公网IP,依然无法直接访问互联网
  • 检查实例的Public IPv4 address是否存在,或者是否开启了Auto-assign public IPv4 address(临时测试可用)

5. 测试基础网络连通性

  • 尝试ping 8.8.8.8(谷歌公共DNS),如果能通说明是DNS解析问题,需要检查VPC的Enable DNS hostnames和Enable DNS support是否开启,实例是否使用VPC的DNS服务器
  • 如果ping 8.8.8.8也丢包,说明是路由或防火墙层面的问题,回到前几步重新排查

6. 临时替代方案

如果暂时无法修复公网访问,可以采用以下方式安装软件:

  • 在公有子网的EC2实例上下载需要的rpm包,通过SCP复制到私有子网实例进行离线安装
  • 配置VPC的S3 Gateway端点,这样私有子网实例可以直接访问S3上的Amazon Linux仓库,无需走公网

内容的提问来源于stack exchange,提问作者asfarasiknow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:37:55