我们当前的设置是:
Client -> ALB -> Target Group -> auto-scaled instances
我们希望通过 VPN 访问来“隐藏”一些 URL,例如:
Client -> VPN -> ALB -> Target Group -> auto-scaled instances
对于具有静态 IP 地址的实例,可以从 VPN 实例的安全组配置对端口的安全组访问。但是我们的 VPN 设置为仅路由内部流量而不路由互联网流量,因此它不会路由必要的 URL。
URL 例如为:“https://www.something.com/admin“
我们的一个想法是使用自定义端口:“https://www.something:8099/admin“,然后在 ALB 安全组中将该端口配置为只能从 VPN 实例的安全组访问。但这仍然不起作用,因为 VPN 不会路由互联网流量。
我尝试过更改 VPN(openVPN 访问服务器)配置,但没有成功。即使我将 VPN 配置为路由所有互联网流量,它仍然不起作用。
我在网上找到的有关该主题的每一份资料都建议更改 VPN 配置以将域路由到特定的 IP。
有没有办法实现这一点而不必对 IP 地址进行硬编码?显然,我无法对内部 ALB IP 进行硬编码,因为它一直在变化,我也无法对最终实例流量进行硬编码,因为它是自动扩展的并且也一直在变化。
答案1
通过向 DNS 服务器发送查询,域名可以解析为 IP 地址。如果我理解正确的话,当人们使用 VPN 时,您希望域名解析为内部 IP 地址。
这可以通过实施您自己的 DNS 服务器并告诉您的 VPN 客户端在通过 VPN 连接时使用该 DNS 服务器来实现。在 DNS 服务器中,您将设置区域something.com
,在其中为指向您要使用的内部 IP 地址的域/子域添加 A 记录。
否则,该 DNS 服务器可以充当普通的递归 DNS 解析器。
答案2
我能想到的一个解决方案是使用两个记录集,如www.example.com
和admin.example.com
。
www.example.com
--> Public ALB(Open to internet)
--> Target Group (other then /admin)
->auto-scaled instances
在此附加另一个转发/admin
到 404 或错误的目标组。
admin.example.com
--> Internal ALB(Open to VPN)
--> Target Group (/admin)
-->autoscaled instances
如果在 Route53 中管理区域/记录,AWS 支持拆分域。