私が勤務する大学のデータ センターには DNS システムがあり、これを使用してサーバーの名前と内部専用のサービスのアドレスを登録しています。
通常、次のパターンを使用します。
server A xxx.xxx.xxx.xxx
service CNAME server
これで、HTTP 経由でアクセスするときに、A レコードではなく CNAME レコードのみに解決するサービスができました。
DNS 構成のみを使用してそれは可能ですか?
答え1
一部のプロトコル (http など) では、クライアントが正しい名前を指定した場合にのみ応答するようにサービスを設定できます。このシナリオでは、CNAME を含む http 要求にのみ応答するように Web サーバーを設定します。コメントに基づいて、これを行う方法は既にわかっています。
また、サーバーがクライアントが使用している名前を認識しないプロトコルもあり、その場合、ユーザーが A レコード内の名前を使用することを防ぐ方法はありません。
DNS レイヤーでこれを行うことはできないと思います。 つまり、クライアントに表示される対応する A レコードがなければ、クライアントに表示される CNAME を作成し、目的の IP アドレスに解決する確実な方法はありません。
あなたができる(使用しているDNSソフトウェアによって異なりますが)2つのAレコードを用意し、どちらも同じIPアドレスを指すようにします。つまり、
server A xxx.xxx.xxx.xxx
service A xxx.xxx.xxx.xxx
そして、そのserver
記録を、アクセスが必要な管理スタッフにのみ公開します。持っているサービス名に CNAME を使用します。唯一の注意点は、2 つの名前の IP アドレスが常に一致するようにすることがユーザーの責任となることです。
答え2
はい、可能です。実際、それが問題を完全に解決するための第一歩です。
ただし、実際にこれを行うには、(通常)オペレーティングシステムのローカルDNS解決方法をバイパスする必要があります。これは、(通常)CNAMEレコードで停止してそれ以上解決しないようにすることができないからです。これを行うことを可能にするDNSリゾルバライブラリは知りませんが、これを行う標準的なツールは知っています。BINDのdig
コマンドは、明示的にCNAME
クエリタイプ(またはANY
クエリタイプ、ただし5月DNS サーバーに応じて A レコードまたは AAAA レコードも返されます)。