DNSの例
(実際のパケットダンプを使った説明)
2001年11月1日
上牧瀬 誠
DNSプロトコルフォーマット
ヘッダ
(必須)
質問
(ネームサーバ宛ての質問)
回答
(質問への回答としてのリソースレコード)
オーソリティ
(オーソリティをポイントするリソースレコード)
追加情報
(追加情報をもつリソースレコード)
•DNSメッセージはUDPプロトコルで運ばれる
•53番のポートが使われる
•メッセージタイプにより空になるセクションもある
ヘッダ
識別 Opecode
質問の数 回答の数
オーソリティの数 追加情報の数
Q
RRCode
T
CR
DR
A
A
A未使用
0 16 3124
識別 : 問い合わせを生成するシステムが割り当てる固有の番号
QR : 問い合わせ(0),応答(1)
Opecode : 問い合わせのタイプ
AA : 応答が正式なものである
TC : メッセージが短縮されている
RD : 問い合わせホストが再帰問い合わせを希望
RA : 再帰サービスをネームサーバが希望できる
Rcode : エラーの種類
質問
QName
(可変長)
QType QClass
0 16 31
QName : 問い合わせの対象ドメイン名
QType : 問い合わせのタイプ
QClass : 問い合わせのクラス
実際の例
•rootでtcpdumpを実行
–tcpdump –xX –s 1000 host kamimakise and
port 53
•次のpingコマンドを実行
–ping yahoo.co.jp
•IPアドレスがわからないのでDNS(yumi)に
yahoo.co.jpのIPアドレスを問い合わせる
実際の例(IPヘッダ)
4: バージョン
5: ヘッダ長
00 : サービスタイプ
0039 : パケット長(57オクテット)
d470 : 識別子
0000 : フラグ,フラグメントオフセット
40 : 生存時間
11 : プロトコル(UDP)
e2ae : チェックサム
c0a82143 : 送信元IPアドレス(192.168.33.67(kamimakise))
c0a82101 : 宛先IPアドレス(192.168.33.1(yumi))
実際の例(UDPヘッダ)
04bd : 送信元ポート(1243番)
0035 : 宛先ポート(53番)
0025 : 長さ(37オクテット)
5bd3 : チェックサム
実際の例(DNSヘッダ)
2622 : 識別子
0100 :標準問い合わせ,再帰希望,エラーなし
0001 : 質問の数(1個)
0000 : 回答の数(なし)
0000 : オーソリティの数(なし)
0000 :追加情報の数(なし)
実際の例(DNSデータ)
057961686f6f :5オクテット(yahoo)
02636f :2オクテット(co)
026a70 :2オクテット(jp)
00 : ヌルラベル(終了)
0001 : ホストアドレスの問い合わせ
0001 : インターネットシステム
実際の例(応答パケット)
実際の例(応答パケットの内容)
•質問 : 1個
–yahoo.co.jp
•回答 : 8個
–d2519946 :210.81.153.70
–d298ec32 :210.152.236.50
–d28cc810 :210.140.200.16
–d298ec6f :210.152.236.111
–d298ec70 :210.152.236.112
–d298ec71 :210.152.236.113
–d2519944 :210.81.153.68
–d2519945 :210.81.153.69
実際の例(応答パケットの内容)
•オーソリティ : 3個
–dns1.yahoo.co.jp
–dnsn201.yahoo.co.jp
–ns.tokyonet.ad.jp
•追加情報 : 3個
–d28cc832 :210.140.200.50
–cae5c678 :202.229.198.120
–caef3d3d :202.239.61.61