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