无需硬编码 IP 的 VPN“终止开关”

无需硬编码 IP 的 VPN“终止开关”

我使用的是流行的 VPN 提供商,并下载了他们的 OpenVPN 配置。这些配置中总共指定了 100 多个不同的服务器 IP。有没有办法配置Ubuntu 22.04 LTS 桌面如何在不手动将所有这些 IP 硬编码到某些防火墙配置的情况下拥有 VPN“终止开关”(阻止所有不通过 VPN 的流量)?例如使用 iptables 或 UFW(简单防火墙)。到目前为止,我看到的所有教程都要求对要连接的服务器的 IP 进行硬编码。如果你想添加或更改 OpenVPN 配置,这会很烦人。

我主要寻找的是:

  1. 没有硬编码 IP(OpenVPN 配置文件本身之外)
  2. 防火墙是持久的,我可以在防火墙仍然开启的情况下重新连接或切换 VPN
  3. 如果 VPN 尚未运行(例如系统重启后),则不会泄露任何流量
  4. 在 VPN 之间切换时不会泄露任何流量,例如使用网络管理器 GUI
  5. 如果 VPN 无法连接,则不会泄露任何流量,例如,如果 OpenVPN 配置中指定的服务器关闭

提供的答案这里看起来很有希望,通过分配 OpenVPN 在系统组下运行。但是答案下的评论说,如果你在防火墙开启时尝试断开连接并重新连接,它不起作用。我还看到了只允许特定网络接口(tun0)的方法,但这些方法似乎也会阻止重新连接。

我看到有人尝试通过允许端口 1194 上的流量来解决这个问题,但这将允许除 OpenVPN 之外的应用程序通过同一端口泄漏流量。是否可以改为使用应用程序专用防火墙仅允许 OpenVPN 的流量,使用以下方法这些

或者,这个答案建议采用一种完全不同的方法:使用网络命名空间而不是防火墙,这看起来也很有希望。但是有没有办法让所有应用程序默认在该命名空间中运行(OpenVPN 除外)?或者相反,在默认命名空间中阻止所有互联网,但将 OpenVPN 放在单独的命名空间中?

基本上,我需要一次性设置“终止开关”,即使我将来更换 VPN 提供商。我想要管理 OpenVPN 配置文件,而不是管理防火墙规则或网络命名空间规则。

相关内容