プライベートドメイン名の解決のためのカスタム DNS

更新日時
Copy as MD
重要

現在、この機能は、フィリピン (マニラ)、タイ (バンコク)、マレーシア (クアラルンプール) のリージョンで利用できます。

SSL-VPN サーバーからプライベート DNS サーバーのアドレスを設定してプッシュすることで、クライアントが VPC 内のプライベートドメイン名を解決できるようになります。

仕組み

image

SSL-VPN のカスタムクライアント DNS 機能は、OpenVPN プロトコルの DHCP Option メカニズムに基づいています。ワークフローは次のとおりです:

  1. カスタムクライアント DNSSSL サーバー スイッチを有効にし、VPC 内の最大 2 つのプライベート DNS サーバーの IP アドレスを入力します。

  2. SSL-VPN サーバーが DNS 設定をクライアントにプッシュします。

  3. クライアントは SSL-VPN 接続を確立した後、サーバーからプッシュされた DNS サーバーのアドレスを自動的に受信します。

  4. クライアントのオペレーティングシステムは、これらの DNS サーバーを現在のネットワーク接続の優先 DNS として設定します。

  5. その後の git.internalexample.com などの DNS クエリは、VPN トンネルを介して VPC 内の DNS サーバーに送信され、プライベートドメイン名が解決されます。

制限事項

  • 設定できる DNS サーバーのアドレスは、プライマリとセカンダリの最大 2 つです。

  • システムは DNS サーバーの到達可能性を検証しません。指定された IP アドレスが VPC 内で DNS サービスを提供できることを確認してください。

  • クライアント環境の違いにより、一部のクライアントでは DNS 設定を有効にするために追加の設定が必要になる場合があります。Tunnelblick を使用する macOS クライアントでは、接続後に DNS 設定が自動的に適用されます。Windows クライアントでは、ネットワークアダプターのメトリックを手動で変更する必要がある場合があります。Linux システムでは、追加の設定が必要です。

  • この機能は、iPhone、iPad、Android のクライアントではサポートされていません。

  • ドメイン名形式の DNS サーバーアドレスはサポートされていません。

  • 動的 DNS 更新はサポートされていません。

  • IPv6 DNS アドレスはサポートされていません。

手順

前提条件

  • 「クイックスタート」の手順に従って、クライアントを VPC に接続済みであること。macOS を使用している場合は、Tunnelblick クライアントを使用してください。

  • Windows AD DNS、CoreDNS、BIND などの DNS サーバーが VPC にデプロイされ、実行中であること。

  • DNS サーバーのセキュリティグループは、クライアント CIDR ブロック からの UDP ポート 53 へのインバウンドトラフィックを許可します。

ステップ 1:カスタム DNS の有効化

コンソール

  1. 対象のSSL サーバーインスタンスの「操作」列で、編集をクリックします。

  2. 表示されたダイアログボックスで、カスタムクライアント DNS スイッチを有効にし、次のパラメーターを設定します。

    • [DNS サーバーアドレス 1]:VPC にデプロイされている DNS サーバーのプライベート IP アドレスを入力します。

    • [DNS サーバーアドレス 2]:任意。セカンダリ DNS サーバーの IP アドレスを入力します。

API

ModifySslVpnServer API 操作を呼び出し、DnsServers パラメーターを使用して DNS サーバーアドレスを設定します。

ステップ 2:クライアントの設定

お使いのオペレーティングシステムの設定方法を選択してください。macOS では、接続後に DNS 設定が自動的に適用されます。Linux では、.ovpn 設定ファイルを変更する必要があります。

Windows

  1. システムトレイの OpenVPN クライアントアイコンを右クリックし、[再接続] を選択します。

  2. コマンドプロンプトを開き、nslookup example.com を実行します。example.com を実際のプライベートドメイン名に置き換えます。正しいプライベート IP アドレスが返された場合、DNS 設定は有効になっています。

重要

設定が有効にならない場合は、次の点を確認してください:

  1. 各ネットワークアダプターのメトリックを確認します。コマンドプロンプトで、次のコマンドを実行します:

    netsh interface ip show config

    メトリック値が小さいほど、ネットワークアダプターの優先度が高くなります。
  2. VPN トンネルのネットワークアダプターのメトリックが最小でない場合は、最小値に設定します:

    netsh interface ip set interface "OpenVPN TAP-Windows" metric=10

    OpenVPN クライアントが VPN トンネル用に作成したネットワークアダプターの名前は、通常「OpenVPN TAP-Windows」で始まります。アダプター名「OpenVPN TAP-Windows」は一例です。お使いのクライアントの実際のアダプター名に置き換えてください。

Mac

  1. Tunnelblick クライアントで、切断してから再接続します。

  2. ターミナルを開き、dig example.com を実行します。example.com を実際のプライベートドメイン名に置き換えます。正しいプライベート IP アドレスが返された場合、DNS 設定は有効になっています。

CentOS/AliOS

  1. /etc/openvpn/conf ディレクトリにある config.ovpn ファイルを編集します。 ファイルの末尾に以下の 4 行を追加します:

    script-security 2
    up /etc/openvpn/conf/client.up
    down /etc/openvpn/conf/client.down
    down-pre
  2. OpenVPN に付属の client.up および client.down スクリプトを OpenVPN 設定ディレクトリにコピーし、実行権限を付与します:

    sudo cp /usr/share/doc/openvpn/contrib/pull-resolv-conf/client.up /etc/openvpn/conf/
    sudo cp /usr/share/doc/openvpn/contrib/pull-resolv-conf/client.down /etc/openvpn/conf/
    sudo chmod +x /etc/openvpn/conf/client.up
    sudo chmod +x /etc/openvpn/conf/client.down
  3. client.up スクリプトと client.down スクリプトの両方で、次のコードを if false; then に変更します。

    画像

  4. openvpn プロセスを再起動します:

    sudo killall openvpn
    sudo openvpn --config /etc/openvpn/conf/config.ovpn --daemon
  5. DNS サーバーのアドレスが更新されたことを確認します:

    cat /etc/resolv.conf
  6. dig example.com を実行します。example.com を実際のプライベートドメイン名に置き換えます。正しいプライベート IP アドレスが返された場合、DNS 設定は有効になっています。

