我们在 GCP 实例上运行了一个 gitlab 服务器。目前,此实例具有映射的互联网 IP 和正确的 DNS 名称。最近,我们希望删除此互联网 IP,并强制所有访问都通过经过身份验证的隧道进行。
对于 GCP 环境中的其他实例来说,这不是问题,但是工程师喜欢直接在本地系统上使用代码,而不是连接到环境。
我们目前正在使用 OS-Login 来提供隧道 ssh 会话以及身份感知代理 (IAP) 隧道进行访问。
然而,我无法理解如何映射隧道和 DNS 名称,以便远程工程师可以继续从他们的本地系统使用 gitlab。
这可能吗?
如果是这样,我应该如何配置 IAP 隧道和 DNS 名称以使其工作?
感谢您的时间。
编辑/澄清:
我想要实现的底线是从 GCP 环境中的 gitlab 服务器中删除互联网 IP,同时不破坏工程师工作站上当前拥有的任何 git 存储库或 GCP 环境内当前存在的任何工具/脚本。
因此,我想要的是这样一种设置:工程师可以坐在家里的工作站上,使用我的 GCP 环境中的 gitlab 服务器,仅使用 OS-Logn 和 IAP-Tunnels 与其通信。
即使 IAP 隧道实际上是本地主机上的端口,此设置也会将服务器称为 gitlab.mydomain.com,因为 GCP 环境中的系统仍然必须在没有 IAP 隧道的情况下使用它。
只是为了好玩,我有 Linux、Windows 工程师和麦金塔电脑。
答案1
使用 TCP 转发会使 DNS 协议变得无用,因为它使用 UDP(而不是 TCP)。
也作为约翰·汉利提到- 这将破坏所有 SSL 证书。
注意:我尚未使用 GitLab 对此进行测试,这会破坏 SSL 证书等项目。我认为更好的方法是拥有一个公共 IP 地址,然后配置 VPC 防火墙规则以仅允许您的 IP 地址访问服务器或设置 VPN,例如 OpenVPN 或 WireGuard。
此外,请记住使用 TCP 转发时的限制:
带宽:IAP 的 TCP 转发功能不适用于批量传输数据。IAP 保留对滥用此服务的用户进行速率限制的权利。
连接长度:IAP 会在 1 小时不活动后自动断开会话。我们建议在您的应用程序中设置逻辑,以便在隧道断开连接时重新建立隧道。
后者不应该是个问题,因为我认为没有人会在工作时让隧道长时间处于不活动状态。
我会考虑 John 的建议,使用 VPN 而不是 TCP 转发。这样您就可以运行任何软件协议,而不会出现问题和带宽速率限制。
您还可以使用 GCP 防火墙规则限制对虚拟机的访问。