我的目标是找到一种解决方案,允许我在 VPS 上公开托管特定端口和服务,同时保留可能与所述公共服务交互的其他管理 UI。
到目前为止,我的解决方案是将公开的 docker 端口绑定到主机本地环回地址,并使用 SSH 隧道连接回它们。这有工作过尽管我可能很快就会遇到端口冲突(并且我的 ssh 命令变得越来越长)。
我想创建一个隔离的 Docker 网络,在其中我可以利用分割隧道 VPN 连接到许多管理 UI,同时使用反向代理将公共流量引导到特定的 Docker 端口。理想情况下,我想在 docker 容器内使用 Wiregaurd,并利用 Wireguard-UI 或 Firezone 等工具来帮助简化客户端配置。
使这一切变得复杂的是 Docker 与 iptables 交互的方式。如果有人有可以实现此目的的通用步骤指南,请告诉我。
我也考虑过一些替代方案,例如 Authelia,但如果可以的话,我宁愿不允许通过普通网络访问配置接口。
答案1
终于得到了一个可行的解决方案。显然 UFW 也喜欢在不同网络之间路由时妨碍。
解决方案:
- 直接在VPS上安装WireGuard并进行配置wiregaurd-ui,添加一个额外的环境变量来绑定到 VPS 的本地主机(ssh 将端口转发回我自己的机器。我不打算让它经常运行)。
- 使用以下 docker 网络子网的适当“允许的 IP”字段配置客户端。
- 创建一个新的 docker 网络并启动网络多功能工具连接到网络的容器。未将任何端口绑定到主机。配备内置 Apache 服务器和大量网络测试工具。
- 确保已启用 ipv4 转发虚拟专用服务器和超细纤维束(启用后重新启动VPS)。
- 设置 UFW 规则以允许端口转发
ufw route allow in on <wg0> out on <docker bridge interface>
和重新加载 ufw。 - exec 到 Multitool 容器中并启动 tcpdump 端口 80。在我的本地计算机上启动wireguard 接口并卷曲到容器内部 IP 地址以验证连接。