ネットワークスペシャリスト - SE娘の剣 -

ネットワークスペシャリストの試験対策サイトです。
ネスペ試験の合格体験談、合格のコツ、過去問解説、基礎知識などの情報を掲載します。

カテゴリ:10.アプリケーション層(L5〜L7) > 10.3 DNS

IPアドレスはインターネットの世界の住所と考えればよい。例えば某出版社の住所を北緯と東経の数字で表すと、以下のようになる。「北緯35度41分,東経139度45分」
しかし、これだとどこにあるのか分かりにくいし、覚えにくい。そこで、「千代田区大手町1-3-7」と表記すれば、人間に分かりやすい。これがDNSと考えてみてはどうだろう。しかも、階層構造だ。
女性直立

DNS(Domain Name System)の仕組みや、キャッシュサーバ、コンテンツサーバ、再帰問い合わせの意味、動作の流れに加え、セキュリティ対策は以下のサイトにて丁寧に解説されている。
http://www.ipa.go.jp/security/vuln/documents/DNS_security.pdf (旧リンク)

ページ数はそこそこあるが、DNSを理解するにはとても良い資料です。
また、DNSを理解する最もいい方法は、自分でDNSサーバを立てることである。
「自宅サーバ」関連の本を一冊用意し、古くなったPCに本に添付のCDでLinuxをインストールする。そして、DNSサーバを立ててみよう。ドメインは1000円程度で取得できる。

参考1
DNSのROOTサーバは世界に13個ある。13台というわけではなく、当然各DNSルートサーバで冗長化されているので、台数は山ほどある。
DNSサーバを構築したら、一度ルートファイルを見てほしい。日本にもサーバがあり、13番目のMがそうである。

参考2(本当にどうでもいい情報)
example.comは、資料などのために自由につかっていい。誰かがこのドメインを取得することはできない。

過去問をみてみよう。
DNSのいい勉強になるので、是非チャレンジしてほしい。※実際には空欄は選択式
 インターネットで使われるドメイン名及びIPアドレスは,  DNSを利用して管理されている。DNSは,多数のDNSサーバで構成される[ a ]データベースであり,ルートDNSサーバを頂点とし,ドメイン名空間と呼ばれるツリー構造を構成している。
 インターネットでは,[ b ]と[ c ]を考慮して,13のルートDNSサーバが配置されている。
 DNSのツリー構造の最上位に位置するルートDNSサーバの配下には,ドメイン名(例:jpドメイン,co.jpドメインなど)に対応したDNSサーバがある。あるドメイン名を管理するDNSサーバに関する情報は,ツリー構造の[ d ]のドメイン名を管理するDNSサーバが保持している。ホストに関する情報は,そのホストが所属するドメイン名を管理するDNSサーバが保持している。
 ドメイン名の中で,www.example.co.jpのように特定のホストを表現したドメイン名を[ e ]と呼ぶ。
 (中略)
一つのドメインを管理するDNSサーバは,通常は[ c ]を考慮して2台のサーバで構成される。一方を[ f ]、もう一方を[ g ]と呼ぶ。
(H18SW秋午後1問1)

正解は以下
a 分散型
b 負荷分散
c 可用性
d 上位階層
e FQDN
f プライマリサーバ
g セカンダリサーバ

・URL(Uniform Resource Locator)は、「Webページの場所を示すための表記法(H22秋IP問74より)」です。
・FQDNは、「Fully Qualified Domain Name:完全修飾ドメイン名」です。

Q. FQDNとホスト名、ドメイン名の関係は?

ホスト名とは、コンピュータにつけられた名前である。Windowsのコンピュータ名とは若干違うので、別途解説するが、ここでは同じとして考えよう。ドメイン名はご存じ、yahoo.co.jpなどのドメイン名である。FQDNは、完全修飾ドメイン名という意味で、完全に修飾(限定)されたドメイン名という意味である。
ネットワークスペシャリストを目指す女性SEハテナ 

