コンテンツにスキップ

DNS note

正引き

ドメイン名からIPアドレスに変換

(使用例)
nslookup google.co.jp

逆引き

IPアドレスからドメイン名に変換

(使用例)
nslookup 192.168.0.115

DNS サーバ

実態は

  • 「ネームサーバ」
  • 「フルリゾルバ」

の 2 つに分かれている。

ネームサーバ

ドメインとそれに紐づく IP アドレスが登録されている。
「DNS コンテンツサーバ」「権威 DNS サーバ」と呼ばれることも。

・ネームサーバ
・DNSサーバ
・DNSコンテンツサーバ
・権威DNSサーバ

フルリゾルバ

あちこ ちのネームサーバに聞きまわって IP アドレスを調べてきて教えてくれる。
「DNS キャッシュサーバ」「フルサービスリゾルバ」と呼ばれることも。

・フルリゾルバ
・フルサービスリゾルバ
・DNSキャッシュサーバ

DNSサーバの種類

フルサービスリゾルバ(DNSキャッシュサーバ)

どんな手を使おうともお問い合わせに答えてあげるのがお仕事のDNSサーバ。
問い合わせに対して(キャッシュを見て)答えが分かれば答えてあげる、分からなければ偉いDNSサーバさんに代わりに問い合わせてくれる。
(一度問い合わせた内容は、キャッシュに保存する。)

権威DNSサーバ(DNSコンテンツサーバ)

自分の管理している情報を教えるのが仕事のDNSサーバ。
ゾーンファイルを基に仕事をする。

DNSルートサーバ

フルサービスリゾルバが、最初に問い合わせに行くDNSサーバ。

・ルートサーバ
・DNSルートサーバ
・ルートネームサーバ

DNSサーバ補足

プライマリDNSサーバ

メインで動いている権威DNSサーバ。
(権威DNSサーバは、通常、同じようなものが複数台同時に動いている)
ゾーンファイルを設定する必要があるのは、これのみ。

セカンダリDNSサーバ

サブで動いてる方。
プライマリからゾーンファイルを引っ張るので、ゾーンファイルの設定は不要。

ゾーン

ネームサーバが管理する範囲のこと。
ネームサーバは、自分とその直下というドメイン名前空間の部分木をゾーンとして管理する

リソースレコード

ネームサーバが管理するホストの情報。

DNSサーバーの構築

http://www.criterion.sc/sub_notes/bind.html

スタブリゾルバ

クライアントのリゾルバをスタブリゾルバということもある。

ホストゾーン(Hosted Zone)

DNSレコードがまとめられたもの。
AWS Management Console または Route 53 の API などで設定する。

DNSレコード

DNSの定義情報。どのドメインがどのIPと結びつくか、といった情報。

ゾーンファイル

DNSレコードが記述された情報。
権威DNSサーバは、これを基に仕事をする。

以下の種類がある。

SOA(Start Of Authority)

(書式)

【ドメイン名】     【クラス名】 SOA 【DNSサーバのドメイン名】 【連絡先】 (
        【シリアル番号】
        【更新チェックの間隔】
        【リトライ間隔】
        【問い合わせ諦めるぜ期間】
        【ネガティブキャッシュの有効期限】 )
項目 内容
ドメイン名 決まり文句。普通は「@」
クラス名 決まり文句。普通は「IN」
DNSサーバのドメイン名 DNSサーバ名
連絡先 「@」は「.」に換える。「.」は「.」に換える。
シリアル番号 セカンダリDNSサーバに向けての通知。現在のバージョンを表す。年月日+通番。
更新チェックの間隔 セカンダリDNSサーバがゾーンファイルをチェックする間隔。秒。
リトライ間隔 セカンダリDNSサーバがゾーンファイルのチェックに失敗した場合、再チェックまでの待ち時間。秒。
問い合わせ諦めるぜ期間 プライマリDNSサーバへのアクセスをあきらめる時間。秒。
ネガティブキャッシュの有効期限 不明情報(このドメインは404とか)の保持期間。秒。

(記述例)

@     IN SOA ns1.example.com. postmaster.example.com. (
        2014033101
        10800
        3600
        604800
        86400 )

Aレコード(エーレコード。AはAddressの頭文字)

