这个脚本在安装前会先检查什么
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 确实按预期切换了解析器。
- 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