OpenVPN 指南

在 Ubuntu 上安装 OpenVPN 客户端:执行前检查本地 client.conf 和 login.txt

一篇面向实操的说明,讲清楚如何使用 install_openvpn_client_ubuntu.sh 在 Ubuntu 上安装 OpenVPN、检查当前目录中的 client.conf 和 login.txt,并启用 openvpn-client@client 服务。

阅读约 6 分钟 · 2026-03-24

这个脚本在安装前会先检查什么

install_openvpn_client_ubuntu.sh 面向 Ubuntu 20.04、22.04 和 24.04 LTS,适合使用用户名密码认证方式的 OpenVPN 客户端场景。

在真正安装之前,它会先检查当前工作目录里是否存在 client.conf 和 login.txt。只要这两个文件缺一个,脚本就会直接终止,避免把系统安装到一半却没有客户端配置可用。

如何准备本地 client.conf 和 login.txt

把 client.conf 和 login.txt 放在你准备执行 helper.sh 命令的同一个目录里。脚本会把它们复制到 /etc/openvpn/client/,然后启用对应的 systemd 客户端服务。

如果你走的是用户名密码认证方式,那么 client.conf 里应该已经包含 CA 证书内容,并写好 auth-user-pass login.txt 这一行。

  • ./client.conf
  • ./login.txt
  • /etc/openvpn/client/client.conf
  • /etc/openvpn/client/login.txt

脚本会自动完成哪些配置

脚本会自动安装 openvpn、创建 /etc/openvpn/client 目录、复制客户端文件、收紧文件权限,并启用和重启 openvpn-client@client 服务。

相比手工复制文件、再一台台主机敲 systemctl 命令,这样更适合做交接、标准化部署和后续复查。

DNS 自动切换是怎么接入的

如果命令所在目录里已经有 ./update-resolv-conf,安装脚本会复制这份本地 helper 到 /etc/openvpn/update-resolv-conf,自动加执行权限,并确保 client.conf 里存在 script-security 2 以及指向这个 helper 的 up / down 钩子。

如果当前目录没有 ./update-resolv-conf,脚本就只安装 OpenVPN、复制 client.conf 和 login.txt,并启用 openvpn-client@client;不会自动写入任何内置 DNS helper。

  • /etc/openvpn/update-resolv-conf
  • script-security 2
  • up /etc/openvpn/update-resolv-conf
  • down /etc/openvpn/update-resolv-conf
  • /var/log/openvpn-dns-update.log
  • helper.sh/openvpn_update_resolv_conf.sh

DNS 值定义在哪里

安装器本身不会凭空生成 DNS 值。如果你提供了 update-resolv-conf,那么 10.7.7.53、114.114.114.114 和 reshub.cn 这些值,都是在这个 helper 脚本里定义的。

在使用 systemd-resolved 的 Ubuntu 上,/etc/resolv.conf 里看到 127.0.0.53 是正常现象。这种场景下,更推荐使用兼容 resolvectl 的 helper。helper.sh 现在也托管了一份参考版:helper.sh/openvpn_update_resolv_conf.sh,会优先调用 resolvectl,必要时再回退到直接写 /etc/resolv.conf。

安装完成后建议这样检查

脚本执行完成后,建议先确认服务是否 active,再看最近的 journal 输出,最后检查 tun0 是否拿到了地址。如果日志里出现 Initialization Sequence Completed,通常就说明 VPN 已经连通。

如果你同时提供了 update-resolv-conf,再额外执行 cat /etc/resolv.conf 和 dig,确认 DNS helper 确实按预期切换了解析器。

install_openvpn_client_ubuntu.sh 成功执行并且 openvpn-client@client 进入 active 状态时的终端输出
成功执行时,摘要里应看到 openvpn-client@client 已经进入 active。如果同时提供了 update-resolv-conf,这里也会显示 DNS helper 的安装路径。
  • systemctl status openvpn-client@client
  • journalctl -u openvpn-client@client -n 100 --no-pager
  • ip addr show tun0
  • cat /etc/resolv.conf
  • dig harbor.reshub.cn +short
  • dig baidu.com +short
  • systemctl restart openvpn-client@client

相关专题

OpenVPN 客户端接入与 DNS 处理

面向 Ubuntu 和 CentOS 7 主机的 OpenVPN 客户端接入专题,重点覆盖 client.conf、login.txt、DNS 脚本、systemd 服务和按需路由。

查看专题

问题页面

为什么 OpenVPN update-resolv-conf 不生效

定位 OpenVPN 私网 DNS 不生效时最常见的几个原因:CRLF、脚本不可执行、systemd-resolved 接管等。

打开页面