我正在运行 VPN,想知道如果 VPN 连接中断会发生什么。
当我运行时,ifconfig
我看到我的默认以太网适配器位于en0
,VPN 位于utun0
。所有流量都通过该接口运行utun0
。
谁定义一切都是通过
utun0
而不是在 上运行en0
?我知道我的 VPN 提供商软件通过一些 DNS 条目来实现这一点,但我不明白整个概念。如果 VPN 连接关闭,则
en0
再次接管。我该如何防止这种情况发生?例如,可以暂时停用该功能吗?en0
或者,为了防止在连接意外中断的情况下泄露 IP 地址,我必须采取哪些步骤?
我对一般概念感兴趣,因此我询问 osx 和 linux。我可能误解了一些基本概念。
答案1
谁规定一切都通过 utun0 而不是 en0 运行?我知道我的 VPN 提供商软件通过一些 DNS 条目实现了这一点,但我不明白整个概念。
这些就是路由表。它们基本上定义了哪个网关将带您进入哪个网络。在 OS X 上,使用内置守护进程的 L2TP 和 PPTP VPN 下racoon
有一个System Preferences > Network > (VPN interface) > Advanced > Options
名为“通过 VPN 连接发送所有流量”的选项,可以为您执行此操作。
您可以ipconfig route
在 Linux 和 OS X 上使用。
如果 VPN 连接关闭,en0 将再次接管。我该如何防止这种情况发生?例如,可以暂时停用 en0 还是我必须采取哪些步骤才能防止在连接意外中断时 IP 地址泄露?
您可以挂接在网络配置发生变化时触发的某些操作(当 VPN 失败或接口消失时)。在 OS X 上,您可以创建一个 launchd 守护进程,在该事件发生时运行脚本。该脚本应尝试恢复 VPN,否则会中断互联网。这是一个我在 github 上找到的示例要点至于如何在 OS X 上执行此操作。应该是在 Linux 上分配接口“关闭”脚本或直接在 OpenVPN 中执行此操作的方法。
作为一种可能更具弹性的解决方案,您可以制定一些防火墙规则以仅允许通过 VPN 进行通信,但 VPN 本身除外,因为它必须从您的实际接口出去。
如果非常担心泄漏,我相信 VPN 软件供应商会制作一个驱动程序,在 OS X 上更加强健地执行此操作,以确保即使不通过 VPN,也不会有数据包泄露。