我在 AWS 中设置的多区域网络中的服务器之间连接时遇到问题,因为并非所有服务器都可以从网络中的任何点访问。
我通过 openvpn 隧道将 eu-central-1 中的 VPC (A) 连接到 eu-southeast-1 中的另一个 (B),第二个 VPC 通过 ClassicLink 连接到 EC2-Classic (EC2) 节点。此连接是通过几个对等服务器建立的,VPC A 中的对等服务器 A 和 VPC B 中的对等服务器 b。用户通过 openvpn 连接到 VPC A,并通过 openvpn 服务器 vpnserver-a。
网络图是这样的:
+---------+ +---------+ +---------+ +----+
|user | |VPC A | |VPC B | |EC2 |
|172.20/16+---+172.29/16+---+172.31/16+---+10/8|
+---------+ +---------+ +---------+ +----+
VPN VPN ClassicLink
问题是我无法建立任何这样的联系:
- 用户到 EC2 中的任何节点
- VPC A 中的任何节点到 EC2 中的任何节点
- EC2 中的任何节点到 VPC A 中的任何节点
从用户到 VPC A 和 B 以及 VPC A 和 B 之间的连接工作正常。
我怀疑路由有问题,但我一直无法解决。
路由设置如下:
- vpnserver-a 向用户发布路由 172.29/16、172.31/16 和 10/8(openvpn 配置文件)
- peering-a 将路由 172.31/16 和 10/8 发布到 VPC A(openvpn 配置文件)
- peering-b 将路由 172.29/16 和 172.20/16 发布到 VPC B(openvpn 配置文件)
- VPC A 中的路由表将 172.31/16 和 10/8 路由到对等互连-a(AWS VPC 子网路由表)
- VPC B 中的路由表将 172.29/16 和 172.20/16 路由到 peering-b(AWS VPC 子网路由表)
网络 ACL 对这些子网之间的所有流量开放。安全组也设置为接受连接。
我使用 tcpdump 进行了一些(基本)数据包检查,以尝试了解路由是否适用于以下结果: - 尝试从 VPC A 中的 node-a 连接到 EC2 中的 node-ec2,我可以看到数据包通过 peering-a和 peering-b,但没有到达 node-ec2 - 尝试从 node-ec2 连接到 node-a,我什至看不到到达 peering-b 的数据包
所以我怀疑 ClassicLink 中的路由涉及我不知道的其他配置。
如何设置丢失的路线?这甚至可能吗?
谢谢!
ClassicLink 不支持访问 VPC 之外的任何内容。
您注意到没有适用于来自ClassicLink 的流量的路由表——从那里返回到此 VPC 中您的实例的路由是隐式的,因此无法将外部流量传送回您的“对等-b”实例。
严格来说,下面并没有具体说它不行,因为他们所指的VPN连接是VPC的Hardware VPN服务提供的VPN连接,而不是你用自己的实例设计的连接......
...但是,影响是存在的,而且 ClassicLink 机器没有可配置的 VPC 路由表来处理其流向 VPC 的流量这一事实意味着您在技术上甚至没有办法尝试配置您的 VPC 工作这种情况需要的方式。