■ はじめに
DNS (Domain Name System)について扱う
目次
【1】DNS (Domain Name System) 【2】役割 イメージ(階層構造) 【3】DNSへの問い合わせシーケンス イメージ 【4】関連用語 1)リゾルバ 2)ゾーン 3)ゾーン転送 【5】DNSレコード 1)レコード種類 a)Aレコード b)MXレコード c)NSレコード d)CNAMEレコード e)PTRレコード f)SOA レコード 2)使いどころ 3)使用上の注意 【6】DNSによるTCP/UDPの使い分け 【7】DNS関連のコマンド 【8】DNS関連のセキュリティ攻撃 1)DNSキャッシュポイズニング(DNS cache poisoning)
【1】DNS (Domain Name System)
* DNS:完全修飾ドメイン名 (FQDN、ホスト名、ドメイン名(サブドメイン名)等) をIPアドレスを変換するプロトコル => http://www.yahoo.co.jp/xxx => "www.yahoo.co.jp" ホスト名 * TCP/UDPで、ポート番号は「53」
* 権威DNS => ドメイン名とIPアドレスの変換情報を保持しているDNS * キャッシュDNS => 変換情報を保持していないDNS
【2】役割
1)ドメイン名 <=> IPアドレス の相互変換 2)メール転送先を教える
イメージ(階層構造)
root | +-----------+------------+ ... | | | fr jp it | +-----------+------------+ ... | | | co | +-----------+------------+ ... | | | yahoo | +-----------+------------+ ... | | | www
【3】DNSへの問い合わせシーケンス
1)ブラウザ(クライアント側)で入力された「URL」から、 対象のドメイン名を抽出する 2)抽出されたドメイン名を、OSの名前解決機能に引き渡す 3)名前解決機能は、「ドメイン名」を ネットワーク上のDNSサーバに問い合わせる 4)DNSサーバは、問い合わせに対する回答を保持している場合、 クライアントに返答する 5)DNSサーバが回答を保持していない場合、 さらに上位のDNSに問い合わせる 6)上位DNSサーバが、DNSサーバの問い合わせに対して回答する ※ 回答を保持していない場合は、さらに上位のDNSへ問い合わせ 7)DNSサーバは、上位DNSサーバから得た回答を クライアントに回答し、自身のキャッシュに回答情報を保存する。 8)取得したIPアドレスを、ブラウザに戻す。 9)ブラウザ(クライアント側)は、IPアドレスを参照し、 サイトにアクセスする。
イメージ
┌───────┐ ┌───────┐ │ │ ────(1)────> │ │ │ │ yahoo.co.jp のIPを │ │ │ │ 問い合わせ │ │ │ クライアント │ │ DNSサーバ │ │ │ <───(2)───── │ │ │ │ yahoo.co.jp は │ │ │ │ IP 192.1XX.0.1 の │ │ │ │ サーバです └───────┘ │ │ │ │ ┌───────┐ │ │ ────(3)────> │ │ │ │ IP 192.1XX.0.1 の │ │ │ │ サーバにアクセス │IP 192.1XX.0.1│ │ │ │の Web サーバ │ │ │ <───(4)───── │ │ │ │ 画像や文章のデータを │ │ │ │ 送信 │ │ └───────┘ └───────┘
【4】関連用語
1)リゾルバ
* DNSサーバを使うクライアント
2)ゾーン
* 各ノードで管理されるDNS情報の単位
3)ゾーン転送
* DNSサーバの管理するゾーン情報を 別のコンピュータに一括して転送すること
【5】DNSレコード
* ゾーンに含まれるデータの単位で、DNS の種別
例:DNSレコードが「Aレコード」の場合
「ドメイン名 = IPアドレス」とする場合、 「yahoo.co.jp A 17.149.160.49」
1)レコード種類
a)Aレコード(AはAddressの頭文字)
* ホスト名からIPアドレスへの変換のためのレコード
b)MXレコード(Mail eXchangeの略)
* メールの転送先を示すレコード * メール転送先となるメールサーバを記述するためのレコード =>メールアドレスの「@」よりもうしろのドメイン名を キーにしてMXレコードを引く(検索する)ことにより 配送先のメールサーバを知ることができる。
c)NSレコード(Name Serverの略)
* 下位ドメインのDNSサーバ名を表すレコード
d)CNAMEレコード(Canonical NAMEの略)
* ホスト名のエイリアス(別名) ※ Canonical(カノニカル) : 標準的な
e)PTRレコード(PoinTeRの略)
* IPアドレスからホスト名への変換のためのレコード (Aレコードとは逆)
f)SOA レコード(Start of Authorityの略)
* ドメイン名からそのドメインに関する権威を持つ ホスト、 管理者、また現在のシリアル番号などに 変換するためのレコード
2)使いどころ
ドメイン名とIPアドレスの対応は必ずしも1対1ではない。 複数のドメイン名を、同じIPアドレスに設定する場合がある。
例
IN NS yahoo.example.jp. yahoo IN A 192.168.10.111 www IN A 192.168.10.111 ftp IN A 192.168.10.111 ... この状態でIPアドレスが変わった場合、 全ての設定に手を加えなくてはならないので、 yahoo IN A 192.168.10.111 www IN CNAME yahoo.example.jp. ftp IN CNAME yahoo.example.jp. としておけば、IPアドレスが変わっても 修正個所を最小に抑えられる。 (プログラムで言えば、定数化しておくイメージ?)
3)使用上の注意
* CNAMEレコードは、 MXレコードやNSレコードを設定することができない
【6】DNSによるTCP/UDPの使い分け
* 通常の問い合わせ
* セカンダリDNSサーバがプライマリDNSサーバの持つ データの複製するために行うゾーン転送 * DNSメッセージが512オクテットを超えた場合
参考文献
http://atnetwork.info/tcpip2/tcpip219.html
http://www.7key.jp/nw/technology/protocol/resolver.html
【7】DNS関連のコマンド
* 以下に分冊。
ネットワーク系コマンド ~ DNS編 ~
https://dk521123.hatenablog.com/entry/2021/08/07/000000
# 【8】DNS関連のセキュリティ攻撃
1)DNSキャッシュポイズニング(DNS cache poisoning)
* 以下の関連記事を参照のこと。
DNSに関するセキュリティ攻撃
https://dk521123.hatenablog.com/entry/2016/01/12/115100
参考文献
DNSの仕組み
http://www.atmarkit.co.jp/ait/articles/0112/18/news001.html
DNSレコード
http://server.change.jp/5-minibird/5-minibird_5/
http://www.atmarkit.co.jp/fnetwork/rensai/dns01/dns-record.html
http://ascii.jp/elem/000/000/458/458858/
http://www.fc-lab.com/network/server/dns/zone.html
CNAMEレコード
http://www.atmarkit.co.jp/ait/articles/0302/15/news002.html
http://e-words.jp/w/CNAMEE383ACE382B3E383BCE38389.html
http://ascii.jp/elem/000/000/458/458858/
DNSへの問い合わせシーケンス
http://www.lpi.or.jp/column/linux/linux_m07.shtml
動画
https://www.youtube.com/watch?v=sOWnzKZJHcQ
関連記事
ネットワーク系コマンド ~ DNS編 ~
https://dk521123.hatenablog.com/entry/2021/08/07/000000
DNSに関するセキュリティ攻撃
https://dk521123.hatenablog.com/entry/2016/01/12/115100
DebianでDNSタイムアウトを設定する
https://dk521123.hatenablog.com/entry/2017/05/26/004035
NAT / NAPT / UPnP
https://dk521123.hatenablog.com/entry/2016/09/21/231938