OpenVPN 客户端安装脚本

install_openvpn_client_ubuntu.sh

适用于 Ubuntu 20.04、22.04 和 24.04 LTS。脚本面向使用用户名密码认证的 OpenVPN 客户端场景,提供可重复执行的安装、复制配置和启动服务流程。

审阅文件对选择和服务影响

一键命令

curl -fL 'https://www.helper.sh/install_openvpn_client_ubuntu.sh' -o './install_openvpn_client_ubuntu.sh'

此命令只下载本站文件,不会执行。请先检查保存的源码并核对版本,再决定是否运行。

核对已下载文件

与本页面构建时内置的确切字节比较。文件只在当前标签页处理,此工具不上传、不持久化文件。上限 2 MiB。

预期 SHA-256
c096e3498bd2f98b7b57bcd28b0dc0664e658f60a4cb2caa2a192195979e4f00

内置文件字节数: 7887

保存校验文件

将脚本和校验文件保存在同一目录。Linux 安装 GNU Coreutils 后可用下方命令只检查字节,不运行脚本;使用此命令时需保留原文件名。

sha256sum --check './install_openvpn_client_ubuntu.sh.sha256'

尚未比较。

校验值与脚本来自同一网站,不是独立签名。一致不证明安全、上游依赖真实可信或适合本机;可变远程依赖需单独审阅。

查看验证与限制

运行要求

  • 源码分支识别Ubuntu 20.04/22.04/24.04;需要root、Bash、systemd及可访问的apt仓库。
  • 应用客户端配置需要已审阅的配置/凭据文件对,仅安装准备可在没有完整文件对时结束。

适用场景

  • 在新的 Ubuntu 主机上快速拉起 OpenVPN 客户端
  • 标准化用户名密码认证的客户端部署流程,方便交接
  • 避免手工复制配置文件和启用 openvpn-client@client 时出错

脚本亮点

  • 缺少配置文件时也不会报错退出:仍会安装 OpenVPN、创建 /etc/openvpn/client/,并提示你放入文件
  • 会从当前目录读取 client.conf 和 login.txt;若文件已放在 /etc/openvpn/client/ 里则直接复用
  • 仅当提供本地 update-resolv-conf 时才安装它并补齐 DNS hooks
  • 自动启用并重启 openvpn-client@client 服务

推荐流程

  1. 下载、比对并审阅保存的安装器,再决定是否运行。
  2. 先确定完整源文件对或目标文件对,核对实际单元、共享凭据及可选helper。
  3. 获批准后仍应区分仅安装准备与应用配置;复制和复用的备份影响不同。
  4. 分别核验服务、实际接口、路由、DNS及获授权的业务访问,active或tun0不能单独证明连通。

安全提示

  • 请用 chmod 600 保护 login.txt,不要把它提交进 Git。
  • 把 client.conf 放到生产主机之前,先确认服务器地址、端口和证书内容正确。
  • 如果服务没有成功拉起,先查看 journalctl 日志,不要反复盲目重试。

兼容范围与限制

  • 需要root、Bash、Ubuntu、apt仓库及systemd OpenVPN客户端单元。源码识别20.04/22.04/24.04,其他Ubuntu版本仅警告后继续,不是兼容证明;仓库包版本未固定,应核对实际安装版本及对应手册。Ubuntu20.04标准安全维护已于2025年5月结束,旧主机需另核实实际ESM覆盖;源码映射不是新建部署推荐。
  • 支持--config-dir PATH、--config-name NAME、--source-conf PATH、--source-login PATH、--source-dns-helper PATH,均需值;-h/--help仅显示帮助。Ubuntu源码没有--no-dns、dry-run或自动回滚;缺少参数值可能因set -u中止,不要沿用CentOS专属开关。
  • 完整源文件对优先:./client.conf与./login.txt(或指定路径)齐全时复制覆盖目标;否则仅在目标配置与凭据成对存在时复用。不会把一个源文件和一个目标文件拼成一对。两处均无完整文件对时,仍会安装软件并准备目录,然后以退出码0结束;这表示“配置尚未应用”,不是VPN已连接。
  • 目标为CONFIG_DIR/CONFIG_NAME.conf与CONFIG_DIR/login.txt。同目录不同实例名共享login.txt,为一个实例复制凭据可能影响另一个。--config-dir只改变复制路径,不改systemd单元的配置搜索路径;自定义目录前应核对实际单元。

受影响的文件、服务和数据

  • 运行apt-get update、安装openvpn并创建配置目录。仅复制分支会为已有目标配置/凭据创建时间戳.bak;复用分支也会删除CRLF并chmod 600,因此不是无改动运行。凭据备份也需妥善保护。
  • 若本地DNS helper存在,会无helper备份地覆盖/etc/openvpn/update-resolv-conf,清除CRLF、赋予执行权限,并补齐完全相同的script-security 2/up/down行;不会清理或协调已有不同钩子。helper是可执行代码,需单独审阅其解析器影响;helper缺失也不会删除已有钩子。
  • 启用并重启openvpn-client@CONFIG_NAME。远程端点、路由和DNS影响取决于配置及helper;安装器不分配固定服务端口,也不证明隧道就绪。auth-user-pass检查只是未限定行首的grep警告,不验证实际有效的凭据或配置。

只读核验

  • 任何已批准变更前,先在本地明确将选用哪一对完整文件,备份相关文件、审阅helper,并用systemctl cat查看实际单元。不要向本站粘贴login.txt、私钥、配置或原始日志。下列默认只读命令不会安装、启动或连接;自定义实例需替换为核实过的名称。
  • 授权维护后,检查所选单元、私下查看日志、实际隧道接口及路由表。服务active、tun0示例或完成横幅不证明认证、预期路由、DNS或业务访问;需另行核验获授权的目标与解析行为,不能假定固定接口名。

失败后的下一步

若提示配置未应用,先确定完整文件对再规划下一次变更;重跑也会重复apt操作。失败时保留目标文件和.bak,私下检查对应单元/日志、auth-user-pass路径及helper/钩子,再制定手动恢复方案。不要关闭证书校验、删除备份、盲目轮换共享login.txt,或以为--config-dir会自动改变服务配置;没有自动恢复。

systemctl status openvpn-client@client --no-pager
systemctl cat openvpn-client@client
ip -brief address
ip route show
readlink -f /etc/resolv.conf

OpenVPN 2.6 · Ubuntu Server · Ubuntu · 查看Ubuntu客户端源码审阅验证

先下载、审阅并核对版本,再决定是否执行。哈希只能标识这一版字节,不能证明安全。pipe 命令会立即执行远程内容;上游依赖也可能变化。

相关专题

OpenVPN:区分隧道、路由和 DNS 故障

选择对应发行版客户端,变更 DNS 钩子前检查解析器管理权。

查看专题

问题页面

OpenVPN 已连接但内部 DNS 失败

改文件或重启隧道前,先检查已配置钩子和活动解析器管理器。

打开页面