プライベートドメイン名の解決のためのカスタム DNS
現在、この機能は、フィリピン (マニラ)、タイ (バンコク)、マレーシア (クアラルンプール) のリージョンで利用できます。
SSL-VPN サーバーからプライベート DNS サーバーのアドレスを設定してプッシュすることで、クライアントが VPC 内のプライベートドメイン名を解決できるようになります。
仕組み
SSL-VPN のカスタムクライアント DNS 機能は、OpenVPN プロトコルの DHCP Option メカニズムに基づいています。ワークフローは次のとおりです:
カスタムクライアント DNS で SSL サーバー スイッチを有効にし、VPC 内の最大 2 つのプライベート DNS サーバーの IP アドレスを入力します。
SSL-VPN サーバーが DNS 設定をクライアントにプッシュします。
クライアントは SSL-VPN 接続を確立した後、サーバーからプッシュされた DNS サーバーのアドレスを自動的に受信します。
クライアントのオペレーティングシステムは、これらの DNS サーバーを現在のネットワーク接続の優先 DNS として設定します。
その後の
git.internalやexample.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 の有効化
コンソール
対象のSSL サーバーインスタンスの「操作」列で、編集をクリックします。
表示されたダイアログボックスで、カスタムクライアント DNS スイッチを有効にし、次のパラメーターを設定します。
[DNS サーバーアドレス 1]:VPC にデプロイされている DNS サーバーのプライベート IP アドレスを入力します。
[DNS サーバーアドレス 2]:任意。セカンダリ DNS サーバーの IP アドレスを入力します。
API
ModifySslVpnServer API 操作を呼び出し、DnsServers パラメーターを使用して DNS サーバーアドレスを設定します。
ステップ 2:クライアントの設定
お使いのオペレーティングシステムの設定方法を選択してください。macOS では、接続後に DNS 設定が自動的に適用されます。Linux では、.ovpn 設定ファイルを変更する必要があります。
Windows
システムトレイの OpenVPN クライアントアイコンを右クリックし、[再接続] を選択します。
コマンドプロンプトを開き、
nslookup example.comを実行します。example.com を実際のプライベートドメイン名に置き換えます。正しいプライベート IP アドレスが返された場合、DNS 設定は有効になっています。
設定が有効にならない場合は、次の点を確認してください:
各ネットワークアダプターのメトリックを確認します。コマンドプロンプトで、次のコマンドを実行します:
netsh interface ip show configメトリック値が小さいほど、ネットワークアダプターの優先度が高くなります。
VPN トンネルのネットワークアダプターのメトリックが最小でない場合は、最小値に設定します:
netsh interface ip set interface "OpenVPN TAP-Windows" metric=10OpenVPN クライアントが VPN トンネル用に作成したネットワークアダプターの名前は、通常「OpenVPN TAP-Windows」で始まります。アダプター名「OpenVPN TAP-Windows」は一例です。お使いのクライアントの実際のアダプター名に置き換えてください。
Mac
Tunnelblick クライアントで、切断してから再接続します。
ターミナルを開き、
dig example.comを実行します。example.com を実際のプライベートドメイン名に置き換えます。正しいプライベート IP アドレスが返された場合、DNS 設定は有効になっています。
CentOS/AliOS
/etc/openvpn/confディレクトリにあるconfig.ovpnファイルを編集します。 ファイルの末尾に以下の 4 行を追加します:script-security 2 up /etc/openvpn/conf/client.up down /etc/openvpn/conf/client.down down-preOpenVPN に付属の
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.downclient.upスクリプトとclient.downスクリプトの両方で、次のコードをif false; thenに変更します。
openvpn プロセスを再起動します:
sudo killall openvpn sudo openvpn --config /etc/openvpn/conf/config.ovpn --daemonDNS サーバーのアドレスが更新されたことを確認します:
cat /etc/resolv.confdig example.comを実行します。example.com を実際のプライベートドメイン名に置き換えます。正しいプライベート IP アドレスが返された場合、DNS 設定は有効になっています。
この DNS 解決機能を無効にするには、次の手順に従います:
SSL-VPN から切断します:
sudo killall openvpn/etc/openvpn/confディレクトリにあるconfig.ovpnファイルを編集します。ファイルの末尾にある、script-security、up、down、およびdown-preで始まる 4 つの行をコメントアウトします。openvpn プロセスを起動して SSL-VPN 接続を確立します:
sudo openvpn --config /etc/openvpn/conf/config.ovpn --daemon
Ubuntu
Alibaba Cloud コンソールに移動し、証明書を再度ダウンロードします。SSL クライアント ページで、ターゲットの 操作 列から 証明書のダウンロード をクリックします。
お使いの Ubuntu クライアントで、
/etc/openvpn/confディレクトリから既存のクライアント証明書を、バックアップ用に別のディレクトリに移動します。新しくダウンロードしたクライアント証明書を
/etc/openvpn/confディレクトリに配置します。config.ovpnファイルを編集し、ファイルの末尾にある次の 4 行のコメントを解除します (行頭の#を削除します)。
systemd-resolvedのコマンドラインツールであるresolvectlをインストールします:apt install systemd-resolvedtun0インターフェイスの DNS をグローバルデフォルトとして設定します。~.文字はすべてのドメインに一致します。resolvectl domain tun0 "~."openvpn プロセスを再起動します:
sudo killall openvpn sudo openvpn --config /etc/openvpn/conf/config.ovpn --daemonDNS サーバーのアドレスが更新されたことを確認します:
resolvectl status tun0dig example.comを実行します。example.com を実際のプライベートドメイン名に置き換えます。正しいプライベート IP アドレスが返された場合、DNS 設定は有効になっています。
この DNS 解決機能を無効にするには、次の手順に従います:
SSL-VPN から切断します:
sudo killall openvpn/etc/openvpn/confディレクトリにあるconfig.ovpnファイルを編集します。script-security、up、down、およびdown-preで始まるファイルの末尾の 4 行をコメントアウトします。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 2とup/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 サーバーに設定できます。