使用 Tailscale 在企业网络上访问 ECS 任务服务

问题描述 投票:0回答:1

我有一个 MLflow 服务器作为应用程序负载均衡器后面的 ECS 任务运行,我希望我们的 Tailscale 网络上的其他用户可以访问该服务器。我已经设置了一个 Tailscale 子网路由器,它通告 ECS 任务部署在其中的私有 CIDR 范围,并且我配置了一个安全组,该安全组应该只允许任务接受来自该子网路由器的流量。

我面临的问题是我现在想通过指向负载均衡器的方便的 DNS 名称将此服务公开给其他用户。使用具有公共托管区域的 Route 53 只会为我提供公共 IP,而不是私有 IP(因此子网路由器不会公布)。使用 Route 53 私有托管区域只会向 VPC 中的其他实体公开 DNS 记录,因此不会向 Tailnet 上的用户计算机公开。

在理想的情况下,我只想使用 Tailscale 的 MagicDNS 为服务负载均衡器分配一个名称,并让该负载均衡器返回内部公布的 IP 地址(或者更好的是,为 ECS 任务分配 Tailnet 的 IP),以便我什至不需要做这个广告,但我不确定短暂的 ECS 任务是否支持)。

我没有大量接触这种网络配置,并且我很乐意接受有关替代方法的建议。

amazon-web-services dns amazon-ecs tailscale
1个回答
0
投票

您可以使用私有托管区域来完成此操作,但您需要将 DNS 查询发送到 AWS 私有 DNS 服务器。这并不是太难——请继续阅读示例。

1。通过私人托管区域轻松记住的名称

当前形式的 MagicDNS 将无法为您的负载均衡器提供名称记录,但私有托管区域可以像您提到的那样提供名称记录。

假设您创建一个名为

company.internal
的私有托管区域。在
company.internal
中,选择一个名称并从该名称向 ALB 创建一条别名 A 记录。我们以
mlflow
为例。您最终应该得到一条为
mlflow.company.internal
启用“别名”的 A 记录,该记录路由/解析到正确区域中所需的 ALB。现在,您只需要客户端在尝试解析 company.internal 名称时
使用
AWS 私有 DNS 服务器即可。

2。私有DNS解析

使用 Route 53 私有托管区域只会向 VPC 中的其他实体公开 DNS 记录,因此不会向 Tailnet 上的用户计算机公开。

我们可以分两步完成:

首先,确保您的子网路由器公布 AWS VPC DNS 服务器 IP 地址。 AWS VPC DNS 服务器的 IP 地址是您的 VPC CIDR + 2 地址。对于

172.0.0.0/16
VPC CIDR,IP 将为
172.0.0.2
。确保您的 Tailscale ACL 允许来自您的客户端的流量到达此范围。

如果您正在寻找非常适合生产的东西,请注意,AWS 现在不鼓励使用此 VPC DNS 服务器,并推荐 Route53 解析器入站端点。设置入站解析器相当简单,如果您决定这样做,那么它就能很好地完成您正在做的事情 — 您只需从两个(高可用性)中选择一个 DNS 服务器 IP 即可使用作为 Tailscale 中的 DNS 服务器。

其次,这就是 Tailscale DNS 配置中的拆分 DNS 派上用场的地方。您现在将 company.internal

 域查询路由到 AWS VPC DNS 服务器,该服务器将使用可通过子网路由器访问的私有地址进行解析。

在 Tailscale 管理 DNS 配置中添加自定义名称服务器。输入 AWS DNS VPC 服务器 IP 地址,该地址应公布并允许所有连接的 tailnet 节点使用 ACL。选择“限制到域”并输入

company.internal

。这将启用拆分 DNS。您的尾网节点对 
company.internal
 域中的名称的查询现在将由您的客户端发送到 AWS VPC DNS 服务器,该服务器将使用私有地址进行解析。因此,生成的连接将使用私有地址,并通过子网路由器通过隧道到达您的 ALB。

Tailscale 中的 DNS 配置

为什么需要拆分 DNS?

Tailscale 名称服务器

© www.soinside.com 2019 - 2024. All rights reserved.