Windows系统SSH无法通过IPv6地址连接AWS EC2实例

源:https://blog.ximinghui.org/68d42d0a/index.html

0. SSH无法通过IPv6地址连接EC2实例

表现为 ssh -i "D:/我的密钥.pem" root@2406:da1e:78d:e00:8634:fdd4:b5a0:aef4 连接超时。

1. 使用tracert跟踪IPv6地址

说明:我的EC2实例的IPv6地址是2406:da1e:78d:e00:8634:fdd4:b5a0:aef4

C:\Users\ximinghui>tracert -6 2406:da1e:78d:e00:8634:fdd4:b5a0:aef4

Tracing route to 2406:da1e:78d:e00:8634:fdd4:b5a0:aef4 over a maximum of 30 hops

1     3 ms     4 ms     3 ms  2409:897c:56a:62d2::60
2    24 ms    24 ms    40 ms  fd00:a0a:25::ffff
3    18 ms    24 ms    23 ms  2409:807c:2900:4201::100:702
4    19 ms    30 ms    23 ms  2409:807c:2800:12c0::a
5    44 ms    27 ms    32 ms  2409:807c:2800:2c0::8
6    21 ms    26 ms    37 ms  2409:807c:0:101::506
7    24 ms    38 ms    22 ms  2409:8080:0:2:2403:2471::
8    91 ms    77 ms    74 ms  2409:8080:0:1:105:2403::
9    84 ms   102 ms    91 ms  2409:8080:0:1:105:1c2:0:1
10    77 ms    76 ms    90 ms  2409:8080:0:1:1c2:1f2:2:1
11   109 ms   116 ms   111 ms  2409:8080:0:4:1f2:193:1:1
12   129 ms   114 ms   123 ms  2402:4f00:100::2fa
13   126 ms   116 ms   126 ms  2402:4f00:100::245
14   114 ms   128 ms   116 ms  2402:4f00:100::706
15   131 ms   127 ms   119 ms  2620:107:4008:bbef::1
16   113 ms   121 ms   116 ms  2620:107:4000:da10::f003:c80d
17   130 ms   109 ms   121 ms  2620:107:4000:cfff::f20a:8a61
18   116 ms   120 ms   111 ms  2620:107:4000:add0::f000:f002
19   115 ms   116 ms   114 ms  2620:107:4000:cfff::f202:d931
20     *        *        *     Request timed out.
21     *        *        *     Request timed out.
22     *        *        *     Request timed out.

从 traceroute 结果来看,数据包能够通过多个路由节点,但在第 19 跳之后就丢失了。这个路径显示:

  1. 路由经过了:
  • 本地 ISP 网络 (2409:897c...)
  • 中国电信骨干网 (2409:807c...)
  • AWS 的网络 (2620:107:4000...)
  1. 在 AWS 网络内部(2620:107:4000...)丢包,可能的原因:
  • AWS 安全组阻止了 ICMP/ICMPv6 流量
  • AWS 网络 ACL 设置
  • 实例防火墙规则

2. 检查AWS的相关配置

在 AWS 控制台中检查 IPv6 配置的步骤:

a) 检查实例网络接口:

  • 登录 AWS 控制台
  • 进入 EC2 服务
  • 选择您的实例
  • 点击"网络"标签
  • 查看网络接口部分,确认:

    • IPv6 地址是否正确显示
    • 是否与您尝试连接的地址匹配

b) 检查 VPC 配置:

  • 进入 VPC 服务
  • 选择您的 VPC
  • 检查详细信息:

    • IPv6 CIDR 是否已分配
    • 是否启用了 IPv6

c) 检查子网配置:

  • 在 VPC 服务中
  • 选择"子网"
  • 找到实例所在的子网
  • 确认:

    • 子网是否有 IPv6 CIDR 块
    • 自动分配 IPv6 是否启用

d) 检查路由表:

  • 在 VPC 服务中
  • 选择"路由表"
  • 找到关联到您子网的路由表
  • 确认:

    • 是否有 IPv6 默认路由 (::/0)
    • IPv6 路由是否指向互联网网关

3. 检查AWS的相关配置

最终发现问题处在路由表配置。

原本 ::/0 指向的是 eigw-0cb6caac69fc2e667 ,这是AWS的IPv6专用互联网网关, AWS VPC 中的 IPv6 流量默认使用 Egress-only Internet Gateway (eigw),这种网关只允许从内到外的单向流量。

将其修改为 igw-1350b97a , 表示普通的Internet Gateway (igw)后。它允许双向流量,这样外部网络可以通过IPv6访问EC2实例。

再次尝试ssh登录,问题解决。


Xi_Minghui
1 声望0 粉丝

一枚普普通通的程序猿