DNS基礎編

DNS

支援士試験で問われるであろうDNSに関するセキュリティ関連の技術及びその仕様を
基礎編、応用編、脅威編の3回に分けて記載していこうと思います。
基本情報/応用情報に合格又はそのレベルの知識を前提としイチからDNSの仕様には触れませんが
基礎知識には軽く触れようと思います

DNSの基本
DNSとは名前解決に利用されるプロトコルで
ポート番号53/udpがデフォルトで利用されます。
名前解決とはドメイン名をIPアドレスに変換することで、その方法には2種類あります

名前解決の種類とその流れ
名前解決には「再帰問い合わせ」と「反復問い合わせ」2種類があり
リゾルバ(ユーザのPCで動作するDNSのソフトウェア)
キャッシュDNSサーバ(フルサービスリゾルバ)
権威DNSサーバ(コンテンツサーバ) の3名が登場します
・再帰問い合わせの流れ
1 リゾルバがキャッシュDNSに対してDNS要求を出す
2 キャッシュDNSは後述する反復問い合わせの結果(ドメインに紐づくIPアドレス)
をキャッシュでき、そのキャッシュを持っていたらそれを返す
・反復問い合わせの流れ(example.jpというドメインを想定)
1 リゾルバがキャッシュDNSに対してDNS要求を出す
2 キャッシュDNSがキャッシュを持っていなかったらドメインを管理する権威DNSサーバに問い合わせる
3 ルートDNS→jpを管理するDNSサーバ→example.jpを管理するDNSサーバのという流れでたらい回しにされる
4 取得した情報(※)をキャッシュとして保存し、リゾルバに結果を返す
図解すれば一番良いのですが見づらいの諦めました。
こちらのサイトが分かりやすいです

リソースレコード概要
DNSサーバには「リソースレコード」と呼ばれるデータを登録する
下記によく見るリソースレコードを挙げる
・Aレコード
IPアドレス(IPv4)を登録する
例)
example.jp. 3600(秒) IN A 203.0.113.1
左から ドメイン名 TTL(キャッシュの有効期間) クラス※ リソースレコード名 IPアドレス

・AAAAレコード
IPアドレス(IPv6)を登録する
4を意味するクアッドAレコードと読むらしい
例)
example.jp. 3600 IN AAAA 2001:db8::1
構成はAレコードと同じ

・MXレコード
メールを受信するメールサーバのホスト名を設定する
例)
example.jp. 3600 IN MX 10 mail.example.jp.
example.jp. 3600 IN MX 20 backup-mail.example.jp.
ドメイン名 TTL クラス リソースレコード名 優先度 メールサーバのホスト名
優先度の小さいホストが優先的に受信する、上記設定の意味としては
example.jp宛のメールアドレスに送信されたメールは mail.example.jp. が受信するが
mail.example.jp. が何らかの理由で受信できなければ backup-mail.example.jp. が受信します
と言う意味になる

・CNAMEレコード
ドメイン名に別名(エイリアスとも)を付ける際に用いる
試験ではCDNサービス関連でよく見る
例)
shop.example.jp. 3600 IN CNAME service.example.jp.
エイリアス TTL クラス レコード名 本来のドメイン名
shop.example.jp にアクセスすると service.example.jp. にリダイレクトされる
なぜエイリアスを付ける必要があるのか、については
JPRSのこちらを参照されると良いと思います

・NSレコード
ドメインを管理しているDNSサーバのホスト名を返す
例)
example.jp. 86400 IN NS ns1.example.jp.
ドメイン名 TTL クラス レコード名 DNSサーバのホスト名

・SOAレコード
ゾーン情報を管理する為に用いる
ゾーンとはドメインとそれに紐づくリソースレコードをまとめたデータの事
example.com. IN SOA ns1.example.com. admin.example.com. (
        2023101901 ; シリアル番号
        3600 ; リフレッシュ間隔
        1800 ; 再試行間隔
        1209600 ; 有効期限
        86400 ) ; TTL
・シリアル番号
上記を例に、2023/10/19のゾーンファイルの1回目の更新後のゾーン情報 と言う意味
・リフレッシュ間隔
ゾーン転送(※)を行う間隔秒数を指定する、上記であれば3600秒(1時間ごと)に行う
・再試行間隔
ゾーン転送に失敗した場合、再度ゾーン転送を試みる間隔秒数を指定する
上記であれば1800秒(30分ごと)に行う
他にも試験で出題されるリソースレコードはあるが、それらは応用編以降で。


※クラスについて
クラスにはIN(INternet) CHAOS Hesiod という3つが存在するようですが
現状 IN 以外は利用されることはほぼ無いそうです
クラスはそのリソースレコードがどのクラスに属するかを明示する為のデータとの事
試験においても IN 以外は見ていない(気がする)ので他はおまけ程度で。

※ゾーン転送
ゾーン転送とはゾーン情報をプライマリサーバからセカンダリサーバへコピーすること


キャッシュについて
DNSにおけるキャッシュの役割はキャッシュそのもの。
簡単にいえば反復問い合わせの手間を省略する為にある
キャッシュにも種類があり、以下の2つが存在します
・ポジティブキャッシュ
反復問い合わせの結果が成功して得られた情報をキャッシュする
・ネガティブキャッシュ
反復問い合わせの結果が失敗した、と言う情報をキャッシュしておく
ここで言う失敗とは、DNS要求のドメインが存在していないことや他エラー等が考えられます

hostsファイルについて
hostsファイルにはドメイン名とそれに対応するIPアドレスの組が記載されています
上述の通りDNSは名前解決を行うプロトコルですが
hostsファイルが優先的にチェックされ、それでも無かったらDNSによる名前解決を行う

正引きと逆引き
ドメイン名をそれに紐づくIPアドレスに変換することを正引きと言ったりします
逆引きとは文字通り逆、IPアドレスからドメイン名を割り出す際に利用されます
基本は正引きですが
逆引きはアクセスされた側が、アクセスしてきた利用者のアクセス元を調べる際に利用されるとのこと

基礎編はこの辺にしておきます。
応用編ではもうちょっと踏み込んだ技術や他のリソースレコードについて触れようと思います。

コメント

タイトルとURLをコピーしました