Linux のトラブルシューティング - AWS Client VPN

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Linux のトラブルシューティング

次のセクションでは、ログに関する情報と、Linux ベースのクライアントを使用する際に発生する可能性のある問題について説明します。これらのクライアントの最新バージョンを実行していることを確認します。

AWS 提供されたクライアント

AWS 提供されたクライアントは、ログファイルと設定ファイルをシステム上の次の場所に保存します。

/home/username/.config/AWSVPNClient/

AWS 提供されているクライアントデーモンプロセスでは、システム上の次の場所にログファイルが保存されます。

/var/log/aws-vpn-client/username/
問題

VPN 接続が確立された後のある種の状況下では、DNS クエリは、ClientVPN エンドポイント用に設定されたネームサーバーではなく、デフォルトのシステムネームサーバーに送信されます。

原因

クライアントは systemd-resolved と連携します。これは、Linux システムで利用可能なサービスであり、DNS 管理の中心的な部分として機能します。これは、ClientVPN エンドポイントからプッシュされる DNS サーバーを設定するために使用されます。この問題は、systemd-resolvedが、ClientVPN エンドポイントによって提供される DNS サーバーに最高の優先順位を設定しないことによって発生します。そうではなく、ローカルシステム上に構成されている DNS サーバーの既存のリストに、サーバーを追加します。その結果、元の DNS サーバーの優先順位が最高になったままであるため、DNS クエリの解決に使用される可能性があります。

ソリューション
  1. OpenVPN 設定ファイルの最初の行に次のディレクティブを追加して、すべての DNS クエリが VPN トンネルに送信されるようにします。

    dhcp-option DOMAIN-ROUTE .
  2. systemd-resolved で提供されるスタブリゾルバーを使用する。これを行うには、システム上で次のコマンドを実行することによって、/etc/resolv.conf から /run/systemd/resolve/stub-resolv.conf へのシンボリックリンクを設定します。

    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
  3. (オプション) systemd-resolved が DNS クエリに対してプロキシとなるのではなく、クエリを実際の DNS ネームサーバーに直接送信したい場合は、/etc/resolv.conf から /run/systemd/resolve/resolv.conf へのシンボリックリンクとします。。

    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

    DNS 応答キャッシング、インターフェイスごとの DNS 設定、DNSSec の強制適用など、systemd-resolved の設定をバイパスするためにこの手順を適用することができます。このオプションは、VPN に接続しているときにパブリック DNS レコードをプライベートレコードで上書きする必要がある場合に特に便利です。たとえば、プライベート VPC 内にプライベート DNS リゾルバーがあり、プライベート IP に解決される www.example.com のレコードがあるとします。このオプションを使用すると、パブリック IP に解決される www.example.com のパブリックレコードを上書きできます。

OpenVPN (コマンドライン)

問題

DNS 解決が機能していないため、接続が正しく機能しません。

原因

DNS サーバーがクライアント VPN エンドポイントで設定されていないか、クライアントソフトウェアによって受け入れられていません。

ソリューション

DNS サーバーが設定され、正しく機能していることを確認するには、次のステップを実行します。

  1. ログに DNS サーバーエントリが存在することを確認します。次の例では、最後の行に DNS サーバー 192.168.0.2 (クライアント VPN エンドポイントで設定) が返されます。

    Mon Apr 15 21:26:55 2019 us=274574 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) WRRMon Apr 15 21:26:55 2019 us=276082 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 192.168.0.2,route-gateway 10.0.0.97,topology subnet,ping 1,ping-restart 20,auth-token,ifconfig 10.0.0.98 255.255.255.224,peer-id 0

    DNS サーバーが指定されていない場合は、クライアント VPN 管理者にクライアント VPN エンドポイントを変更するよう依頼し、クライアント VPN エンドポイントに DNS サーバー (VPC DNS サーバーなど) が指定されていることを確認します。詳細については、AWS Client VPN 管理者ガイドの「クライアント VPN エンドポイント」を参照してください。

  2. 次のコマンドを実行して、resolvconf パッケージがインストールされていることを確認します。

    sudo apt list resolvconf

    出力は、以下を返します。

    Listing... Done resolvconf/bionic-updates,now 1.79ubuntu10.18.04.3 all [installed]

    インストールされていない場合は、次のコマンドを使用してインストールします。

    sudo apt install resolvconf
  3. テキストエディタでクライアント VPN 設定ファイル (.ovpn ファイル) を開き、次の行を追加します。

    script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf

    ログをチェックして、resolvconf スクリプトが呼び出されたことを確認します。ログには、次のような行が含まれている必要があります。

    Mon Apr 15 21:33:52 2019 us=795388 /etc/openvpn/update-resolv-conf tun0 1500 1552 10.0.0.98 255.255.255.224 init dhcp-option DNS 192.168.0.2

Network Manager (GUI) を介した OpenVPN

問題

Network Manager OpenVPN クライアントを使用すると、次のエラーで接続が失敗します。

Apr 15 17:11:07 OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep 5 2018 Apr 15 17:11:07 library versions: OpenSSL 1.1.0g 2 Nov 2017, LZO 2.08 Apr 15 17:11:07 RESOLVE: Cannot resolve host address: cvpn-endpoint-1234.prod.clientvpn.us-east-1.amazonaws.com:443 (Name or service not known) Apr 15 17:11:07 RESOLVE: Cannot resolve host Apr 15 17:11:07 Could not determine IPv4/IPv6 protocol
原因

remote-random-hostname フラグは受け入れられず、クライアントは network-manager-gnome パッケージを使用して接続できません。

ソリューション

AWS Client VPN 管理者ガイドの「クライアント VPN エンドポイント DNS 名を解決できない」の解決策を参照してください。