我已经设置了到通信提供商的站点到站点 VPN(用于移动数据连接)。
它们的子网为 192.168.0.0/21。它通过 vgw(虚拟网关)连接到子网 10.0.1.0/24。该子网通过 igw(互联网网关)连接到互联网。
子网的路由表现在如下所示:
10.0.0.0/16 local
0.0.0.0/0 igw-xxx
192.168.0.0/21 vgw-xxx
到目前为止,已完成以下工作:
- 从 EC2 实例到互联网的连接,反之亦然
- 从 EC2 实例到移动终端设备的连接,反之亦然
现在我需要允许终端设备访问互联网。
我认为需要有一个 NAT 网关。所以我在子网中添加了一个 NAT 网关,并用 nat 替换了 igw。但这导致无法再与实例建立连接,因为这只会路由出站流量(我后来在手册中读到过)。
那么我还有什么其他选择?如何配置终端设备(linux)以使用此 nat 网关。
答案1
VPC 的 VPN 连接不是设计来以这种方式工作的。
您无法通过 VPC 对等连接、站点到站点 VPN 连接或 AWS Direct Connect 将流量路由到 NAT 网关。这些连接另一端的资源无法使用 NAT 网关。
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html
VPN 连接另一端的任何事物能够传输 VPC 并访问 Internet 的唯一方法是实施没有边到边流量的解决方案。
一个例子是 Squid HTTP 代理服务器,配置在客户端的 HTTP 代理设置上。使用 HTTP 代理,客户端与代理建立连接(在 EC2 实例上),并请求与目标建立第二个连接。这是两个独立的 TCP 连接 - VPN 另一端的设备连接到 EC2 实例,EC2 实例连接到 Internet。这两个独立的连接是它起作用的原因。无法将流量直接从 VPN 连接路由到 VPC 中的任何其他类型的网关设备 - 只能路由到明确支持它的 EC2 目标和其他基于 ENI 的服务。