AWS ECS 容器中的 WireGuard 默认路由

AWS ECS 容器中的 WireGuard 默认路由

我在 AWS ECS 实例中有一个容器。我想从该容器建立到 WireGuard 服务器的连接。

连接本身可以工作,但我无法通过接口路由来自该容器的所有流量wg0

如果我只是像 WireGuard 文档所说的那样设置默认路由,我就会与 ECS 实例本身失去连接(通过会话管理器连接):https://www.wireguard.com/netns/#the-classic-solutions

我尝试了所有这些方法,但没有一个是可行的。我认为它们都与 Docker 的路由以及 Docker 在此处进行联网的方式相冲突。

我需要建立此连接的原因是为了对 WireGuard 服务器进行压力测试并对其进行 curl 。

我考虑过的选项:

  • 为每个网站添加单独的路由,以确保它通过接口wg0ip route add $IP via $INET)——在这种情况下,我必须先从 DNS 名称解析 IP。这并不难,但需要做一些额外的工作。
  • wg0通过describer 等接口为特定用户路由流量这里。这也没有产生任何结果,但仍在探索此选项
  • 理想情况下,让默认路由在此环境中工作,但也绕过 VPN 之外的所有 ECS IP。是否可以检测 ECS 连接工作所需的所有端点并绕过它们?我知道如何进行绕过,但不知道如何检测所有所需的 IP。

这里还有其他我遗漏的解决方案吗?任何指示都会有很大帮助。

提前致谢!

答案1

问题在于容器作为 AWS Batch 中数组作业的一部分运行。AWS Batch 强制将networkMode容器的设置为host,这是导致问题的原因。

无法运行任何会干扰 AWS Batch 网络的东西——阵列作业。结果,您只会更改实例网络,这显然会导致竞争条件并导致许多意外问题。不要这样做。

另一种方法是使用Multi-node parallel jobsAWS Batch 的功能,该功能显然允许您更改networkMode实例的。

相关内容