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

AWS VPC内子网间EC2无法SSH连通问题排查求助

问题分析与解决方案

首先,你完全不需要在subnet-0和subnet-1之间添加额外路由。看你的路由表信息,所有子网都关联了rtb-08371ccc1f79ebfe6,这个路由表里已经有192.170.0.0/16的local路由——这条路由就是负责同VPC内所有子网之间的流量互通的,所以路由层面是完全没问题的。

你能通过Transit Gateway从外部VPC访问这两台实例,但同VPC内互连失败,说明问题肯定出在安全组、网络ACL(NACL)或者实例本地防火墙上,咱们一步步排查:

1. 先查安全组(最常见的坑)

安全组是实例级别的防火墙,默认只允许同组内的实例访问:

  • 打开instance-1的安全组配置,看入站规则里有没有允许192.170.80.0/26(subnet-1的CIDR)的TCP 22端口?或者干脆允许整个VPC的CIDR192.170.0.0/16的22端口?
  • 同样检查instance-2的安全组,入站规则要允许192.170.0.0/26(subnet-0的CIDR)的TCP 22端口。

要是两个实例不在同一个安全组,一定要手动加这条规则,不然默认是不通的。

2. 再查子网的网络ACL(NACL)

NACL是子网级别的无状态防火墙,必须双向流量都放行:

  • 分别查看subnet-0和subnet-1的NACL:
    • 入站规则:要允许来自对方子网CIDR的TCP 22端口(目的端口填22)
    • 出站规则:要允许向对方子网CIDR的TCP 1024-65535端口(因为SSH的返回流量用的是随机高端口,得放行这些端口)

注意:NACL默认是允许所有流量的,但如果你自定义过规则,一定要确保没有拒绝相关流量,而且规则的优先级(数字越小优先级越高)不要搞反了。

3. 最后查实例本地防火墙

既然你能通过TGW登录实例,那就登录进去检查本地防火墙:

  • Linux实例的话,执行iptables -L或者firewall-cmd --list-all,看看有没有规则把对方子网的SSH连接给挡住了。
  • 如果是Windows实例,检查Windows防火墙的入站规则,确认有没有允许SSH(或RDP)流量。

关于VPC Flow Log没日志的问题

Flow Log没日志大概率是配置或者权限的问题:

  • 先确认Flow Log是不是关联到了正确的VPC或子网?日志目标选的是CloudWatch Logs吗?对应的IAM角色有没有logs:CreateLogStream和logs:PutLogEvents这两个权限?要是权限不够,日志根本写不进去。
  • 然后等几分钟,Flow Log不是实时出日志的,一般要等10-15分钟才能在CloudWatch里看到。
  • 还有过滤规则,要是你设置的是reject,那只会记录被拒绝的流量;设置accept就只记录允许的。建议改成all,这样所有流量都能被捕获,方便排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:32:46