VPN 到特定 Docker 网络

VPN 到特定 Docker 网络

我的目标是找到一种解决方案,允许我在 VPS 上公开托管特定端口和服务,同时保留可能与所述公共服务交互的其他管理 UI。

到目前为止,我的解决方案是将公开的 docker 端口绑定到主机本地环回地址,并使用 SSH 隧道连接回它们。这有工作过尽管我可能很快就会遇到端口冲突(并且我的 ssh 命令变得越来越长)。

我想创建一个隔离的 Docker 网络,在其中我可以利用分割隧道 VPN 连接到许多管理 UI,同时使用反向代理将公共流量引导到特定的 Docker 端口。理想情况下,我想在 docker 容器内使用 Wiregaurd,并利用 Wireguard-UI 或 Firezone 等工具来帮助简化客户端配置。

这是预期用途的示例图: 在此输入图像描述

使这一切变得复杂的是 Docker 与 iptables 交互的方式。如果有人有可以实现此目的的通用步骤指南,请告诉我。

我也考虑过一些替代方案,例如 Authelia,但如果可以的话,我宁愿不允许通过普通网络访问配置接口。

答案1

终于得到了一个可行的解决方案。显然 UFW 也喜欢在不同网络之间路由时妨碍。

解决方案:

  1. 直接在VPS上安装WireGuard并进行配置wiregaurd-ui,添加一个额外的环境变量来绑定到 VPS 的本地主机(ssh 将端口转发回我自己的机器。我不打算让它经常运行)。
  2. 使用以下 docker 网络子网的适当“允许的 IP”字段配置客户端。
  3. 创建一个新的 docker 网络并启动网络多功能工具连接到网络的容器。未将任何端口绑定到主机。配备内置 Apache 服务器和大量网络测试工具。
  4. 确保已启用 ipv4 转发虚拟专用服务器超细纤维束(启用后重新启动VPS)。
  5. 设置 UFW 规则以允许端口转发ufw route allow in on <wg0> out on <docker bridge interface>和重新加载 ufw。
  6. exec 到 Multitool 容器中并启动 tcpdump 端口 80。在我的本地计算机上启动wireguard 接口并卷曲到容器内部 IP 地址以验证连接。

相关内容