从外部安全地访问 docker 容器而不暴露它
securely access docker container from the outside without exposing it
我目前正在设置一个 docker 群模式集群,其中包含多个节点和堆栈 运行 在所述节点上。
节点的唯一入口点是端口 80、443(前端代理)和 22 (ssh)。我所有的容器都与外部隔离并连接到 docker 覆盖网络(节点之间的私有 vlan)以进行容器间通信。只要我不需要从外部访问服务,它就很好用。
我目前的困境是如何从远程工作站安全地管理我的 swarm 模式集群上的 mysql 数据库 运行,而不会将 3306 端口暴露到 Internet。理想情况下,我希望能够简单地将 container/service 名称键入 Workbench 以到达所需的容器,而不必手动找出 ip。不允许通过 SSH 访问终端计算机。
到目前为止,我的领导是在我的集群上设置一个 openvpn 服务器,它可以访问我希望从外部访问的所有容器网络,并在我的工作站上登录到这个 vpn,但我不确定那是否是最佳方法
您如何在不暴露服务的情况下安全地远程访问您的服务?
一种方便的方法是 VPN。但是您需要公开您的服务,然后在 gateway/node 防火墙上禁止从互联网到内部访问。如果您正在进行目标 NAT,请不要发布内部服务(如 mysql)。
然后您可以为指向集群中所有节点的每个服务分配一个内部 DNS 名称,因此无论容器是哪个节点 运行 您都可以连接到 DNS 名称。这样您只需连接您的 VPN(这会将内部 DNS 设置添加到您的工作站)并将 workbench 连接到 mysql 或任何其他内部应用程序。
我目前正在设置一个 docker 群模式集群,其中包含多个节点和堆栈 运行 在所述节点上。
节点的唯一入口点是端口 80、443(前端代理)和 22 (ssh)。我所有的容器都与外部隔离并连接到 docker 覆盖网络(节点之间的私有 vlan)以进行容器间通信。只要我不需要从外部访问服务,它就很好用。
我目前的困境是如何从远程工作站安全地管理我的 swarm 模式集群上的 mysql 数据库 运行,而不会将 3306 端口暴露到 Internet。理想情况下,我希望能够简单地将 container/service 名称键入 Workbench 以到达所需的容器,而不必手动找出 ip。不允许通过 SSH 访问终端计算机。
到目前为止,我的领导是在我的集群上设置一个 openvpn 服务器,它可以访问我希望从外部访问的所有容器网络,并在我的工作站上登录到这个 vpn,但我不确定那是否是最佳方法
您如何在不暴露服务的情况下安全地远程访问您的服务?
一种方便的方法是 VPN。但是您需要公开您的服务,然后在 gateway/node 防火墙上禁止从互联网到内部访问。如果您正在进行目标 NAT,请不要发布内部服务(如 mysql)。
然后您可以为指向集群中所有节点的每个服务分配一个内部 DNS 名称,因此无论容器是哪个节点 运行 您都可以连接到 DNS 名称。这样您只需连接您的 VPN(这会将内部 DNS 设置添加到您的工作站)并将 workbench 连接到 mysql 或任何其他内部应用程序。