OpenVPN 客户端维护
disable_openvpn_client_dns.sh 适用于已有 CentOS 7 风格 OpenVPN 客户端、希望保留隧道但停用 DNS 钩子的情况。脚本先备份目标配置,再注释匹配的钩子。使用 --set-dns 时,会根据主机环境修改活动的 NetworkManager 连接配置或覆盖 /etc/resolv.conf;脚本不提供自动回滚。
核对已下载文件 与本页面构建时内置的确切字节比较。文件只在当前标签页处理,此工具不上传、不持久化文件。上限 2 MiB。
预期 SHA-256 72aa960429bb6bc1ca576a42de7f9441969d999838972f30828b9bff120cd2ac
内置文件字节数: 5339
保存校验文件 将脚本和校验文件保存在同一目录。Linux 安装 GNU Coreutils 后可用下方命令只检查字节,不运行脚本;使用此命令时需保留原文件名。
复制校验命令 sha256sum --check './disable_openvpn_client_dns.sh.sha256' 尚未比较。
所选文件 SHA-256
校验值与脚本来自同一网站,不是独立签名。一致不证明安全、上游依赖真实可信或适合本机;可变远程依赖需单独审阅。
查看验证与限制
安全提示
禁用钩子后可能无法解析内部域名。 保留时间戳配置备份,回滚需手动完成。 --set-dns 根据管理状态更改 NetworkManager 或覆盖 resolv.conf。 兼容范围与限制 按 CentOS 7 的 OpenVPN 客户端服务约定编写;需要 root、systemctl 和已有客户端配置。默认目标是 /etc/openvpn/client/client.conf 与 openvpn-client@client;可用 --config-dir、--config-name 指定其他目标。 没有 dry-run。脚本会创建带时间戳的配置副本,但不会自动回滚。使用 --set-dns 时,脚本可能修改活动的 NetworkManager 连接配置,或截断并重写 /etc/resolv.conf。 脚本不校验 DNS 地址格式。直接写 resolv.conf 可能与 NetworkManager 或其他解析服务冲突。 受影响的文件、服务和数据 注释目标配置中匹配的 script-security 2、up /etc/openvpn/update-resolv-conf 和 down /etc/openvpn/update-resolv-conf 行。 如果 systemctl 能识别目标服务,就尝试重启;重启命令失败会被忽略,随后再检查服务是否处于 active。 NetworkManager 正在运行、nmcli 可用且活动连接匹配默认路由网卡时,会把该连接的 DNS 重设为 DHCP 或 --set-dns 值;否则 --set-dns 会覆盖 /etc/resolv.conf。不传 --set-dns 时不会改该文件。 只读核验 运行前检查目标配置和 DNS 管理方式:`sudo grep -nE "^(#?script-security 2|#?up /etc/openvpn/update-resolv-conf|#?down /etc/openvpn/update-resolv-conf)" /etc/openvpn/client/client.conf`、`systemctl status openvpn-client@client`、`readlink -f /etc/resolv.conf`。 经批准的维护操作后检查 `systemctl status openvpn-client@client`、`nmcli connection show --active` 和 `cat /etc/resolv.conf`;分别测试所需的内网域名和公网域名,并审阅生成的 .bak 和 NetworkManager DNS 设置。 失败后的下一步 若 DNS 或隧道异常,保留配置备份,检查 `sudo journalctl -u openvpn-client@client -n 100 --no-pager` 与 `nmcli connection show`。必要时手工恢复配置钩子并重启服务。先确认由哪个解析服务管理 resolv.conf,再通过对应管理器恢复;不要盲目覆盖受管理文件或符号链接。
先下载、审阅并核对版本,再决定是否执行。哈希只能标识这一版字节,不能证明安全。pipe 命令会立即执行远程内容;上游依赖也可能变化。