「このドメイン名はこのIPアドレスだよ」と教えてあげる基本の書き方。
(書式)

【ドメイン名】     IN A            【IPアドレス】

(記述例)

ns1.exmaple.com.     IN A            198.51.100.2

AAAAレコード(クワッドエーレコード)

IPv6アドレス用のAレコード。(AレコードはIPv4アドレス用)
IPv4(32ビット)では足りなくなるってんで128ビットにアドレス空間を広た次世代のIPがIPv6。

CNAMEレコード(シーネームレコード。Canonical NAME)

CNAMEは「エイリアス(alias=通称、別名)」とも呼ばれるんだそうです。
「このドメイン名とこのドメイン名は同じだよ」と教えてあげる書き方。
(書式) 【別名】 IN CNAME 【元のドメイン名】 (記述例) sub.example.com. IN CNAME hoge.example.com.

MXレコード(エムエックスレコード。Mail eXchange)

「〇〇@example.co.jp」というメールアドレス宛てにメールを送ったらこのメールサー バで受信します、という設定。
MXレコードがなければ代わりにウェブサーバ宛てにメールが届く。
(代わりに A レコードで紐づけられている IP アドレスに対してメールを送ろうとする。)

メールの配送先メールサーバ。
メールサーバが複数あるなら優先度を設定。(メール紛失を防ぐ) 「このメアド(「@」より後を書く)のサーバはコレだよ」という情報を伝える。 (書式)
【ドメイン名】 IN MX 【優先度】 【配達先メールサーバ】 (記述例)

example.com.    IN MX 10     mail.example.com.
example.com.    IN MX 20     mail2.example.com.
(優先度は、数字が増えるほど優先度が下がる) 
(「MXレコード」は「Aレコード」とセットで設定。単独ではNG)

NSレコード(エヌエスレコード。Name Server)

他のネームサーバを指定して対応を委ねる。サブドメインの問合せ用。 「このドメインのことはこっちで聞いてね」と丸投げする書き方。

(書式)

【ドメイン名】      IN NS         【DNSサーバ名】

(記述例)

example.com.      IN NS         ns1.example.com.

PTRレコード(ピーティーアールレコード。PoinTeRの略)

Aとは逆に「このIPアドレスはこのドメイン」と教えてあげるのですが、Aレコードとは全然別モノで、IPアドレスの割り振りの仕組みを理解していないと書けない。 エキスパート向け? (例) aaa.bbb.ccc.ddd.in-addr.arpa. 86400 IN PTR ns.example.com.

TXTレコード(テキストレコード。Textの略)

SPFレコード(Sender Policy Framework)とかSenderIDとも呼ばれ「なりすましメール」を防ぐ。
知識が無いと書けないので、初心者には敷居が高い。
(書式)

【ドメイン名】     IN TXT            【コメント】
"v=spf1 ip4:192.168.0.1/16 -all"

DNSレコードとしてはSPFレコードという種類はなく、SPFレコードはTXTレコードとして記述される。
そのためSPFレコードの設定内容はダブルクオートで囲む。  
SPFレコード中で最初に出てくる「v=spf1」はspfのバージョンを示す。
その後にspf判定内容が記述される。  
基本的に受信を許可するメールサーバのIPアドレスが記載されている。
ここに記載されたIPアドレスからのメールであればメールを受信し、記載がなければメールを拒否したりする。

SPFレコードの構成要素

<qualifier><mechanism>:<値>

mechanismとqualifierから構成されている。
mechanismはどういったIPをマッチさせるかを記述し、qualifierはマッチした後の処理方法

(例)
"v=spf1 ip4:192.168.0.1/16 -all"
"v=spf1 include:_spf.test01.jp  ~all"

qualifiler(SPFレコードの判定結果)

qualifilerはmechanismにマッチした際にどのような判定とするか記述する。

qualifiler 判定結果 処理
"+" Pass メールを許可します
"-" Fail メールを拒否します
"~" SoftFail メールを拒否しますがFailよりは弱い拒否です
"?" Neutral どれにもマッチしなかった場合など。
(-----) None 送信元ドメインにはSPFレコードが登録されていません

qualifilerの記述がないときは+が記述されていると見なす。 (+は省略可)

None は何だかよく分からん。
SoftFailの”弱い拒否”も、よく分からん。