何を修飾(限定)しているの?
ホストである。ドメイン名(seeeko.com)であれば、メールサーバやWebサーバ、DNSサーバなどの多数のサーバがあり、ホストを1つに限定できない。つまり、IPアドレスも限定できない。DNSサーバでは、ドメインを管理するだけでなく、ホスト名も管理する。ただ、どちらか一方だけではIPアドレスが特定できない。FQDNとIPアドレスを対応づけて管理している。これら3者とURLを加えて関係は以下になる。

FQDNとホスト名とドメイン名とURL_ネットワークスペシャリスト

Q1. DNSで管理するのは、コンピュータ名とホスト名のどちらか。
1 

え?
そもそもこの2つは別物ですか?
Windowsの世界では別物である。
でも、同じと考えていても、大きな問題はないだろう。
両者の違いを簡単に書く。

1)コンピュータ名(NETBIOS名)
・今は使われなくなったNETBEUIというプロトコルでの名前

2)ホスト名
・TCP/IPの世界で利用する
・ドメインによるツリー構造の概念がある。(www.yahoo.co.jpなど)


Q2.では名前解決の方法は?
1)コンピュータ名
Winsサーバやlmhostsファイル

2)ホスト名
DNSサーバやhostsファイル
女性ほおづえ

コンピュータ名とホスト名が違うことはあるの?
DNSの章で言いたかったことは、NETBIOS上のコンピュータ名と、TCP/IP上のホスト名の違いを言いたかったのではない。
DNSの概念を伝えたかった。
例えば、コンピュータ名にWebSV1という名前をつけ、DNSサーバでは、そのコンピュータにWWWというホスト名をつけることができる。それがDNSサーバである。また、DNSラウンドロビンの仕組みにより、WebSV1だけでなく、WebSV2、WebSV3にも、WWWというホスト名を対応付けることができるのだ。

過去問(H23NW午後玉2)に、DNSのゾーンファイルの例があるので掲載する。
$TTL 86400 ;1日 ←
@ IN SOA ns.y-sya.example.co.jp. hostmaster.y-sya.example.co.jp.(←
  2011090101 ; serial番号 ←
  43200 ; refresh 時間(12時間) ←
  1800 ; retry 時間(30分) ←
  604800 ; expire 時間(7日) ←
  10800 ); negative cache 時間(3時間) ←
IN NS ns.y-sya.example.co.jp. ←
IN MX 10 mail.y-sya.example.co.jp. ←
一つ一つ解説する。
,聾紊竜事で詳しく記載した。
△牢浜情報と考えればいいだろう。前半はDNSサーバの名前を記載。hostmaster.y-sya.example.co.jpは、管理者のメールアドレスがhostmaster@y-sya.example.co.jpという意味。
serial番号。セカンダリDNSサーバは、この値が増えていたら、DNS情報が変更されたと判断する。内容を変えても、この値を増やさなかったら、セカンダリDNSは情報を取得しない。年月日+通番で記載することが多い。
ぅ札ンダリDNSサーバが、プライマリDNSサーバに情報を取得する間隔
ゾ綉い失敗した場合のリトライ間隔
上記に失敗し続けた場合、このゾーン情報を廃棄するまでの時間。TTLは、端末側のキャッシュであるので、別物。
Negative cache(MINIMUMと表現されることもある)は、引けなかった情報のキャッシュ時間である。
3
よくわからないのですが、
パソコンが、引けなかった情報をキャッシュするのはわかります。
でも、DNSサーバは自分が情報を持っている側ですよね。
だったら、引けなった情報のキャッシュってなんですか?
このNegative cacheはDNSのキャッシュサーバでのみ利用される。TTLが成功したDNS情報のキャッシュ時間。Negative cacheは引けなかったDNS情報のキャッシュ時間なので、ペアで考えるとわかりやすいだろう。

問題
Q.セカンダリDNSサーバが、ゾーンデータファイルをコピーすべきか否かをチェックする時間間隔を答えよ(H23NW午後玉2設問4(3))

↓マウスをドラッグしてください。
A.43,200秒(12時間)
リフレッシュ(refresh)間隔で設定された時間である。

(1)SOA(Start Of Authority)
 ゾーンに関する情報

(2)A(Address)
ns1.network-exam.comというNS(ネームサーバ)のIPアドレスを192.168.1.5に指定し、www.network-exam.comというWWW(Webサーバ)ののIPアドレスを192.168.1.20に指定する場合は以下である。
ns1   IN A   192.168.1.5
www   IN A   192.168.1.20

