質問: DNS の設定を行なっている際、その動作を確認するために`dig`コマンドなどを実行するかと思います。 `dig` コマンドは、 DNS サーバーに記述されているレコードを返してくれていると思っていて、例えば、以下のような返答が帰ってきます。 ``` id 64320 opcode QUERY rcode NOERROR flags QR RD RA ;QUESTION ja.stackoverflow.com. IN A ;ANSWER ja.stackoverflow.com. 299 IN A 151.101.129.69 ja.stackoverflow.com. 299 IN A 151.101.65.69 ja.stackoverflow.com. 299 IN A 151.101.193.69 ja.stackoverflow.com. 299 IN A 151.101.1.69 ;AUTHORITY ;ADDITIONAL ``` このように帰ってくる DNS レコードの結果について、いつも付与されている、この「IN」の文字列は何を表すのだろうと、ふと気になりました。 ### 質問 * DNS サーバーが返してくる DNS レコードについて、ほぼほぼもれなく付与されているこの「IN」という文字列は、一体何を表していますか? + たとえば「IN」以外のレコードは存在しますか? + その場合、その「IN」以外のレコードは例えばどのような用途で一般的には使われるのでしょうか?
回答: `IN`はインターネット(Internet)の意味です("INternet"なのか"InterNet"なのかまではわかりません)。インターネット(ここではグローバルのインターネット(WAN)だけでは無く、インターネットプロトコル(IPv4やIPv6)を使用するLANも含む)で使用するレコードであることを意味します。 DNSレコードではこの部分を"class"と呼んでおり、どのようなプロトコルを用いたシステムで使用するかを表しています。`IN`を含め、次のような値が定義されています。 * `IN` インターネット 普段私達が使用しているネットワーク。スタック・オーバーフローにアクセスする場合も、インターネットが使用される。 * `CS` CSNET ARPANETに直接接続できない機関向けに提供されたネットワークらしい。各機関は後継のNSFNET、そして、さらに広域接続になるインターネットへ移っていったため、現在は停止している。※BIND 9は未サポートの模様。 * `CH` Chaosnet MITで開発されたLAN向けのプロトコルを用いたネットワークらしい。すでに歴史的な意味しか無いが、BINDのバージョン情報レコード`version.bind`ではこのクラスを用いている。 * `HS` Hesiod) MITのProject Athenaで作られたネームサービス。ユーザーやグループなどの情報を提供するものらしい。言わばDNSの仕組みを用いたNIS/LDAPのようなもの。 `CS`は既に存在しないネットワークであるため、設定しても意味が無いですし、見ることは無いでしょう。`CH`はBINDのバージョン情報提供に用いられているため、今でも見ることができますが、Chaosnet自体を現役で使用しているところがあるのかは不明です。`HS`は、たぶん今でも使おうと思えば使えると思いますが、対応するアプリが非常に限られると思われるため、ユーザー情報などは普通にLDAP等を用いた方が良いでしょう。 参考文献 * RFC1034 DOMAIN NAMES - CONCEPTS AND FACILITIES 3.6. Resource Records * RFC1035 DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION 3.2.4. CLASS values * BIND 9 Administrator Reference Manual (Bind 9.14.4) 5.3 ZONE FILE