概要
前回記事の続きみたいなもの。
プライベートエンドポイントの作成により、Azure OpenAIにプライベートIPアドレス持たせてリクエストを処理させることに成功したものの、名前解決の問題が残っていた。
AzureのDNSを使っているのであれば何も問題はないのですが、
オンプレミスのDNSを使っている場合、
単純にAzure OpenAIのホスト名(***.oepnai.azure.com)を名前解決しても、
プライベートエンドポイントのプライベートIPアドレスは帰ってこない。
加えて、azure.comドメインなので、こちらのDNSサーバーに名前解決を設定することもできないので。
ならばどうするかというと、以下の3点がポイントになる。
- AzureのプライベートDNSゾーンを使って、***.openai.azure.comのプライベートIPアドレスの名前解決を登録
- Azure上に、AzureのDNS(プライベートDNSゾーン)を参照するDNSサーバーを作成
- オンプレミスのDNSにDNSフォワーディングの設定を行い、Azure上に作成したDNSサーバーにフォワーディングをかける
全体構成図
いろいろやり方はあると思うが、ひとまず下記のような構成で検証する。
設定
プライベート DNS ゾーンの設定
プライベートエンドポイントを作成するときに、プライベートDNSゾーンと統合するを設定しておくと、自動的に作成されているはず。
簡単に言えば、仮想ネットワーク内のみに適用されるDNSレコードの設定。
AzureのDNSを参照する場合、ここに登録したレコードを優先して名前解決が行われます。
プライベートDNSゾーンに名前解決が必要なレコードを追加しておく。
名前解決を試す
プライベートDNSゾーンが含まれる仮想ネットワークに存在する仮想マシンから、
nslookupコマンドを使ってDNSレコードの設定が反映されていることを確認する。
AzureのDNS(168.63.129.16)を参照して名前解決を試す。
# nslookup
> server 168.63.129.16
Default server: 168.63.129.16
Address: 168.63.129.16#53
> ***.openai.azure.com
Server: 168.63.129.16
Address: 168.63.129.16#53
### プライベートDNSゾーンに設定した結果が帰ってくることを確認
DNSフォワード用サーバーの設定
今回はnamed-chrootでDNSサーバーを構築します。
インストールと簡単な初期設定を行う
# dnf install bind bind-chroot
# cp /etc/named.conf /var/named/chroot/etc/
# chown -R named:named /var/named/chroot/var/named/
# chown root:named /var/named/chroot/etc/named.conf
# vi /var/named/chroot/etc/named.conf
named.confを修正
// コメントアウトして外部からのLISTENを受けるける
// listen-on port 53 { 127.0.0.1; };
// IPv6はとりあえず無効化
listen-on-v6 { none;};
// DNSフォワード用なので再帰問合せは無効
// recursion yes;
// DNSSEC関連は無効
//dnssec-validation yes;
dnssec-enable no;
dnssec-validation no;
// DNSフォワード設定を追加
zone "azure.com" {
type forward;
forward only;
forwarders {
168.63.129.16;
};
};
named-chrootを起動
# systemctl start named-chroot
名前解決を試す
動作を検証する。
nslookupで自身を参照するようにして、プライベートDNSゾーンで設定したホストの名前解決がプライベートIPアドレスでできていればOK。
# nslookup
> server localhost
Default server: localhost
Address: 127.0.0.1#53
> ***.openai.azure.com
Server: localhost
Address: 127.0.0.1#53
### プライベートDNSゾーンに設定した結果が帰ってくることを確認
オンプレミスDNSの設定
オンプレミスDNSにも、DNSフォワーディングの設定を行う。
# vi /var/named/chroot/etc/named.conf
named.confを修正
// DNSフォワード設定を追加
forwarders {
[作成したフォワード用DNSののIPアドレス];
};
必要に応じて特定ゾーンに設定しても良い
設定を反映
# systemctl restart named-chroot
名前解決を試す
オンプレミスDNSからプライベートDNSゾーンを参照した名前解決ができることを確認する。
# nslookup
> server localhost
Default server: localhost
Address: 127.0.0.1#53
> ***.openai.azure.com
Server: localhost
Address: 127.0.0.1#53
### プライベートDNSゾーンに設定した結果が帰ってくることを確認