※INはinternetの意味らしいが、特別な意味をなしておらず、無くてもいいはず。

または以下のようにFQDNで書いても良いが、ドメイン情報は既にnamed.confにて指定しているから上記のような省略形が一般的である。
ns1.network-exam.com.   IN A   192.168.1.5
www.network-exam.com.   IN A   192.168.1.20
※ここで、「ns1.network-exam.com.」の最後の「.」が無いと、自動的に「network-exam.com」が付与されるので、「ns1.network-exam.com.network-exam.com」になってしまう。

(3)MX(Mail eXchanger)
・過去問では、DNSにおいて、「電子メールの送信に利用されるリソースレコードはどれか(H20NW午前 問42)」という設問があった。
答えはMXレコードである。選択肢にはMX、NS、PTR、SOAの4つしかなかったがめMXを選んだが、実際にはAレコードも参照しているはずである。
・メールサーバを設定するには、MXレコードとAレコードの2つが必要である。※MXレコードに直接IPアドレスを書いても、うまく動作することも多いかとは思います。しかし、RFCのルールではFQDNで書くように決まっており、IPアドレスで記載すると正常に送れない場合もあります。
  MXレコード
      IN MX 10 mx1.network-exam.com.
      IN MX 20 mx2.network-exam.com.
  ※数字は優先度を差し、小さい方が優先される。この場合は10が優先

 Aレコード
   mx1    IN A   192.168.1.11
   mx2    IN A   192.168.1.12
※実際の動作としては、MXレコードにIPアドレスを直接記載しても動作はする。

(4)NS(Name Server)

(5)PTR(PoinTR)

(6)CNAME(Canonical NAME)

(7)TXT
TXTレコードは任意の文字を記載できます。よく利用される例として、SPFの記述があります。
http://sc.seeeko.com/archives/3809455.html
SPFで、メールを送信するサーバを指定することで、メールの詐称を判断します。

また、任意の文字を記載できるので、他のレコードに比べて、たくさんの文字列が記載されている可能性があります。DNS AMP攻撃では、この仕組みが利用されました。ようは、増幅させるのに都合がいいのです。
http://sc.seeeko.com/archives/4562656.html

また、TXTレコードに攻撃指令を入れる場合もあります。
過去問(H29春SC午後玉2)では、「OSで指定されたDNSサーバに対して、マルウェアに保持されたFQDNの全てのTXTレコードを問い合わせ、得られた文字列を指令として解釈し、動作する」とあります。

リゾルブ(resolve)は「解決する」という意味がある。
リゾルバ(resolver)は、名前解決処理をしてくれるものということになる。一般的にはクライアントPCの名前解決処理をするプログラムを指す。

また、オープンリゾルバは、言葉の通り「オープン」な「リゾルバ」である。通常であれば、DNS問合せは自社内などの制限されたものしか受け付けない。どこからのDNS問合せも受け付けるのがオープンリゾルバである。
しかしこれが踏み台となって、DDoS攻撃に加担してしまう場合もある。
IPAから注意喚起が出されていた。
http://jvndb.jvn.jp/ja/contents/2013/JVNDB-2013-000087.html

DNSの名前解決方法には、「再帰問い合わせ」と「反復問い合わせ」の2種類がある。
再帰問い合わせ
クライアントのリゾルバから、DNSサーバに対して問い合わせをする。再帰的という言葉は、「再び帰ってくる」。結果が分かるにしろ分からないにしろ、問い合わせをした結果の答えが帰ってくる。
ポイントは、最終的な回答をすること。

