OpenVPN persist-tun 选项-有什么意义?

OpenVPN persist-tun 选项-有什么意义?

根据OpenVPN 2 手册

persist-tun 和 persist-key 选项用于确保在底层网络中断时自动恢复连接。使用用户 nobody 和组 nobody(或组 nogroup)时,这些选项是必需的。

这在实践中意味着什么?

在服务器端有一个 tun0 设备。OpenVPN 进程以 nobody 和 nogroup 身份运行。到目前为止一切正常。但是 persist-tun 选项到底有什么用呢?无论我是否连接,相同的 tun0 设备仍然存在。

来自另一个问题:

删除 persist-tun 选项。如果没有该选项,VPN 链接将断开,tun 设备将关闭并被删除。当然,问题是删除该选项意味着您需要以 root 而不是 nobody 身份运行 VPN 守护程序。因为作为 nobody 帐户,OpenVPN 在重新建立连接时将无法创建新的 tun 设备。

删除 persist-tun 选项后,tun 设备仍然存在,但没有连接的客户端。

请详细解释一下 persist-tun、persist-key、user nobody、group nogroup 和 keepalive 选项所涉及的过程。

答案1

使用的原因有 3 个persist-tun

1- 您需要 root 权限才能管理接口。如果 OpenVPN 更改为 nobody/nogroup,则无法添加/删除接口。因此,有必要保留 tun 接口。

2- 如果删除了 tun 接口,您将丢失指向它的路由。这意味着您的流量将以未加密的方式通过默认路由传输。这可能是您不希望发生的事情。

3- 如果接口未被移除(持续存在),则不会执行 up/down 脚本。手册中写道:

–persist-tun 不要关闭并重新打开TUN / TAP设备或通过SIGUSR1或–ping-restart重新启动运行上/下脚本。SIGUSR1是一种类似于SIGHUP的重启信号,但它提供对重置选项的更细粒度的控制。

类似解释也出现在2.4 手册为了persist-key

–persist-key 不通过 SIGUSR1 或 –ping-restart 重新读取密钥文件。此选项可与 –user nobody 结合使用,以允许由 SIGUSR1 信号触发的重新启动。通常,如果您在 OpenVPN 中放弃 root 权限,则守护进程无法重新启动,因为它现在无法重新读取受保护的密钥文件。

此选项通过在 SIGUSR1 重置期间保留密钥来解决问题,因此无需重新读取它们。

答案2

我认为这更像是客户端设置。如果客户端断开连接,在某些情况下它会删除隧道,然后重新创建隧道。我不确定它在服务器端是否能做任何有用的事情。因为服务器端基本上一直处于运行状态。

相关内容