通过 wireguard 路由容器流量的正确方法,不会泄漏,但需要 LAN 连接的 UI 访问

通过 wireguard 路由容器流量的正确方法,不会泄漏,但需要 LAN 连接的 UI 访问

我目前正在尝试找出正确的方法来路由特定的“所有”流量(无根) 通过 Wireguard 保护 docker 容器,一方面防止任何泄漏(如果连接/Wireguard 失败 - 阻止任何互联网访问),另一方面允许 LAN 连接(192.168.0.0/16)访问容器服务的 UI。

我首先尝试的是将流量路由到linuxserver/wireguard带有终止开关的容器——这有一些缺点:

  • 如果wg-quick配置有缺陷,wireguard 连接从未建立(+从未添加 killswitch IPTables 规则),导致所有流量完全泄漏。
  • 任何服务的本地访问都只能在容器内部进行

为了允许本地流量,可以修改 IPTables 规则并添加路由规则(参见例如这里),但遗憾的是,它对我来说不起作用。此外,我还测试了 rnd1783 的程序他最近在 Reddit 上提问这似乎有效,但像他一样,我不确定这是否正确地解决了我的意图(注意单一答案由 rcN9 提供)。

rcN9 似乎建议使用网络命名空间(参见例如这里或者这里),但我不确定在半根 (无根 docker/podman,不想使用 root,但如果没有其他办法的话会这样做) 和容器“风格”环境中是否可以实现这一点。

对我的意图来说最好的解决方案是什么:

  • 无根容器(rootless docker、podman)
  • 防止任何泄漏
  • 允许 LAN 访问(到 UI)

这应该独立于任何发行版,但是为了安全起见,我会提到它:寻找一个适用于 Debian 的解决方案。

编辑1

  • 如果这对我有帮助的话,我可以使用辅助(物理)网络接口。

相关内容