重要

この DNS 解決機能を無効にするには、次の手順に従います:

  1. SSL-VPN から切断します:

    sudo killall openvpn

  2. /etc/openvpn/conf ディレクトリにある config.ovpn ファイルを編集します。ファイルの末尾にある、script-securityupdown、および down-pre で始まる 4 つの行をコメントアウトします。

  3. openvpn プロセスを起動して SSL-VPN 接続を確立します:

    sudo openvpn --config /etc/openvpn/conf/config.ovpn --daemon

Ubuntu

  1. Alibaba Cloud コンソールに移動し、証明書を再度ダウンロードします。SSL クライアント ページで、ターゲットの 操作 列から 証明書のダウンロード をクリックします

  2. お使いの Ubuntu クライアントで、/etc/openvpn/conf ディレクトリから既存のクライアント証明書を、バックアップ用に別のディレクトリに移動します。

  3. 新しくダウンロードしたクライアント証明書を /etc/openvpn/conf ディレクトリに配置します。

  4. config.ovpn ファイルを編集し、ファイルの末尾にある次の 4 行のコメントを解除します (行頭の # を削除します)。

    画像

  5. systemd-resolved のコマンドラインツールである resolvectl をインストールします:

    apt install systemd-resolved

  6. tun0 インターフェイスの DNS をグローバルデフォルトとして設定します。~. 文字はすべてのドメインに一致します。

    resolvectl domain tun0 "~."

  7. openvpn プロセスを再起動します:

    sudo killall openvpn
    sudo openvpn --config /etc/openvpn/conf/config.ovpn --daemon
  8. DNS サーバーのアドレスが更新されたことを確認します:

    resolvectl status tun0

  9. dig example.com を実行します。example.com を実際のプライベートドメイン名に置き換えます。正しいプライベート IP アドレスが返された場合、DNS 設定は有効になっています。

重要

この DNS 解決機能を無効にするには、次の手順に従います:

  1. SSL-VPN から切断します:

    sudo killall openvpn

  2. /etc/openvpn/conf ディレクトリにある config.ovpn ファイルを編集します。script-securityupdown、および down-pre で始まるファイルの末尾の 4 行をコメントアウトします。

  3. openvpn プロセスを起動して SSL-VPN 接続を確立します:

    sudo openvpn --config /etc/openvpn/conf/config.ovpn --daemon

よくある質問

DNS 設定が有効にならない

  • DNS サーバーのサブネットが、SSL サーバー に設定されている ローカル CIDR ブロック に含まれていることを確認してください。含まれていない場合は、DNS サーバーのサブネットを ローカル CIDR ブロック の設定に追加します。

  • DNS サーバーが、クライアント CIDR ブロック (SSL-VPN によってクライアントに割り当てられる IP アドレスプール) からの名前解決リクエストを許可することを確認してください。

  • DNS サーバーの セキュリティグループ が UDP ポート 53 でのトラフィックを許可していることを確認してください。

  • 他の VPN やネットワークソフトウェアが DNS 設定を上書きしていないか確認してください。

  • Windows クライアントの場合は、次の点も確認してください:

    • VPN トンネルのネットワークアダプターのメトリックが最小であることを確認してください。手順については、「ステップ 2:クライアントの設定」をご参照ください。

    • コマンド プロンプトで ipconfig /flushdns を実行して DNS キャッシュをクリアしてから、再試行してください。

  • CentOS/AliOS クライアントの場合は、次の点も確認してください:

    • .ovpn ファイルに、script-security 2up/down スクリプト設定が追加されていることを確認してください。

    • 対応する DNS 更新スクリプト (client.up および client.down) が /etc/openvpn/conf/ ディレクトリに存在することを確認してください。

    • /etc/resolv.conf ファイルに、設定された DNS アドレスが含まれていることを確認してください。

  • Ubuntu クライアントの場合は、次の点も確認してください:

    • 証明書ファイルを再度ダウンロードし、.ovpn ファイルの最後の 4 行のコメントを解除したことを確認してください。

    • 対応する DNS 更新スクリプト (update-resolv-conf または update-systemd-resolved) がシステムに存在することを確認してください。

    • resolvectl status を実行して、出力に設定済みの DNS アドレスが含まれていることを確認します。

クライアント証明書の再ダウンロード

証明書を再度ダウンロードする必要があるのは Ubuntu クライアントのみです。他のオペレーティングシステムでは不要です。

IPv6 アドレスのサポート

いいえ。IPv4 アドレスを持つ DNS サーバーのみがサポートされています。

到達不可能な DNS サーバー

システムは DNS サーバーの到達可能性を検証しません。設定した DNS サーバーに到達できない場合、クライアントは VPN に接続した後、ドメイン名を解決できません。DNS サーバーが VPC で稼働しており、そのサブネットが SSL-VPN のルーティング設定に含まれていることを確認してください。

VPC 以外の DNS サーバーの使用

はい。例えば、SSL サーバー上の DNS サーバーアドレスを、オンプレミスのデータセンターにある DNS サーバーに設定できます。