OpenVPN クライアント保守

disable_openvpn_client_dns.sh

既存の CentOS 7 形式の OpenVPN クライアントで、トンネルを維持しながら DNS フックを停止したい場合に使います。対象設定をバックアップして一致するフックをコメントアウトします。--set-dns を指定すると、環境に応じて NetworkManager の接続設定または /etc/resolv.conf を変更します。自動ロールバックはありません。

ワンライナー

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

このコマンドは同梱ファイルをダウンロードするだけで、実行しません。保存したソースを確認し、バージョンを照合してから実行するか判断してください。

保存したファイルを照合

このページのビルドに同梱されたバイト列と照合します。ファイルはこのタブ内で処理し、この機能は送信・保存しません。上限は2 MiBです。

期待する SHA-256
72aa960429bb6bc1ca576a42de7f9441969d999838972f30828b9bff120cd2ac

同梱ファイルのバイト数: 5339

チェックサムファイルを保存

スクリプトとチェックサムを同じディレクトリに保存してください。GNU Coreutils のある Linux では次のコマンドでバイト列だけを検査できます。スクリプトは実行しません。コマンドには元のファイル名が必要です。

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

まだ照合していません。

スクリプトとチェックサムは同じサイトから取得し、独立した署名ではありません。一致しても安全性、上流の真正性、ホストへの適合性は証明しません。可変の依存先は別途確認してください。

検証と制限を読む

実行条件

  • CentOS 7 または互換環境
  • root 権限または sudo
  • 既存のクライアント設定 /etc/openvpn/client/client.conf

適用場面

  • VPN トンネルを維持しつつ、10.7.7.53 などの DNS 強制を停止する
  • *.internal の名前解決が不要な環境で、使用する DNS を切り替える
  • 再インストールせず、install_openvpn_client_centos7.sh が追加した DNS フックを停止する

主なポイント

  • 設定を日時付きでバックアップ
  • 一致する script-security/up/down 行をコメント化
  • クライアントの再起動を試行。失敗しても継続する箇所がある
  • --set-dns は DNS 管理元により設定先が異なる
  • --config-dir と --config-name に対応
  • 復旧は設定の復元と再起動を手動で計画

推奨手順

  1. 先下載並審閱腳本,確認目標設定與 DNS 管理方式;僅在獲准的維護時段以 root 權限執行。
  2. 腳本備份設定、註解符合條件的 DNS 鉤子,接著嘗試重新啟動指定的 OpenVPN 用戶端服務。
  3. 確認 NetworkManager 是否管理 DNS 後再考慮使用 --set-dns。不帶此參數時,腳本不會修改 /etc/resolv.conf。
  4. 檢查服務狀態與解析設定,再測試需要的內部及公開網域名稱。隧道執行中不代表 DNS 正確。

注意事項

  • フックを無効にすると内部名を解決できなくなる場合があります。
  • 日時付きバックアップを保管してください。復旧は手動です。
  • --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 アドレスの形式は検証されません。/etc/resolv.conf への直接書き込みは NetworkManager や別の名前解決サービスと競合することがあります。

変更されるファイル、サービス、データ

  • 対象設定ファイル内の script-security 2、up /etc/openvpn/update-resolv-conf、down /etc/openvpn/update-resolv-conf に一致する行をコメントアウトします。
  • systemctl が対象サービスを認識する場合に再起動します。再起動コマンドが失敗しても処理を続け、その後に稼働状態を確認します。
  • 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 または VPN トンネルに問題が出た場合は、生成された設定バックアップを保持し、`sudo journalctl -u openvpn-client@client -n 100 --no-pager` と `nmcli connection show` を確認します。必要なら設定フックを手動で戻してサービスを再起動してください。resolv.conf を管理する仕組みを確認してから DNS を戻し、管理対象やシンボリックリンクを不用意に上書きしないでください。

実行前にダウンロードして内容を確認し、バージョンを検証してください。ハッシュはこのバイト列を識別するだけで、安全性を証明しません。pipe 実行は取得した内容を直ちに実行し、上流の依存関係は変化することがあります。