AWS 私有 NAT

网络工程 纳特 aws
2022-02-26 04:48:35

这是我在两个单独的 VPC 中有两个私有子网的场景。
在范围内:

  • 10.0.0.0/16
  • 10.1.0.0/16

10.1 子网连接到客户 VPN 的 VPN 网关,一切正常。客户已允许 10.1.0.0/16 地址空间上的所有 IP 访问其网络上的盒子,这一切都很好。

我想要做的是有一个位于 10.0.0.0/16 子网上的盒子与客户的网络对话,并让它看起来像是来自 10.1.0.0/16 地址范围的客户。连接将使用 sftp。

我可以使用 VPC 对等互连将两个 VPC 连接在一起,效果很好。问题是 10.0.0.0/16 范围内的盒子由于路由器上的规则而无法与客户的网络通信。

是否可以在我们的 10.1.0.0 子网上设置一个私有 NAT 框,并让 10.0.0.0 子网上的框使用 NAT 框进行连接,以便连接正常工作(因为它会向客户提出请求来自 10.1.0.0/16 地址空间中的一个盒子)?或者这个问题有其他解决方案吗?

2个回答

我发现我的问题的解决方案是使用简单的配置在 10.1 子网中设置一个 nginx 框:

worker_processes auto;

error_log /var/log/nginx/error.log info;

events {
    worker_connections  1024;
}

stream {
    upstream external-vpn {
       server 22.11.11.11:9022;
    }

    server {
        listen 9022;
        proxy_connect_timeout 60s;
        proxy_timeout 30s;
        proxy_pass external-vpn;
    }

}

有了这个并在 ecs 集群上的 docker 容器中运行,我可以通过 sftp 上的 nginx 框成功连接到外部 vpn 框。

我不知道是否有更好的特定于 AWS 的方法来执行此操作,但使用隧道肯定可以做到这一点。隧道将数据包从客户端盒传送到 NAT 盒。然后 NAT 框执行 NAT 并释放数据包。