AWS CloudFormation创建的第二公有子网实例网络与SSH连接异常求助
解决AWS公有子网实例无法联网、SSH访问及yum报错问题
嘿,我来帮你拆解下这个问题——公有子网里的第二个实例连不上网、SSH不通,浏览器访问公网IP也没反应,还有yum的报错,本质上大概率是网络配置的几个核心环节没到位,咱们一步步排查解决:
1. 先确认公有子网的路由表配置
公有子网能联网的核心是关联互联网网关(IGW)+ 路由表有默认路由指向IGW。你得检查:
- 两个公有子网是不是都关联到了同一张路由表?这张路由表里必须有一条
0.0.0.0/0 -> igw-xxxx的默认路由(xxxx是你的互联网网关ID) - 别不小心给第二个子网单独配了一张没有IGW路由的路由表,这是最容易踩的坑
2. 检查实例的公网IP分配
就算在公有子网里,实例也不一定自动拿到公网IP,得确认:
- 在你的CloudFormation模板里,EC2实例的属性有没有加
AssociatePublicIpAddress: true? - 或者第二个公有子网的默认配置里,“自动分配公网IP”是不是开启了?(子网详情里的“IPv4公有IP”设置)
如果没开,实例只有私网IP,自然没法通过公网访问,也连不上外网的yum源
3. 安全组规则不能少
安全组是实例的防火墙,必须放开必要的端口和流量:
- 入站规则:允许
0.0.0.0/0访问22端口(SSH)、80端口(Nginx的HTTP);如果用HTTPS还要加443端口 - 出站规则:至少允许
0.0.0.0/0的所有TCP流量(或者至少放开80/443端口,保证能访问yum源和外网)
别只给第一个实例配了正确的安全组,第二个实例漏配了
4. VPC的DNS设置要开启
如果实例能拿到公网IP但还是没法解析yum源的域名,得检查VPC的两个关键设置:
EnableDnsSupport设为true(允许VPC内的实例使用AWS DNS服务器)EnableDnsHostnames设为true(允许实例获取公有DNS hostname)
这两个设置没开的话,实例就算有公网IP也没法正常解析域名,yum自然会报错
关于yum报错的补充
你看到的yum日志:
Contact the upstream for the repository and get them to fix the problem
Reconfigure the base URL/etc.
Disable the repository, so yum won't use it by default
这其实是实例连不上外网的连锁反应——实例没法访问yum仓库的服务器,才会抛出这些错误。只要解决了前面的网络问题,yum的问题基本上会自动消失,不用单独去改yum源配置。
快速排查小技巧
如果还是找不到问题,可以去EC2控制台做这些检查:
- 查看第二个实例的网络接口详情,确认有没有公网IP,关联的路由表和安全组是不是正确
- 用第一个能正常访问的实例ping第二个实例的私网IP,看看子网之间能不能连通,排除VPC内部的连通性问题
内容的提问来源于stack exchange,提问作者Rakesh Sivagouni
相关产品推荐
相关产品推荐