mechanism

all

全ての場合にマッチする。SPFレコードの値の一番最後に記述。 最後に配置することで、どの条件にもマッチしなかった場合にどうするかを記述できる。大抵はその場合はメールを拒否する。
ファイアウォールで最後にdeny allがあるのと同じ思想。

all機構は、引数を取らず常に認証を通します。
SPFレコードの末尾で使うのが一般的です。
たとえば認証結果を失敗にする検証子(qualifier)と組みあわせた「-all」は、
「これまでの機構によって認証が通らなかったIPアドレスは、全て認証失敗する」ことを意味します。

ip4

送信元メールサーバのIPアドレスが、指定したネットワークアドレスの範囲内にあればマッチする。

(例)
"v=spf1 ip4:192.168.0.1/16 -all"

この場合は、送信元メールサーバのIPアドレスが、   192.168.0.1 から 192.168.255.255の範囲にあればマッチする。

ip4機構とip6機構は、IPアドレスを引数とします。
CIDR記法によるブロック指定(例 192.168.0.0/16)も可能です。送信サーバのIPアドレスが、与えられたIPアドレスに含まれるならば、認証を通します。

a

そのドメインのAレコードにメール送信元サーバのIPアドレスがあればマッチする。 何も指定されていない場合は、そのSPFレコードが登録されているドメインを指す。

(例:example.comのSPFレコード)
"v=spf1 a -all"  
"v=spf1 +a:example.com -all"  

メール送信元サーバのIPアドレスが、example.comのAレコードと一致したら、そのメールを許可するという意味。
省略して書くと上、省略せずに書くと下。

a機構は、ドメイン名を引数とします。
送信サーバのIPアドレスが、与えられたドメインのAレコードもしくはAAAAレコードで解決されるならば、認証を通します。

mx

そのドメインのMXレコードにメール送信元サーバのIPアドレスがあればマッチする。
何も指定されていない場合は、そのSPFレコードが登録されているドメインを指す。

mx機構は、ドメイン名を引数とします。
送信サーバのIPアドレスが、与えられたドメインのMXレコードで解決されるならば、認証を通します。

include

引数のドメインのSPFレコードを参照し、参照先でマッチすればマッチする。
参照先のドメインでもさらにincludeが指定されており、何重かの入れ子構造になっている場合もある。

include機構は、ドメイン名を引数とします。
include先ドメインのSPFレコードで認証処理が通るならば、認証を通します。include先でさらにinclude機構があった場合は、再帰的に評価します。

ptr

ptr機構は使わないようにしましょう。

redirect

redirectは、正確には機構ではなく変更子(modifier)です。
redirect先ドメインのSPFレコードを使って認証処理を行います。
redirect変更子を利用するならば、他の機構は使わないようにしましょう。
redirect変更子を使ったシンプルな例は次のとおりです。

"v=spf1 redirect=example.com"
SPFレコードのテスト方法

SPF Surveyor
https://dmarcian.com/spf-survey/

SPFレコードの設定・書式について理解する

https://monaski.hatenablog.com/entry/2016/02/27/150530

送信ドメインを認証するためのSPFレコードに詳しくなろう

https://sendgrid.kke.co.jp/blog/?p=3509


その他

TTL(Time To Live)

よそから問い合わされたDNS情報を保存させる時間。たいがいは86400秒=1日に設定するそうです。

(参考サイト)
http://server.change.jp/5-minibird/5-minibird_5/
http://wa3.i-3-i.info

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ http://pocketstudio.jp/log3/2012/03/31/migrationg_an_existing_domain_to_route53/


TLDの概要検索

https://www.gonbei.jp/reg/domain_detail.cgi?p1=inc https://www.gonbei.jp/reg/domain_detail.cgi?p1=xxx


DNSを利用してドメイン名を問い合わせ

dig www.kakiflow.com kakiflow.com

;; QUESTION SECTION:
;www.kakiflow.com.  IN  A

;; ANSWER SECTION:
www.kakiflow.com.   3467    IN  A   202.254.236.128

サブドメインが複数存在するかどうかは、SANs の内容を見る。

例示やテストで使っ ていいドメイン

  • example.co.jp
  • example.jp
  • example.com
  • example.net