反復問い合わせ ※過去問(H22SC春午後玉1)では、「非再帰的な問合せ」という表現が使われました。
ルートネームサーバから順に問い合わせる。図にあるように、何度も「反復」している。
たとえば、y-sya.example.co.jpの場合
\こΔ13台あるルートネームサーバに問い合わせ。ルートネームサーバは.jpドメインのサーバを教える。
jpドメインのサーバに問い合わせ。ルートネームサーバはco.jpドメインのサーバを教える。
F瑛佑example.co.jp
て瑛佑y-sya.example.co.jp
イ海里茲Δ砲靴y-sya.example.co.jpのDNSサーバに到達し、DNS名前解決をしてもらう。
過去問ではDNSのこの動作に関して、「インターネット上のDNSサーバは階層化されており、ある名前に対して情報がない場合には、上位のDNSサーバに問い合わせる」とある。(H21NW午前問9)

)フォワーダへの転送
フォワーダにて、他のDNSサーバに依頼する。設定は、DNSゾーンファイルの forwardersに指定する。たとえば、社内のDNSサーバが大手プロバイダのDNSサーバをフォワーダとして設定する。DNSの問い合わせはフォワーダに任せる。問い合わせ結果は、フォワーダからPCに直接返すのではなく、自分が知っていたかのように返す。
dns
再帰問い合わせの場合は、最終的な回答(y-sya.example.co.jpに対するIPアドレス)をする。一方、反復問い合わせは、最終的な回答とは限らず、次に参照すべきDNSサーバを紹介している。
1 
でも、図の社内DNSサーバからルートネームサーバには、
.jpのネームサーバのIPアドレスを問い合わせしていますよね。
そして、.jpのネームサーバのIPを返しているので、それ自体は最終的な回答ではないのですか?
いや。毎回「y-sya.example.co.jp」は?という問い合わせをしている。可能性は低いが、キャッシュを持っていて解答してくれる場合もあるからね。
5
では、フォワーダはどちらに分類されますか?
反復問い合わせではないので、再帰問い合わせですかね?
いや、どちらでもない。フォワードは単にDNS問い合わせを転送しているだけだ。

参考
WindowsのDNSサーバの設定で「再帰を無効にする(フォワーダも無効になります)」というチェックボックスがある。再帰問い合わせをしないので、フォワーダによる問い合わせもしないということだろう。

さきほどのゾーンファイルの1行目にTTLがあった。
$TTL 86400 ;1日
これは、DNSの情報を端末に保有させる時間である。※端末であって、セカンダリDNSサーバではないはず。

実際にパソコンで確認してみよう。
いったん、DNSをキャッシュをクリアする。(しなくてもいいが、クリアしたほうがわかりやすい)
C:\>ipconfig /flushdns
Windows IP 構成
DNS リゾルバー キャッシュは正常にフラッシュされました。

たとえば、Googleにアクセスする。すると、当然ながらDNSサーバを参照してGoogleのIPアドレスを把握して、IPアドレスでGoogleのWebサイトにアクセスする。毎回DNSサーバに問い合わせては非効率なので、パソコン側でDNS情報のキャッシュを持つ。いかがTime To Liveとして、130秒間DNSのキャッシュ情報を保有しているという意味である。
C:>ipconfig /displaydns

Windows IP 構成

www.google.co.jp
----------------------------------------
レコード名 . . . . . : www.google.co.jp
レコードの種類 . . . : 1
Time To Live . . . .: 130
データの長さ . . . . : 4
セクション . . . . . . . : 回答
A (ホスト) レコード. . . : 74.125.235.88
レコード名 . . . . . : www.google.co.jp
レコードの種類 . . . : 1
Time To Live . . . .: 130
データの長さ . . . . : 4
セクション . . . . . . . : 回答
A (ホスト) レコード. . . : 74.125.235.95
女性目閉じる 

TTLを長くすると、無駄なDNSの問い合わせが少なくなる。でも、DNS情報が更新されても、反映が遅くなるというデメリットもありますね?
そう。よって、WebサーバのIPアドレスを変更する場合などは、TTLを5秒などの短い値にする。こうしておけば、PC側でDNSのキャッシュ情報を最大5秒しか持たなくなるので、古いキャッシュによって、新しいサーバにアクセスできないなどの不具合がなくなる。

DNS要求に行った場合、その回答に加えて別のドメイン情報(うその情報)も回答する。
古いDNSサーバではそのまま受け取ってしまうので、間違った情報をキャッシュしてしまう。
これにより、不正なサイトへの誘導がなされる。
ファーミング詐欺につながる。

詳しくは以下を参照いただきたい。
http://sc.seeeko.com/archives/1428929.html

このページのトップヘ