接続時に別のDNSサーバーを使用するようにOpenVPNクライアントを構成する方法

接続時に別のDNSサーバーを使用するようにOpenVPNクライアントを構成する方法

OpenVPNクライアントを介してVPNプロバイダに接続するときにシステムがVPNプロバイダのDNSサーバーを使用するようにsystemdを使用してDebianベースのビルドを設定するにはどうすればよいですか?

答え1

私はこれでかなり多くの旅行をしてきたので、私が見つけたものと解決策を文書化したいと思います。

明らかに、この機能を設定するための過去の標準は、次のヘルパースクリプトでした。アップデートシステムの解決ただし、これは最新バージョンのNetworkManagerでは機能しなくなりました。

私が望む構成を設定するために行ったステップは次のとおりです。 (これは、OpenVPNクライアントを設定して接続したと仮定します。)

# Make a copy of any existing resolv.conf configuration
sudo mv /etc/resolv.conf /etc/resolv.conf.original
# This sets resolvd to redirect to the systemd-resolve 127.0.0.53 redirect
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
# Edit the systemd-resolve configuration file
sudo vi /etc/systemd/resolved.conf
  • DNS=ローカル LAN/ルーター DNS IP (例: 192.168.1.1) に設定
  • Domains=ローカルLANドメイン(my.company.comなど)に設定
sudo service systemd-resolved restart
resolvectl status

グローバル項目は、ユーザーが設定した値を反映する必要があります。/etc/systemd/resolved.conf

Global
          Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub
Current DNS Server: 192.168.1.1
       DNS Servers: 192.168.1.1
        DNS Domain: my.company.com

これで、openvpn.client.confファイルがある同じディレクトリにヘルパースクリプトを作成し /etc/openvpnたり、/etc/openvpn/client

NordVPNで使用する例は次のとおりです。

sudo vi /etc/openvpn/nordvpn.systemd.resolve.sh
# Make the script executable
sudo chmod 750 /etc/openvpn/nordvpn.systemd.resolve.sh
#!/bin/sh
set -e
systemd-resolve -i tun0 \
  --set-dns=103.86.96.100 --set-dns=103.86.99.100 \
  --set-domain=~. \
  --set-dnssec=off

これで、実際のopenvpn.client.confファイル(私はnordpn.confですが、あなたのものは異なるかもしれません)

sudo vi /etc/openvpn/nordvpn.conf

...そして次の行を追加してください:(上記で作成したスクリプトの名前を使用してください。)

script-security 2
up /etc/openvpn/nordvpn.systemd.resolve.sh

それではOpenVPNクライアントを再起動してください。サービス名は、OpenVPN クライアントシステムサービスの設定方法によって異なります。

sudo systemctl restart [email protected]

再起動中にエラーがないことを確認してください。

sudo systemctl status [email protected]
resolvectl status

グローバルエントリは設定された値を反映しなければならず、/etc/systemd/resolved.confトンインタフェースはスクリプトを通して追加されたDNS値を表示しなければなりません。

Global
          Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub
Current DNS Server: 192.168.1.1
       DNS Servers: 192.168.1.1
        DNS Domain: my.company.com

Link # (tun0)
    Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 103.86.96.100
       DNS Servers: 103.86.96.100 103.86.99.100
        DNS Domain: ~.

これで、VPNに接続するとVPNプロバイダのDNSサーバーが使用されますが、接続しない場合はLAN DNSサーバーに置き換えられます。

関連情報