我在 AWS VPC 中的双栈 AWS EC2 实例(Ubuntu 18)上运行 openvpn。
连接到 VPN 软件和隧道 IPv6 似乎工作正常;我可以建立 VPN 链接并在 VPN 子网周围 ping6,没有任何问题。
现在我想通过 VPN 路由整个子网,但我无法让 AWS 将数据包路由到实例。
我的 VPC 被分配了 2600:1f18:6655:5c00::/56
我的实例位于 AWS 子网 ...:5c01::/64 中。
我想要将 ...:5c02::/64 路由到 VPN。
sysctl net.ipv6.conf.all.forwarding=1
在实例上设置- 实例及其接口上的源/目标地址检查均被禁用
- VPC 的网络 ACL 和实例的安全组都允许所有流量
- VPC 的主路由表包含指向实例接口的 /56
我可以从实例 ping6 到公共互联网,没有问题。
当我尝试从 VPN 上的地址 ping6 时,tcpdump 显示在实例的 AWS 接口上传输的请求,但没有返回任何答复。
我尝试添加 ...:5c02::/64 作为 AWS 子网,并在主路由表中放置一条将该子网指向实例的路由,但没有效果。
知道哪里出了问题吗?非常感谢!
答案1
我不是 100% 确定,但我开始认为这是不可能的。
AWS 设置了限制(见这里) 每个接口允许的 IP 地址数量(v4 和 v6)。
如果您可以将整个子网路由到一个接口,这将是打破这些限制的简单方法。
答案2
经过大量的研究和努力(因为我对这个主题还不熟悉),我设法创建了类似于您提到的东西(使用tunnelbroker.net提供的IPv6隧道的双栈VPN(IPv6 + IPv4))并按照本教程:
https://encomhat.com/2021/01/wireguard-he-tunnel/
还有一些其他设置需要在 AWS 面板/实例上进行,例如为您的服务器生成 IPv6 CIDR 块、为其分配 IPv6 地址等。我希望它能帮助很多人。我认为下面的内容也可以提供帮助:
https://4sysops.com/archives/assign-an-ipv6-address-to-an-ec2-instance-dual-stack/