- 1.DNSとは
- 2.FQDNとホスト名とドメイン名とURL
- 3.コンピュータ名とホスト名
- 4.DNSサーバのゾーンファイル
- 5.DNSのレコード
- 6.nslookupコマンドの使い方 ~nslookupを試そう
- 7.リゾルバ
- 8.DNSの「再帰問い合わせ」と「反復問い合わせ」
- 9.フォワーダ
- 9.【参考】DNSのTTL
- 10.セカンダリDNSサーバとDNSのゾーン転送
- 11.2種類のDNS(キャッシュサーバとコンテンツサーバ)
- 12.ダイナミックDNS
- 13.DNSラウンドロビン
- 14.国際化ドメイン名(IDN:Internationalized Domain Name)
- 15.【参考】DNSサーバの設定
- 16.C&Cサーバを隠蔽するためのDNS技術
- 17.【下書き】DNSでAレコードを複数書いた場合
1.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のいい勉強になるので、是非チャレンジしてほしい。※実際には空欄は選択式
過去問(H18SW秋午後1問1) |
---|
インターネットで使われるドメイン名及び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 ]と呼ぶ。 |
↓
↓
↓
↓
↓
正解は以下
a 分散型
b 負荷分散
c 可用性
d 上位階層
e FQDN
f プライマリサーバ
g セカンダリサーバ
■WHOIS
WHOISとはIPアドレスやドメインの情報に関するデータベースです。
https://www.nic.ad.jp/ja/newsletter/No34/0800.html
独自ドメインを取得されたことがある人はわかると思いますが、ドメインの管理者の情報を登録します。名前や連絡先などです。
それらの情報がWHOISに登録されます。ドメインに関して何かも問題があれば、その管理者に連絡が取れるという仕組みです。
たとえば、IPアドレスからそのIPアドレスの所有者情報を確認する場合は、以下で検索できる。
https://www.nic.ad.jp/ja/whois/
2.FQDNとホスト名とドメイン名とURL
・URL(Uniform Resource Locator)は、「Webページの場所を示すための表記法(H22秋IP問74より)」です。
・FQDNは、「Fully Qualified Domain Name:完全修飾ドメイン名」です。過去問(H18秋SW午後1問1)では、「ドメイン名の中で,www.example.co.jpのように特定のホストを表現したドメイン名をFQDNと呼ぶ。」とあります。
Q. FQDNとホスト名、ドメイン名の関係は? |
↓
↓
↓
↓
↓
ホスト名とは、コンピュータにつけられた名前である。Windowsのコンピュータ名とは若干違うので、別途解説するが、ここでは同じとして考えよう。ドメイン名はご存じ、yahoo.co.jpなどのドメイン名である。FQDNは、完全修飾ドメイン名という意味で、完全に修飾(限定)されたドメイン名という意味である。
何を修飾(限定)しているの?
ホストである。ドメイン名(seeeko.com)であれば、メールサーバやWebサーバ、DNSサーバなどの多数のサーバがあり、ホストを1つに限定できない。つまり、IPアドレスも限定できない。DNSサーバでは、ドメインを管理するだけでなく、ホスト名も管理する。ただ、どちらか一方だけではIPアドレスが特定できない。FQDNとIPアドレスを対応づけて管理している。これら3者とURLを加えて関係は以下になる。
※ちなみに、http://のhttp部分は、「スキーム名」と言われます(試験には出ません)。http以外にftpなどもあります。加えて、URLの最後に?id=1234などの文字列が付くこともあり、これはクエリ文字列と言われます。支援士試験ではこの言葉が登場します。
■TLD(最上位のドメイン)
TLD(Top Level Domain)は、「最上位のドメイン」のことです。
具体的には.com .net .jp .orgなどが該当します。
※補足ですが、DNSサーバのツリー構成上の最上位はルートドメイン「.」です。
■過去問を見てみましょう。
過去問(H27春IP) |
---|
問60 “http://example.co.jp/index.html”で示されるURLのトップレベルドメイン(TLD)はどれか。 ア http イ example ウ co エ jp |
↓
↓
↓
↓
↓
正解は
エのjp
3.コンピュータ名とホスト名
Q1. DNSで管理するのは、コンピュータ名とホスト名のどちらか。 |
↓
↓
↓
↓
↓
え?
そもそもこの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というホスト名を対応付けることができるのだ。
4.DNSサーバのゾーンファイル
過去問(H23NW午後Ⅱ問2)に、DNSのゾーンファイルの例があるので掲載する。
$ORIGIN example.co.jp. ←(0)筆者が追記 $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. ←⑨ |
一つ一つ解説する。
(0)これを記載しておくと、example.co.jp.の部分を@ に置き換えた簡略化表現が使えます。ただ、記載しない場合は、ドメイン名が自動で指定されますので、必須の記載ではありません。
①は、DNS情報の生存時間です。たとえば、wwwのAレコードのIPアドレスが203.0.113.1という回答をPCが受け取っていたとします。TTLが24時間だった場合、24時間は、PC側でキャッシュとして保持します。24時間が経過すると、有効期限が切れているので、再度DNSサーバに問い合わせます。
※セカンダリDNSサーバがゾーン転送を要求する間隔ではありません。それは、refreshの値です。
また、このあとで具体例を書いて解説していますので、参考にしてください。
②は管理情報と考えればいいだろう。前半はDNSサーバの名前を記載。hostmaster.y-sya.example.co.jpは、管理者のメールアドレスがhostmaster@y-sya.example.co.jpという意味。
③serial番号。セカンダリDNSサーバは、この値が増えていたら、DNS情報が変更されたと判断する。内容を変えても、この値を増やさなかったら、セカンダリDNSは情報を取得しない。年月日+通番で記載することが多い。
④セカンダリDNSサーバが、プライマリDNSサーバにゾーン情報に変更が無いかを問い合わせする間隔です。serial番号が増えていたら、ゾーン情報が更新されたとして、ゾーン転送を行います。
⑤上記④が失敗した場合のリトライ間隔
⑥上記に失敗し続けた場合、このゾーン情報を廃棄するまでの時間。TTLは、端末側のキャッシュであるので、別物。
⑦Negative cache(MINIMUMと表現されることもある)は、引けなかった情報のキャッシュ時間である。
よくわからないのですが、
パソコンが、引けなかった情報をキャッシュするのはわかります。
でも、DNSサーバは自分が情報を持っている側ですよね。
だったら、引けなった情報のキャッシュってなんですか?
このNegative cacheはDNSのキャッシュサーバでのみ利用される。TTLが成功したDNS情報のキャッシュ時間。Negative cacheは引けなかったDNS情報のキャッシュ時間なので、ペアで考えるとわかりやすいだろう。
▼問題
過去問(H23NW午後Ⅱ問2設問4(3)) |
---|
Q.セカンダリDNSサーバが、ゾーンデータファイルをコピーすべきか否かをチェックする時間間隔を答えよ |
↓
↓
↓
↓
↓
A.43,200秒(12時間)
※リフレッシュ(refresh)間隔で設定された時間である。
▼問題2
あなたはexample.comのDNSサーバの管理者です。 設問1 DNSに、以下のレコードの設定をしなさい。 ①WWWサーバ 203.0.113.80 ②メールサーバ 203.0.113.25(優先)と、203.0.113.26 ③DNSサーバ 203.0.113.53 設問2 以下の要件を満たすようにせよ。 ①Webサーバを203.0.113.80と203.0.113.81の2台で負荷分散(ロードバランス)するには、どうしたらいいか。 ②メールサーバを、負荷分散するにはどうしたらいいか。 |
↓
↓
↓
↓
↓
■解答
設問1
①WWWサーバ 203.0.113.80
Aレコードを記載する。
www IN A 203.0.113.80 |
※INはInternetから来ているそうであるが、深い意味はない。フォーマットなので、あきらめよう。
②メールサーバ 203.0.113.25(優先)と、203.0.113.26
MXレコードと、Aレコードを記載する。
IN MX 10 mx1.example.com. IN MX 20 mx2.example.com. mx1 IN A 203.0.113.25 mx2 IN A 203.0.113.26 |
※10と20は優先度。数字が低い方が優先。
※細かいが、mx1.example.com.の末尾に「.」がある。これをつけないと、自動でドメインを付加される。(というかしてくれる)なので、以下の書き方もあり。
IN MX 10 mx1 |
以下のようにMXレコードに直接IPアドレスを書いてはだめ?
IN MX 203.0.113.25
恐らく動作するではあろうが、RFCのルール上は分けて書く。なので、正常に動作しないDNSサーバやメールサーバがあるかもしれない。
③DNSサーバ 203.0.113.53
上記の②と同様に、NSレコードとAレコードの両方を記載する。
IN NS ns1.example.com. ns1 IN A 203.0.113.53 |
設問2
①Webサーバを203.0.113.80と203.0.113.81の2台で負荷分散(ロードバランス)するには、どうしたらいいか。
www IN A 203.0.113.80 www IN A 203.0.113.81 |
②メールサーバを、負荷分散するにはどうしたらいいか。
IN MX 10 mx1.example.com. IN MX 10 mx2.example.com. mx1 IN A 203.0.113.25 mx2 IN A 203.0.113.26 |
または、以下でも動作するとは思う。
実際の設定ではやらないだろうが。
IN MX 10 mx.example.com. mx IN A 203.0.113.25 mx IN A 203.0.113.26 |
参考までに、ゾーン情報をまとめると、以下のようになります。
$TTL 86400 @ IN SOA ns1.example.com. hostmaster.example.com.( 2019090101 ; serial番号 43200 ; refresh 1800 ; retry 604800 ; expire 10800 ); negative cache IN NS ns1.example.com IN NS ns2.example.com IN MX 10 mx1.example.com IN MX 20 mx2.example.com ns1 IN A 203.0.113.53 ns2 IN A 203.0.113.54 mx1 IN A 203.0.113.25 mx2 IN A 203.0.113.26 www IN A 203.0.113.80 |
以下も参考にしてください。
https://jprs.jp/glossary/index.php?ID=0183
5.DNSのレコード
1.リソースレコード
❶SOA(Start Of Authority)
ゾーンに関する情報
❷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」になってしまう。
❸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アドレスを直接記載しても動作はする。
❹NS(Name Server)
過去問(R1秋NW午前Ⅱ)にチャレンジしてみよう。
過去問(R1秋NW午前Ⅱ) |
---|
問8 DNSゾーンデータファイルのNSレコードに関する記述のうち,適切なものはどれか。 ア 先頭フィールドには,ネームサーバのホスト名を記述する。 イ ゾーン分割を行ってサブドメインに権限委譲する場合は,そのネームサーバをNSレコードで指定する。 ウ データ部(RDATA)には,ゾーンのドメイン名を記述する。 エ データ部(RDATA)には,ネームサーバの正規のホスト名と別名のいずれも記述できる。 |
↓
↓
↓
↓
↓
アはドメイン名です。
イが正解。ウはFQDN。
❺PTR(PoinTR)
・逆引きとは,IPアドレスからFQDNを解決する名前解決の方法です。
・逆引きの仕組みを,少し詳しく解説します。たとえば,203.0.113.80 のFQDNとしてwww.b-sha.comを解決させる場合,B社(b-sha.com)のDNSサーバの113.0.203.in-addr.arpaのゾーンに,以下のPTRレコードを設定します。
80 IN PTR www.b-sha.com. |
このゾーン名がどのようにして決まるかというと,サブネットのネットワークアドレス部分(203.0.113)のオクテットを逆に並べ,「.in-addr.arpa.」を付与します。
・DNSの名前空間全体には,下図のように正引きゾーン(たとえば.jp や.com)の他に,IPv4アドレスの逆引き専用の特殊なドメイン(in-addr.arpa)があり,正引きと同じ仕組みでホスト名を回答します。113.0.203.in-addr.arpaは,この名前空間のツリーの末端になります(下図❶)。その一つ上の階層のゾーンである0.203.in-addr.arpa(❷)は,B社にサブネットを払い出したISPなどが管理しています。このゾーンでは,サブドメインに相当する113 のnsレコードとして,B社のDNSサーバ(dns.b-sha.comとします)を指定します(❸)。
❻CNAME(Canonical NAME)
CNAME(Canonical NAME)レコードは,別名を付けるレコードです。作家がペンネームを持つようなイメージで,例えば,wwwというホストにwebという別名を付けた場合の設定は次の通り以下です。
web.seeeko.com. IN CNAME www.seeeko.com. |
↑別名 ↑本来のFQDN
※別名をどちらに記載するのかを覚えておきましょう。
A社のWebサーバ(www.asha.dom)をクラウドサービス(waf.cloud.dom)に向ける場合は、A社のWebサーバが別名になるので、以下のようになります。
www.asha.dom. IN CNAME waf.cloud.dom. |
実際、IPAもCloudサービスを利用していますので、nslookupを実行すると、以下のように、CNAMEで別名が設定されています。
> set type=cname > www.ipa.go.jp 権限のない回答: www.ipa.go.jp canonical name = d2aiu9f88m0xez.cloudfront.net
❼TXT
TXTレコードは任意の文字を記載できます。よく利用される例として、SPFの記述があります。
https://sc.seeeko.com/entry/spammeasures#1SPFSender-Policy-Framework
SPFで、メールを送信するサーバを指定することで、メールの詐称を判断します。
また、任意の文字を記載できるので、他のレコードに比べて、たくさんの文字列が記載されている可能性があります。DNS AMP攻撃では、この仕組みが利用されました。ようは、増幅させるのに都合がいいのです。
https://sc.seeeko.com/entry/dos_attack#6DNS-reflectionDNS-amp
また、TXTレコードに攻撃指令を入れる場合もあります。
過去問(H29春SC午後Ⅱ問2)では、「OSで指定されたDNSサーバに対して、マルウェアに保持されたFQDNの全てのTXTレコードを問い合わせ、得られた文字列を指令として解釈し、動作する」とあります。
❽CAA
CAA (Certification Authority Authorization)は、シーエーエーとそのまま読む。
これは、ドメインに対する証明書を発行するCAを指定するレコードである。
うーん。
よくわからないです。
そうだね。少しわかりにくいので、順を追って説明する。
たとえば、大学の卒業証明書は、その大学だけが発行できる。一方、電子証明書は、誰でも発行できてしまう。これだと証明書の意味がないよね。
そうなんですか?
旧ベリサインなど、限られたCAだけが発行できるのでは?
そんなことはない。例えばプライベートなどであっても、誰でも発行できる。
ただ、もちろん、勝手に証明書を発行しても、ブラウザにて警告がでる。ただ、最近ではLet's Encryptなどの無料で証明書を発行できるサービスが増えている。これらはブラウザにて信頼されたとして登録されている。であるから、悪意のある人が、勝手に他社企業のドメインの証明書を作成できてしまう。
そこで、たとえば、seeeko.comのドメインの証明書を発行するCAをCAAレコードで指定する。Let's Encryptを含む無料のCAなども、CAAレコードを事前にチェックして、そこで指定されているCAではない場合、証明書を発行しない。
以下、JPRSに詳しい記載があるので参考にしてほしい。
jprs.jp
上記の引用すると、以下の説明がある。
CAAリソースレコード(シーエーエーリソースレコード) ドメイン名の登録者が、登録されたドメイン名に対応する証明書の発行を許可する認証局(Certification Authority:CA)を指定するリソースレコードです。CAAは、Certification Authority Authorizationを意味します。 ドメイン名登録者は、CAAリソースレコードを設定することで ・証明書の誤発行を防止 |
・不正な証明書発行要求の検知が期待できます。|
では、過去問をみてみよう。
問10 DNSにおいてDNS CAA (Certification Authority Authorization)レコードを使うことによるセキュリティ上の効果はどれか。 ア WebサイトにアクセスしたときのWebブラウザに鍵マークが表示されていれば当該サイトが安全であることを,利用者が確認できる。 イ Webサイトにアクセスする際のURLを短縮することによって,利用者のURLの誤入力を防ぐ。 ウ 電子メールを受信するサーバでスパムメールと誤検知されないようにする。 エ 不正なサーバ証明書の発行を防ぐ。 |
↓
↓
↓
↓
↓
エ
2.過去問にチャレンジ
DNSでのホスト名とIPアドレスの対応付けに関して、理解を深める良問なので、チャレンジしていただきたい。また、具体的な実装方法をレコードで書いてほしい。ホスト名はwww、IPアドレスは10.1.1.1~を使ってほしい。
過去問(H22NW午前2問10) |
---|
問10 DNSでのホスト名とIPアドレスの対応付けに関する記述のうち,適切なものはどれか。 ア 一つのホスト名に複数のIPアドレスを対応させることはできるが,複数のホスト名に同一のIPアドレスを対応させることはできない。 イ 一つのホスト名に複数のIPアドレスを対応させることも,複数のホスト名に同一のIPアドレスを対応させることもできる。 ウ 複数のホスト名に同一のIPアドレスを対応させることはできるが,一つのホスト名に複数のIPアドレスを対応させることはできない。 エ ホスト名とIPアドレスの対応はすべて1対1である。 |
↓
↓
↓
↓
↓
・「一つのホスト名に複数のIPアドレスを対応させる」のは、DNSラウンドロビンによる負荷分散でよく利用される。
レコードの例
www IN A 10.1.1.1
www IN A 10.1.1.2
www IN A 10.1.1.3
・「複数のホスト名に同一のIPアドレスを対応させる」のは、サーバ一台で、複数のドメインを運用しているパターンで、IPアドレスの節約、コスト削減から、レンタルサーバ事業者では当然の仕組みである。
www IN A 10.1.1.1
www2 IN A 10.1.1.1
正解はイ
6.nslookupコマンドの使い方 ~nslookupを試そう
nslookupはコマンドでDNS問合せができる便利なツールです。
あるドメインのIPアドレスを調べたい場合や、自分の端末がDNSの名前解決ができるのかの切り分け、自社で設定したDNSサーバの名前解決がきちんとできているか、などに使えます。
また、DNSの理解を深めるための学習にもなります。
実際に自分でコマンドを実行してみましょう。
1.nslookupコマンドを実行する
Windowsのコマンドプロンプトから、以下のように実行してください。
c:\>nslookup ←DNSの名前解決をするコマンド
既定のサーバー: xxx.xxx ←既存のDNSサーバ
Address: 192.168.179.1
> ←レコードを問い合わせるモードに変化
2.Aレコードを問い合わせてみる
ipaのサイト(www.ipa.go.jp)のIPアドレスを調べてみよう。
> www.ipa.go.jp ←解決したいFQDN
サーバー: xxx.xxx
Address: 192.168.179.1
権限のない回答: ←このように表示されるのは、キャッシュDNSサーバが回答しているためです
名前: www.ipa.go.jp
Address: 202.122.141.45 ←IPAのIPアドレス
3.MXレコードを問い合わせてみる
メールサーバを問い合わせる。
> set type=MX ←メールサーバを指定
> ipa.go.jp
サーバー: aterm.me
Address: 192.168.179.1
権限のない回答:
ipa.go.jp MX preference = 10, mail exchanger = ipa-sfw1.ipa.go.jp
ipa.go.jp MX preference = 20, mail exchanger = ipa-sfw2.ipa.go.jp
※優先度が10と20が設定されており、上の ipa-sfw1が優先されるメールサーバ。どちらも10にした場合は負荷分散されます。また、ipa-sfw1.ipa.go.jpのIPアドレスは、Aレコードで調査すれば分かります。
4.set type=allで、ドメイン情報を一気にみる
一気に情報を確認しましょう。(うまくいかないかも)
> set type=all ←全ての情報をみるための設定
> ipa.go.jp
サーバー: xxx.xxx
Address: 192.168.179.1
権限のない回答:
ipa.go.jp MX preference = 20, mail exchanger = ipa-sfw2.ipa.go.jp
ipa.go.jp MX preference = 10, mail exchanger = ipa-sfw1.ipa.go.jp
ipa.go.jp text =
"MS=ms80859861"
ipa.go.jp text =
"v=spf1 mx ip4:192.218.88.1 ip4:192.218.88.4 ip4:192.218.88.231 ip4:202.
176.10.23 ip4:202.229.63.234 ip4:202.229.63.238 ip4:202.229.63.243 ip4:210.168.4
5.67 ip4:133.163.199.192/28 -all"
ipa.go.jp
primary name server = ipa-ns.ipa.go.jp
responsible mail addr = postmaster.ipa.go.jp
serial = 2018111301
refresh = 43200 (12 hours)
retry = 7200 (2 hours)
expire = 2419200 (28 days)
default TTL = 10800 (3 hours)
ipa.go.jp nameserver = ipa-ns2.ipa.go.jp
ipa.go.jp nameserver = ipa-ns.ipa.go.jp
ipa.go.jp nameserver = dns-a.iij.ad.jp
ipa-sfw1.ipa.go.jp internet address = 192.218.88.2
ipa-sfw2.ipa.go.jp internet address = 202.229.63.236
ipa-ns.ipa.go.jp internet address = 192.218.88.1
ipa-ns2.ipa.go.jp internet address = 202.229.63.234
5.コマンドを1行で実行する
一気にやってしまうには、以下の方法もあります。
- typeでタイプを指定し、末尾に、問合せに行くDNSサーバを指定します。
c:\>nslookup -type=NS ipa.go.jp 8.8.8.8
6.問い合わせるDNSサーバを変えてみる
問い合わせるサーバをGoogleのDNSサーバ(8.8.8.8)に変更してみる。
> server 8.8.8.8 ←GoogleのDNSを指定
既定のサーバー: [8.8.8.8] ←GoogleのDNSに変更された
Address: 8.8.8.8
7.「権限のない回答」とは?
通常の場合は、キャッシュDNSサーバに問い合わせています。情報が最新ではないかもしれませんし、DNSキャッシュポイズニングによって汚染されている可能性もあります。
一方、コンテンツサーバ(権威DNSサーバ)に聞いたら、権限のある回答が返ってきます。
では、試してみましょう。
> server ipa-ns.ipa.go.jp ←権威サーバ、つまりIPAのDNSサーバ(NS)に変更
既定のサーバー: ipa-ns.ipa.go.jp
Address: 192.218.88.1
> set type=A ←Aレコードを指定
> www.ipa.go.jp
サーバー: ipa-ns.ipa.go.jp
Address: 192.218.88.1
名前: www.ipa.go.jp ←今度は権威が無いと出ない
Address: 202.122.141.45
> server 8.8.8.8 ←念のため、GoogleのDNSを指定してみる。
既定のサーバー: [8.8.8.8]
Address: 8.8.8.8
> www.ipa.go.jp
サーバー: [8.8.8.8]
Address: 8.8.8.8
権限のない回答: ←やっぱり、権威が無いと出る
名前: www.ipa.go.jp
Address: 202.122.141.45
8.詳細な情報をみる
debugモードに切り替えると、TTLなどを含む詳細な情報を表示します。
>set debug
> www.ipa.go.jp
・・・・(詳細な情報が表示される)・・・・
9.実際にやってみよう(ミニテスト)
Q1.IPAのサイト(https://www.ipa.go.jp)のIPアドレスは? Q2.IPアドレスがわかったら、ドメインではなくIPアドレスで通信してみよう。たとえば、https://x.x.x.x/ 正常にサイトが表示されるかを確認 Q3.IPAのDNSのTTLは? Q4.IPSのセカンダリDNSサーバが、ゾーンデータファイルをコピーすべきか否かをチェックする時間間隔を答えよ Q5.Gmailのメールサーバの優先度が高いサーバは? Q6.IPAからのメールは、どのIPアドレスから送られてくる? Q7. nw.seeeko.comは本来のWebサーバではなく、別名を設定しているだけである。本来のWebのコンテンツがあるサーバのFQDNは何か。 |
↓
↓
↓
↓
↓
以下に実際の操作の様子を記載しますが、IPアドレスなどは変更されている可能性があります。
A1.
C:\ >nslookup
> www.ipa.go.jp
権限のない回答:
名前: www.ipa.go.jp
Address: 192.218.88.180
A2.
おそらく、https://192.218.88.180 でアクセスすると、証明書エラーが出て、http://192.218.88.180で通信すると、https://www.ipa.go.jpにリダイレクト(遷移)して、正しく表示されると思う。
A3.
> set type=SOA
> ipa.go.jp
権限のない回答:
ipa.go.jp
primary name server = ipa-ns.ipa.go.jp
responsible mail addr = postmaster.ipa.go.jp
serial = 2021022202
refresh = 43200 (12 hours)
retry = 7200 (2 hours)
expire = 2419200 (28 days)
default TTL = 10800 (3 hours)
A4.
43,200秒(12時間)
上記のリフレッシュ(refresh)間隔で設定された時間である。
A5.
> set type=MX
> gmail.com
サーバー: dns.google
Address: 8.8.8.8
権限のない回答:
gmail.com MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com
gmail.com MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com
gmail.com MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com
gmail.com MX preference = 20, mail exchanger = alt2.gmail-smtp-in.l.google.com
gmail.com MX preference = 30, mail exchanger = alt3.gmail-smtp-in.l.google.com
→優先度の値が最も低い(preference = 5)サーバが優先される。
A6.
答えはたくさんあるが、v=spf1で記載されたIPアドレスのどれかである。
> set type=TXT
> ipa.go.jp
権限のない回答:
ipa.go.jp text =
"MS=ms80859861"
ipa.go.jp text =
"v=spf1 mx ip4:192.218.88.1 ip4:192.218.88.4 ip4:192.218.88.11 ip4:192.218.88.231 ip4:202.176.10.23 ip4:202.229.63.232 ip4:202.229.63.234 ip4:202.229.63.238 ip4:202.229.63.243 ip4:210.168.45.67 ip4:133.163.199.192/28 -all"
A7.
> set type=CNAME
> nw.seeeko.com
権限のない回答:
nw.seeeko.com canonical name = blog-01.livedoor.jp
10.IPAのサイトの現状(2024.3)
www.ipa.go.jp のAレコードを問い合わせます。すると、名前にcloudfront.netとあります。
昔とは違い、どうやらcloudfrontのCDNを使っているようです。
> www.ipa.go.jp 権限のない回答: 名前: d2aiu9f88m0xez.cloudfront.net Addresses: 13.33.174.31 13.33.174.6 13.33.174.89 13.33.174.90 Aliases: www.ipa.go.jp
ちなみに、先に表示されたFQDNのAレコードを問い合わせてみましょう。
> d2aiu9f88m0xez.cloudfront.net 権限のない回答: 名前: d2aiu9f88m0xez.cloudfront.net Addresses: 13.33.174.6 13.33.174.90 13.33.174.31 13.33.174.89
同じ結果が返ってきますね。
以下のように、CNAMEで別名として設定されているだけなのです。
> set type=cname > www.ipa.go.jp 権限のない回答: www.ipa.go.jp canonical name = d2aiu9f88m0xez.cloudfront.net
ちなみに、CDNなので、近いエリアのDNS情報が返されます。よって、違うエリア(たとえば、他府県)でやると、違う結果が出ます。
権限のない回答: 名前: d2aiu9f88m0xez.cloudfront.net Addresses: 13.226.120.66 13.226.120.86 13.226.120.125 13.226.120.17
また、サーバを指定しても、違う結果が出ます。
> server 8.8.8.8 既定のサーバー: dns.google Address: 8.8.8.8 > www.ipa.go.jp 権限のない回答: 名前: d2aiu9f88m0xez.cloudfront.net Addresses: 18.65.148.87 18.65.148.40 18.65.148.44 18.65.148.77 Aliases: www.ipa.go.jp
7.リゾルバ
(1)リゾルバとは
リゾルブ(resolve)は「解決する」という意味です。なので、リゾルバ(resolver)は、DNSの名前解決処理をしてくれるもの(ソフト)です。一般的にはクライアントPCの名前解決処理をするプログラムを指します。また、nslookupやLinuxのdigコマンドなども、リゾルバです。もちろん、DNSサーバも名前解決をするのでリゾルバです。
(2)フルリゾルバとスタブリゾルバ
スタブリゾルバという言葉はあまり使いません。ネットワークスペシャリスト試験でも登場しないので、覚える必要はありません。ですが、フルリゾルバの対比として覚えておくといいでしょう。
①フルリゾルバ
DNSサーバ(正確にはキャッシュDNSサーバ)です。反復的な問い合わせをコンテンツDNSサーバに対して行い、最終的な回答までを行います。クライアントPCからの「www.seeeko.comのIPアドレスを教えて?」という要求に対し、「私は知りません」とか「○○サーバに聞いて」などという回答ではなく、自分で調べて(反復問い合わせ)をして回答をします。このことから「フル」と言われます。
以下には、「リゾルバーのうち、「リカーシブモード」と呼ばれる動作を行い、内部にキャッシュを持っているものを「フルサービスリゾルバー」と呼びます。」とあります。https://jprs.jp/glossary/index.php?ID=0158
なので、内部DNSサーバをフォワーダーに設定した場合は、権威DNSサーバに反復問い合わせをしないので、フルリゾルバサーバとは呼ばないということでしょう。
※フォワーダとして動作させても、結果をキャッシュすることがほとんどで、見かけ上はキャッシュDNSサーバのような動作をしてくれます。
②スタブリゾルバ
クライアントPCの名前解決のソフトです。OSの機能に組み込まれているので、利用者は意識することがありません。スタブリゾルバからフルリゾルバへの問い合わせは「再帰問い合わせ」です。最終的な回答を要求します。
(3)オープンリゾルバ
オープンリゾルバは、言葉の通り「オープン」な「リゾルバ」である。通常であれば、DNS問合せは自社内などの制限されたものしか受け付けない。どこからのDNS問合せも受け付けるのがオープンリゾルバである。
しかしこれが踏み台となって、DDoS攻撃に加担してしまう場合もある。
IPAから注意喚起が出されていた。
http://jvndb.jvn.jp/ja/contents/2013/JVNDB-2013-000087.html
8.DNSの「再帰問い合わせ」と「反復問い合わせ」
1.問い合わせの違い
DNSの名前解決方法には、「再帰問い合わせ」と「反復問い合わせ」の2種類がある。
❶再帰問い合わせ
クライアントのリゾルバから、DNSサーバに対して問い合わせをする。再帰的という言葉は、「再び帰ってくる」。結果が分かるにしろ分からないにしろ、問い合わせをした結果の答えが帰ってくる。
ポイントは、最終的な回答をすること。
❷反復問い合わせ ※過去問(H22SC春午後Ⅱ問1)では、「非再帰的な問合せ」という表現が使われました。
ルートネームサーバから順に問い合わせる。図にあるように、何度も「反復」している。
たとえば、y-sya.example.co.jpの場合
①世界に13台あるルートネームサーバに問い合わせ。ルートネームサーバは.jpドメインのサーバを教える。
②jpドメインのサーバに問い合わせ。ルートネームサーバはco.jpドメインのサーバを教える。
③同様にexample.co.jp
④同様にy-sya.example.co.jp
⑤このようにしてy-sya.example.co.jpのDNSサーバに到達し、DNS名前解決をしてもらう。
過去問ではDNSのこの動作に関して、「インターネット上のDNSサーバは階層化されており、ある名前に対して情報がない場合には、上位のDNSサーバに問い合わせる」とある。(H21NW午前問9)
再帰問い合わせの場合は、最終的な回答(y-sya.example.co.jpに対するIPアドレス)をする。一方、反復問い合わせは、最終的な回答とは限らず、次に参照すべきDNSサーバを紹介している。
でも、図の社内DNSサーバからルートネームサーバには、
.jpのネームサーバのIPアドレスを問い合わせしていますよね。
そして、.jpのネームサーバのIPを返しているので、それ自体は最終的な回答ではないのですか?
いや。毎回「y-sya.example.co.jp」は?という問い合わせをしている。可能性は低いが、キャッシュを持っていて解答してくれる場合もあるからね。
では、フォワーダはどちらに分類されますか?
反復問い合わせではないので、再帰問い合わせですかね?
いや、どちらでもない。フォワードは単にDNS問い合わせを転送しているだけだ。
2.【参考】再帰問合せを拒否している場合とそうでない場合の結果の違い
試験には出ないので、参考程度にしてください。
①拒否している場合
Query refused
②拒否していない場合
結果を答えるか、Non-existent domain(見つけられない)を返す。
以下、やってみた。
①拒否している場合
IPAのNSを指定する。おそらくコンテンツサーバ。
> server ipa-ns.ipa.go.jp
既定のサーバー: ipa-ns.ipa.go.jp
Address: 192.218.88.1
> www.yahoo.co.jp
サーバー: ipa-ns.ipa.go.jp
Address: 192.218.88.1
*** ipa-ns.ipa.go.jp が www.yahoo.co.jp を見つけられません: Query refused
→コンテンツサーバなので再帰問合せは拒否されている(はず)。だから、このように、refuseされる。
②拒否していない場合
GoogleのDNSサーバを指定する。
> server 8.8.8.8
既定のサーバー: [8.8.8.8]
Address: 8.8.8.8
> www.ffffffffffffffffffff.xx.jp
サーバー: [8.8.8.8]
Address: 8.8.8.8
*** [8.8.8.8] が www.ffffffffffffffffffff.xx.jp を見つけられません: Non-existent domain
→みつけられないと出る。
> www.yahoo.co.jp
サーバー: [8.8.8.8]
Address: 8.8.8.8
権限のない回答:
www.yahoo.co.jp canonical name = edge12.g.yimg.jp
→答えてくれる
9.フォワーダ
(1)フォワーダについて
名前解決をするには、フルリゾルバサーバ(=キャッシュサーバ)ではなく、フォワーダとして動作する方法もあります。フォワーダは、自分で問い合わせをするのはなく、他のDNSサーバに依頼する。
構成としては、設定は、DNSゾーンファイルの forwardersに指定する。たとえば、社内のDNSサーバをフォワーダと、DNSの問い合わせ先を大手プロバイダのDNSサーバをとして設定する。DNSの問い合わせは大手プロバイダDNSサーバに任せる。問い合わせ結果は、フォワーダからPCに直接返すのではなく、自分が知っていたかのように返す。
(2)フォワーダを利用するメリット
たとえば、社内DNSサーバをフォワーダとして、プロバイダのDNSサーバに問い合わせを依頼する。こうすれば、プロバイダのDNSサーバが名前解決をしてくれます。これにより、社内DNSサーバの負荷が軽減できます。
フォワーダにすると、内部DNSサーバの負荷は減るのですか?
はい。キャッシュが無い状態で社内DNS サーバに問い合わせが来ると、反復問い合わせを何度か行います。一方、フォワーダとして外部に問い合わせる場合の問い合わせは一回だけです。また、多くの場合、大規模なDNSサーバはキャッシュを持っているので、応答時間も短縮されます。
(3)フォワーダって正確には何のこと?
フォワーダはDNSの問い合わせを転送する「機能」と解釈されます。また、特定のDNSサーバを指すこともあります。では、以下の構成において、フォワーダはどれでしょうか。
①PC →→→ ②内部DNSサーバ(キャッシュDNSサーバ) →→→ ③プロバイダなどのサーバ →→→ ④コンテンツDNSサーバ
一般的には、③を指していることでしょう。たとえば、WindowsサーバのDNSの設定においても、「フォワーダとは、このサーバで解決できないレコードに対するDNSクエリを解決するために使用されるDNSサーバのことです」とあります。
ですが、ネットワークスペシャリスト試験(R3PM2-1)では、「内部DNSサーバは、DNSフォワーダであり、(中略) 名前解決要求を、ISPが提供するフルサービスリゾルバに転送する。」とあります。つまり、上記の②だとしています。
ちなみに、RFCでは、以下の記載があり、どちらか明言はしていません。
https://www.rfc-editor.org/rfc/pdfrfc/rfc8499.txt.pdf
https://jprs.jp/tech/material/rfc/RFC8499-ja.txt
Forwarder(フォワーダー):
[RFC2308]のセクション1は、フォワーダーを"問い合わせの名前解決の際に
権威ネームサーバーの連鎖を直接たどる代わりに使用されるネームサーバー"
と記述している。[RFC2308]は更に、"通常の場合、フォワーダーは
インターネットへのアクセスがより良好であるか、多数のリゾルバーで
共有可能なより大きなキャッシュを保持しているかのどちらかである"
とも述べている。この定義は、フォワーダーは通常、権威サーバーにしか
問い合わせしないと示唆しているように見える。しかし、現在の使用法では、
フォワーダーはしばしばスタブリゾルバーと再帰サーバーの間に配置される。
[RFC2308]は、フォワーダーが反復しか行わないリゾルバーなのか、フル
サービスリゾルバーであってもよいのか等について何も述べていない。
(4)参考
WindowsのDNSサーバの設定で「再帰を無効にする(フォワーダも無効になります)」というチェックボックスがある。再帰問い合わせをしないので、フォワーダによる問い合わせもしないということだろう。
9.【参考】DNSのTTL
さきほどのゾーンファイルの1行目にTTLがあった。
$TTL 86400 ;1日 |
これは、DNSの情報を端末に保有させる時間である。※端末であって、セカンダリDNSサーバではない。
たとえば、wwwのAレコードのIPアドレスが203.0.113.1という回答をPCが受け取っていたとします。TTLが24時間だった場合、24時間は、PC側でキャッシュとして保持します。
実際にパソコンで確認してみよう。
いったん、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秒しか持たなくなるので、古いキャッシュによって、新しいサーバにアクセスできないなどの不具合がなくなる。
10.セカンダリDNSサーバとDNSのゾーン転送
(1)プライマリDNSサーバとセカンダリDNSサーバ
DNSサーバは,可用性を高めるために,2台以上設置する必要があります。VRRP等の他の冗長化の仕組みでは、ActiveとStandbyがハッキリしているものがあります。ですが、DNSに関しては、複数台のDNSサーバはどちらもActiveです。複数台のDNSサーバにはおおむね均等に名前解決の要求が届きます。
複数のDNSサーバに対して、どうやって均等に要求を振り分けるのですか?
DNSラウンドロビンの仕組みと考えてください。以下は、example.comというドメインのDNSのレコード(例)です。
$ORIGIN example.com. ←ドメインはexample.com IN NS ns1.example.com ←DNSサーバはns1.example.comと IN NS ns2.example.com ns2.example.com ns1 IN A 203.0.113.53 ←ns1.example.comのIPアドレスは203.0.113.1 ns2 IN A 203.0.113.54 ←ns2.example.comのIPアドレスは203.0.113.2 |
または、2行目と3行目は以下でもよい。
example.com. IN NS ns1.example.com example.com. IN NS ns2.example.com |
上記にありますように、example.comドメインのDNSサーバは、ns1(= ns1.example.com)とns2(=ns2.example.com)の2つです。クライアントからの「example.comのDNSサーバは何ですか?」という問い合わせに対して、回答を交互に変えて返します。
じゃあ、何をもってマスタやスレーブと言うのですか?
ゾーン情報のマスタを保有しているサーバをマスタDNSサーバ,その複製を保有しているサーバをスレーブDNSサーバと呼びます。プライマリDNSサーバ・セカンダリDNSサーバとも呼びます。
また、プライマリDNSサーバは自社に設置し、セカンダリDNSサーバは、外部のISPに任せるという分散構成を取ることが一般的です。
この点は、RFC2182にも、セカンダリDNSサーバは、トポロジー的にも地理的にもインターネット分散した位置に配置されるべきと記載されています。
原文
Secondary servers must be placed at both topologically and geographically dispersed locations on the Internet
(2)ゾーン転送
ゾーン転送の概要は以下です。
・ゾーン転送とは、DNSサーバの管理情報を、他のDNSサーバへ転送すること。
・セカンダリDNSサーバからプライマリDNSサーバへ要求をする。(プライマリのnamed.confに記載されている「リフレッシュ」の間隔で問い合わせに行く)
注意点は、プライマリからセカンダリではない。
・変更されているかはシリアル(番号)を確認する。シリアル番号が増加していれば、変更があったとしてゾーン転送をおこなう。
・DNSは通常UDPの53であるが、ゾーン転送に限っては信頼性が重要であるため、TCPを利用する(ポートは53)。RFC1034にも、「Because accuracy is essential, TCP or some other reliable protocol must be used for AXFR requests.」、つまり精度が求められるために、信頼性の高いTCPなどを使う必要があるとあります。
それだと、タイムラグが生じないですか?
その通りです。そこで、DNSのソフトであるBIND8からDNS NOTIFYが実装されました。プライマリDNSは、ゾーン情報を更新すると、セカンダリDNSサーバに更新通知(NOTIFYメッセージ)を送信します。これを契機としてゾーン転送が行われます。※NOTIFYはUDPです。
ただし、プライマリDNSは更新通知(NOTIFYメッセージ)を送るだけです。ゾーン転送は、これまでと同様にセカンダリDNSサーバから行われます。
過去問に、ゾーン転送に関連する出題があるので引用します。
過去問(H22春SC午前2問8) |
---|
問8 DNSサーバに格納されるネットワーク情報のうち、第三者に公開する必要のない情報が攻撃に利用されることを防止するための、プライマリDNSサーバの設定はどれか。 ア SOAレコードのシリアル番号を更新する。 イ 外部のDNSサーバにリソースレコードがキャッシュされている時間を短く設定する。 ウ ゾーン転送を許可するDNSサーバを登録する。 エ ラウンドロビン設定を行う。 |
↓
↓
↓
↓
↓
DNSの設定において、allow-transferでゾーン転送を許可するサーバを指定します。
なので、DNSのゾーン転送はデフォルトでは誰でも受けられるということです。もっというと、セカンダリDNSサーバを立てる必要もなく、コマンドでゾーン情報を取得することもできます。
ウは、正解です。
▼過去問
過去問(H24NW午後Ⅰ問1)では、以下のように問われている。
過去問(H24NW午後Ⅰ問1) |
---|
DNS-PとDNS-Sは,J社のドメインを管理するDNSサーバであり, DNS-PからDNS-Sへ[ ア ]転送を行い,2台のDNSサーバ間でリソースレコードの同期を取っている |
↓
↓
↓
↓
↓
A ゾーン
(3)実際の設定
すでに述べましたように、ゾーン転送の設定は、プライマリDNSサーバで指定するものではありません。セカンダリDNSサーバでプライマリDNSサーバを指定することで、セカンダリDNSサーバから定期的にRefreshで指定された時間間隔で取得に行きます。
では、設定をみてみましょう。以下のように、セカンダリDNSサーバは、typeをslaveにして、プライマリDNSサーバのIPアドレスをmastersにて指定するのです。
zone "seeeko.com" { type slave; file "seeeko.zone"; masters {203.0.113.53;}; }; |
以下も参照ください。
4.DNSサーバのゾーンファイル
キャッシュファイルなどはそのままでよいし、ゾーンファイルなどはプライマリから送信されます。
ただ、プライマリDNSサーバには、allow-transfer で、許可するセカンダリDNSサーバを指定することができる。※ACLみたいなものなので、ここで指定したサーバが必ずセカンダリDNSサーバになるわけではない。
11.2種類のDNS(キャッシュサーバとコンテンツサーバ)
ドメイン情報を持つのがコンテンツDNSサーバ(正式には権威DNSサーバ)。ドメイン情報は持たないが、過去の問い合わせ履歴をキャッシュとして保存し、問い合わせ要求にこたえるのがキャッシュDNSサーバです。
1.コンテンツサDNSーバ ★基本はDMZに配置
通常のDNSサーバであり、以下のようにドメイン情報を持つ。
www.example.com A 1.x.1.1 ns1.example.com A 1.x.1.2 mx1.example.com A 1.x.1.3 |
正規のドメイン情報を持つサーバドメインごとにコンテンツサーバが設置される。
よって、このコンテンツサーバは世界に無数にある。
2.キャッシュDNSサーバ ★基本は内部セグメントに配置
・キャッシュDNSサーバは、一般的に、リゾルバ機能とキャッシュ機能を持つ。リゾルバ機能およびキャッシュ機能に関しては、過去問(H25春SC午後1問2)で次の記載がある。
・「リゾルバ機能(インターネット上のサーバ名の名前解決を行う機能)」
・「DNSキャッシュ機能(名前解決結果を一時的に保持する機能)」
→補足:どれだけの期間を保持するのは、基本的にはDNSサーバのTTLの値なので、キャッシュDNSサーバが決めるわけではない。
・PCからの問合せに答えるDNSサーバ。 社内にもキャッシュDNSサーバが存在するだろうし、プロバイダのDNSサーバもキャッシュDNSサーバと考えていいだろう。
キャッシュDNSサーバは必須ですか?
無くてもいいのではないでしょうか。
今の現実では無しでの運用は難しいだろう。コンテンツサーバは世界に無数に存在する。PCにてDNSサーバを指定する(ネットワークの設定で、IPアドレスやサブネットを指定するところで)が、サーバを数個に限定することは困難だ。そこで、クライアントの代わりに代理でDNS問い合わせ(再帰問い合わせと言う)を行うサーバが必要である。(後半の図も参照いただきたい)
・DNSサーバの設定としては、通常のDNSの設定をして、ゾーン情報を設定しなければいい。または、問い合わせ先として(大手プロバイダなどを)フォワーダとして設定する。
・多くのリクエストをキャッシュすることで、迅速なDNS回答ができる。ただ、キャッシュを保持してしまうことにより、サーバのIPアドレスが新しくなっても、旧のIPアドレスを返してしまうデメリットもある。
◆キャッシュサーバの目的
・DNSの問合せの迅速化
・DNS問い合わせトラフィックの減少
※コンテンツサーバに比べ、ゾーン転送などのWANトラヒックの減少。
・コンテンツサーバを分けて、セキュリティを高めるため
※通常のDNS要求とその回答はほとんどがキャッシュサーバからの回答である。nslookupにて、「Non-authoritative answer」と表示されるのは、権威が無い(=キャッシュサーバ)からの回答という意味である。
以下は参考になる。
(旧リンク)http://www.ipa.go.jp/files/000017289.pdf
なぜ、キャッシュサーバとコンテンツサーバを分けると、
セキュリティが高まるのですか?
たしか、DNSキャッシュポイズニングの攻撃を受けにくくなると聞きました。
以下を参照ください。
2.なぜDNSはコンテンツサーバとキャッシュサーバに分けるのか
12.ダイナミックDNS
過去問では、ダイナミックDNS(DNS UPDATE)の説明として、「PCのIPアドレスが変わっても、そのPCには同じホスト名でアクセスできる。(H19NW午前 問9)」と述べられてる。
あれ?なんか違う気がします。
固定IPを取得せずに、動的IPアドレスによってサーバを公開する仕組みでは?
世間一般には、そちらをイメージする人が多いかもしれない。
しかし、RFCできちんと定義されているのは、最初に述べたほうである。試験対策としてはこちら(DNS UPDATE)を覚えるべきである。
13.DNSラウンドロビン
H19NW午後1問4 に解説がある。
簡単に書かれているが、実は奥が深い
E社では現在, 4台の同性能のWebサーバを利用し,[ ア ]方式によって,Webアクセスを分散している。この方式ではDNSの仕組みを利用して,インターネットに公開するWebサーバのホスト名に,複数のWebサーバのIPアドレスを対応させる。対応させたホスト名とIPアドレスを,リソースレコードから構成される[ イ ]と呼ばれる設定情報に, Aレコードとして登録する。しかし,最近になつて,各WebサーバでCPU使用率に差が生じるようになっていた。 |
現在のWebアクセスの分散方法では,Webサーバが故障した場合,手作業によって①DNSサーバの設定を変更して,故障したWebサーバヘのアクセスを停止するので,対処に時間が掛かっていた。|
↓
↓
↓
↓
↓
[ ア ]には「DNSラウンドロビン」、[ イ ]には「ゾーン」が入る。
(1)メリット
サーバの負荷分散をするには、負荷分散装置が必要だ。これがかなり高額である。また、負荷分散装置が故障時にもサービスを継続させるために、冗長化する必要があり、さらに倍の価格だ。
そして、ネットワークの設計変更も必要になり、けっこうな手間だ。
しかし、DNSラウンドロビンは、なにもハードがいらず、設定も簡単。
たとえば、WWWサーバを、2つのIP(1.1.1.11と1.1.1.12)のサーバに振り分ける方法は以下。
www IN A 1.1.1.11 www IN A 1.1.1.12 |
(2)デメリット
・問題文にあるとおりである。
①サーバの負荷を計算できない。単純に交互に割り振るだけなので、負荷に偏りがでる。
②ダウンしたサーバにも割り振ってしまう。サーバがダウンしたかを知るすべがない。
(3)参考情報1
みなさんもnslookupコマンドで試してみてはどうでしょうか。
Yahoo!さんのメールサーバで試してみると、同じnslookupコマンドでも回答が毎回異なります。
C:\>nslookup -type=A mx1.mail.yahoo.co.jp
サーバー: dns.google
Address: 8.8.8.8
権限のない回答:
名前: mx1.mail.yahoo.co.jp
Addresses: 202.93.66.121
124.83.142.123
124.83.142.124
202.93.66.124
C:\>nslookup -type=A mx1.mail.yahoo.co.jp
サーバー: dns.google
Address: 8.8.8.8
権限のない回答:
名前: mx1.mail.yahoo.co.jp
Addresses: 202.93.66.124
124.83.142.123
202.93.66.121
124.83.142.124
(4)参考情報2
DNSラウンドロビンのテスト結果
10個のレコードを書いたら、上から順にきれいに回答する。
ランダムではない。
★zoneファイル
$TTL 3600
$ORIGIN web.b-sha.example.com.
@ IN SOA ns.web.b-sha.example.com. root (
2013072502
3600
900
604800
3600 )
IN NS ns.web.b-sha.example.com.
ns IN A 10.0.1.222
www IN A 10.1.0.1
www IN A 10.1.0.2
www IN A 10.1.0.3
www IN A 10.1.0.4
www IN A 10.1.0.5
www IN A 10.1.0.6
www IN A 10.1.0.7
www IN A 10.2.0.1
www IN A 10.2.0.2
www IN A 10.2.0.3
★結果(1回目)
dig @localhost www.web.b-sha.example.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> @localhost www.web.b-sha.example.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14727
;; flags: qr aa rd; QUERY: 1, ANSWER: 10, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;www.web.b-sha.example.com. IN A
;; ANSWER SECTION:
www.web.b-sha.example.com. 3600 IN A 10.1.0.1
www.web.b-sha.example.com. 3600 IN A 10.1.0.2
www.web.b-sha.example.com. 3600 IN A 10.1.0.3
www.web.b-sha.example.com. 3600 IN A 10.1.0.4
www.web.b-sha.example.com. 3600 IN A 10.1.0.5
www.web.b-sha.example.com. 3600 IN A 10.1.0.6
www.web.b-sha.example.com. 3600 IN A 10.1.0.7
www.web.b-sha.example.com. 3600 IN A 10.2.0.1
www.web.b-sha.example.com. 3600 IN A 10.2.0.2
www.web.b-sha.example.com. 3600 IN A 10.2.0.3
★結果(2回目)
www.web.b-sha.example.com. 3600 IN A 10.1.0.2
www.web.b-sha.example.com. 3600 IN A 10.1.0.3
www.web.b-sha.example.com. 3600 IN A 10.1.0.4
www.web.b-sha.example.com. 3600 IN A 10.1.0.5
www.web.b-sha.example.com. 3600 IN A 10.1.0.6
www.web.b-sha.example.com. 3600 IN A 10.1.0.7
www.web.b-sha.example.com. 3600 IN A 10.2.0.1
www.web.b-sha.example.com. 3600 IN A 10.2.0.2
www.web.b-sha.example.com. 3600 IN A 10.2.0.3
www.web.b-sha.example.com. 3600 IN A 10.1.0.1
3回目 | 4回目 | 5回目 | 6回目 | 7回目 |
---|---|---|---|---|
10.1.0.3 10.1.0.4 10.1.0.5 10.1.0.6 10.1.0.7 10.2.0.1 10.2.0.2 10.2.0.3 10.1.0.1 10.1.0.2 |
10.1.0.4 10.1.0.5 10.1.0.6 10.1.0.7 10.2.0.1 10.2.0.2 10.2.0.3 10.1.0.1 10.1.0.2 10.1.0.3 |
10.1.0.5 10.1.0.6 10.1.0.7 10.2.0.1 10.2.0.2 10.2.0.3 10.1.0.1 10.1.0.2 10.1.0.3 10.1.0.4 |
10.1.0.6 10.1.0.7 10.2.0.1 10.2.0.2 10.2.0.3 10.1.0.1 10.1.0.2 10.1.0.3 10.1.0.4 10.1.0.5 |
10.1.0.7 10.2.0.1 10.2.0.2 10.2.0.3 10.1.0.1 10.1.0.2 10.1.0.3 10.1.0.4 10.1.0.5 10.1.0.6 |
14.国際化ドメイン名(IDN:Internationalized Domain Name)
国際化ドメイン名とは、従来のアルファベットや数字によるドメイン以外に、「ネスペ29.com」のような日本語などの各国の言葉を使ったドメインのことです。
https://www.nic.ad.jp/ja/dom/idn.html
DNSサーバには日本語で登録されるのですか?
いえ、そうではありません。
一定のルールによって、アルファベットに置き換えられたドメインが登録されます。
たとえば、ネスペ29.com → xn--29-fi4a7c0c.com
また、全角は半角に変換されますので、ネスペ29.comもネスペ29.comもどちらも「xn--29-fi4a7c0c.com」です。
変換できるサイトとして、https://punycode.jp/ があります。ここで、日本語ドメインを英語表記(Punycode表記)に変換できます。
問15 インターネットの国際化ドメイン名(IDN : Internationalized Domain Name)の説明として,適切なものはどれか。 ア IDNでは,全角英数字を含むドメイン名(例:EXAPLE1.jp)と半角英数字によるドメイン名(例:EXAMPLE1.jp)は異なるドメイン名として扱われる。 イ IDNでは,通信する際に,漢字やアラビア文字などのドメイン名を,ASCII文字だけから成る文字列のドメイン名に一定の規則で変換する。 ウ IDNとは,“.com"や“.net"などの,どの国からも取得できるトップレベルドメイン名のことである。 エ IDNとは,“jp”や“.uk”などの,国別トップレベルドメインを使ったドメイン名のことである。 |
↓
↓
↓
↓
↓
正解:イ
15.【参考】DNSサーバの設定
自分で実際にやってみることが、
一番勉強になります。
みなさんもチャレンジしてください。
今後はPowerDNSが普及するかもしれませんが、今は圧倒的にBINDが普及しています。ここでは、BINDの設定を行います。
fedora Coreのダウンロードおよびインストール
ダウンロードサイトからダウンロード。以下のサイトも参照あれ。
fedorasrv.com
SElinuxはいれないほうが簡単。入れてしまってもはずすことができる。
[SElinuxの解除方法]
/etc/selinux/configにおいて
SELINUX=disabledとする。
その後、サーバを再起動する。
◆BINDのインストール
rpmとしてはbindのみを入れればよい。拡張モジュールchrootを入れるとパスが変わるので注意。
最近はnamed.confのサンプルが入らないのかな?
その場合、system-config-bindというRPMを入れてsystem-config-bindを実行するとGUIツールが起動する。
その際に、サンプルのnamed.confが作られる。
設定ファイルを変更する前に、インストールした段階でも基本的な設定は終わっている。service named startで起動してdig やnslookupで基本的なテストをするとよいだろう。
◆設定ファイル1
/etc/named.conf
ゾーンの基本情報を設定する
(1)正引き情報
options{ directory "/var/named"; ←設定ファイルのディレクトリ
fowarders{ ←転送先(フォワーダ)の設定
(2)正引き情報
zone "network-exam.com" { ←管理するドメイン
type master; ←プライマリを意味する。他にsecondary,hint
file "network-exam.zone"; ←詳しくは左のファイルに書くという意味。セカンダリDNSの場合は自分でzone情報を持たないので無い。代わりにmaster { プライマリDNSのIPアドレス; を記載
allow-update {none;}; ←とりあえずそのままで
};
(3)逆引き情報
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192.rev"; ←詳しくは左のファイルに書いてますよという意味。名前はなんでも良い。
allow-update {none;}; ←とりあえずそのままで
};
※その他の設定
・allow-transfer {セカンダリDNS; }; 「(ゾーン)転送を許可する」という意味なので、セカンダリDNSを指定する。
・allow-query DNSの問い合わせ(Query)を許可するホストを指定する。
・allow-update DynamicDNSにおいて、DNSの情報を書き変えることができるホストを指定する。
・ notify yes; プライマリDNSサーバからセカンダリDNSサーバへの更新通知をONにする。
◆設定ファイル2
/var/named/network-exam.zone
$TTL 86400
@ IN SOA ns1.network-exam.com. mail.network-exam.com. (
※SOAはStart of Authorityである。SOAに続いて、ネームサーバとメールアドレス(この場合はmail@network-exam.com:title=mail@network-exam.com]となる)を記載する。
2007060101 ; serial シリアル番号で、変更したらカウントをあげる。YYYYMMDD+通版とするのが一般的
3600 ; refresh Slaveが情報を更新する間隔
900 ; retry SlaveのDNSサーバが更新に失敗した場合のリトライ間隔
604800 ; expire SlaveのDNSサーバがretryに失敗し続けた場合、DNSのデータを破棄するが、破棄するまでの時間。通常はrefresh + retry x N以上にする。
86400 ; minimum ネガティブキャッシュ(引けなかったキャッシュ情報のTTL。短いほうが好ましい。全体のTTL($TTL)とは別
);
IN NS ns1.network-exam.com. ← NS(ネームサーバ)を指定
※正式には network-exam.com. IN NS ns1・・・と書くべきところを省略して記載している。
IN MX 10 ns1.network-exam.com. ← MX(メールサーバ)を指定
ns1 IN A 192.168.1.5 ← A(ホスト)を指定
※正式には ns1.network-exam.com. IN A 192・・となることろを省略。
www IN A 192.168.1.20
◆設定ファイル3
/var/named/1.168.192.rev
$TTL 86400
1.168.192.in-addr.arpa. IN SOA ns1.network-exam.com. mail.network-exam.com. (
2007060101 ; serial
3600 ; refresh
900 ; retry
604800 ; expire
86400 ; minimum
);
IN NS ns1.network-exam.com.
5 IN PTR ns1.network-exam.com. ←最後に.を忘れずに
20 IN PTR www.network-exam.com.
◆その他の設定ファイル
それ以外のキャッシュファイルやループバックの設定ファイルはそのままでよい。
キャッシュファイルは一度見ておくよ良い。日本にあるのがMで東大かどこかにあるはず。
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
※3600000はTTL
◆設定の確認
(1)ログファイルの確認
/var/log/messeges
にエラーが無ければよい。正常であれば、各設定ファイルがロードされたことをシリアルNOとともに表示される。
(2)構文チェック
named-checkzone ゾーン(ドメイン名) file名
これで、設定変更したファイルをすべてチェックしよう。
named-checkconfig エラーがなければ何も表示されない。
(3)digコマンドでの確認
・dig(domain information groper)
・dig @サーバ(ホスト) ドメイン クエリータイプ ※クエリータイプは、MXやAなど
・dig ドメイン名でもいける。
・dig -x IPアドレス (ここで-xを入れるのは逆引きになるから)
※digだけではうまくいかないと思う。
(4)nslookupで確認
> server 192.168.1.5
Default Server: [192.168.1.5]
Address: 192.168.1.5
> www.network-exam.com
Server: [192.168.1.5]
Address: 192.168.1.5
Name: www.network-exam.com
Address: 192.168.1.20
> set type=MX
> network-exam.com
Server: [192.168.1.5]
Address: 192.168.1.5
network-exam.com MX preference = 10, mail exchanger = ns1.network-exam.com
network-exam.com nameserver = ns1.network-exam.com
ns1.network-exam.com internet address = 192.168.1.5
◆TTL
IPアドレスを変更する場合、TTLを短くする必要がある。
$TTLを変更した。それだけで良いと思う
◆nslookupで詳細を見るには
set debug これにより、TTLなども確認できる
16.C&Cサーバを隠蔽するためのDNS技術
マルウェアはC&Cサーバと通信することで、攻撃者からの指令を受け、機密情報を外部に送信したりします。攻撃者からすると、C&CサーバのIPアドレスが特定されると、FWなどで通信が遮断されてしまいます。
そこで、いろいろな技法を用いて、C&Cサーバを隠蔽します。
ここで解説する技術は、以下の2つです。
1.Fast Flux : IPアドレスの隠蔽
2.Domain Flux : FQDNの隠蔽
16.1 Fast Flux
(1)Fast Fluxとは
過去問(R1NW午後Ⅱ問2)には、以下の記載があります。
Fast Fluxは,特定のドメインに対するDNSレコードを短時間に変化させることによって,サーバの追跡を困難にさせる手法である。 |
Fast Fluxは「ファストフラックス」と読みます。Fast Fluxを直訳すると「速い(Fast)変動(Flux)」です。直訳の通り,DNSレコードを「速く変動」させることで,ボットのIPアドレスを追跡しにくくします。
(2)FastFluxの仕組み
まず、図4のDNSの応答情報を見てみましょう。
図4は、ns.example.comに、fast-flux.example.comのAレコードを問い合わせた結果です。QUESTION SECTIONが問い合わせで、ANSWER SECTIONがその応答です。fast-flux.example.comという1つのFQDNにIPb1~IPbzまでの26個のIPアドレスが付与されています。また、180はTTL(Time To Live)の値で、キャッシュDNSサーバでキャッシュする時間を秒数で指定します。今回はわずか3分(=180秒)しかありません。これにより、PCは3分が経過すると、改めてIPアドレスを問い合わせします。
なぜ、こんなことをするのですか?
C&Cサーバへの通信が、拒否されないようにするためです。仮に、企業内のPCがC&Cサーバに通信してマルウェアに感染したとします。企業のシステム管理者はFWの通信ログを見て、該当のIPアドレスの通信を遮断します。しかし、このように大量のIPアドレスをDNSに記載しておけば、マルウェア(またはDNSのリゾルバ機能)が別のIPアドレスに通信します。
加えて、攻撃者がこのドメイン情報を頻繁に変更したら、IPアドレスはめまぐるしく変化します。具体的には、攻撃者はIPb1~IPbz、次はIPc1~IPcz、IPd1~IPdz、などと毎回変化させるのです。TTLはわずか3分ですから、PCは3分ごとにDNSサーバに問い合わせをします。そして、変化した新しいIPアドレスに通信しようします。こうなると,問題文にある「サーバの追跡を困難にさせる」という点もわかってもらえることでしょう。システム管理者にて、このように変化するIPアドレスをFWやProxyサーバに反映させ続けるのは現実的に困難です。
攻撃者はそんなにたくさんのIPアドレスを持っているのですか?
いえ、持っていないでしょう。多くは、乗っ取ったサーバを使っています。
IPアドレスではなく、URLやFQDNなどのドメインで拒否すればいいと思います。
もちろん、そうです。よって、攻撃者はドメインも隠蔽しようと考えます。その方法が次のDomain Fluxです。
16.2Domain Flux
過去問(R1NW午後Ⅱ問2)には、以下の記載があります。
攻撃者は,これを避けるためにDomain Flux と呼ばれる手法を用いることがある。
Domain Fluxは,ドメインワイルドカードを用いて,あらゆるホスト名に対して,同一のIPアドレスを応答する手法である。Fast Flux とDomain Fluxを組み合わせることによって,C&CサーバのFQDNとIPアドレスの両方を隠蔽できる。図4に示した構成のFast Flux とDomain Fluxを組み合わせたときの,ns.example.comに設定されるゾーンレコードの例を図5に示す。 図5 ns. example. comに設定されるゾーンレコードの例(抜粋) |
Domain Fluxは、問題文にあるように、「あらゆるホスト名に対して,同一のIPアドレスを応答する」ことで、攻撃者のIPアドレスを隠蔽する手法です。といっても、技術的には、DNSのAレコードにワイルドカード(*)を使う、これだけです。
それだけで、問題文にある「C&CサーバのFQDNとIPアドレスの両方を隠蔽できる」のですか?
IPアドレスの隠蔽は、先に述べたFast Fluxで実現します。FQDNの隠蔽に関してですが、攻撃者はプログラムによって、毎日のように新しいドメインを作成します。たとえば、日付を付けてc2c20200123.example.com、c2c20200124.example.com、などと変化させます。DNSサーバにはワイルド―カード「*」を使っているので、上記のドメインであっても、名前解決ができます。ドメインのパターンはほぼ無限ですから、C&Cサーバの正規のドメイン名(またはFQDN)の特定は困難です。つまり、C&CサーバのFQDNを隠蔽できるのです。
攻撃者がDomain FluxとFast Fluxを組み合わせると,URLフィルタリングを回避します。また、ログ解析をする際にも、IPアドレスの追跡も非常に困難になります。
17.【下書き】DNSでAレコードを複数書いた場合
例
www A 10.1.1.1
www A 10.1.1.2
教科書的にいうと、ラウンドロビンなので、複数のAレコードの中から一つを順番に回答する。
1)サーバの動き
順番に返すもの(case1)もあるだろうが、全部を返すもの(case2)も多いと思う。
全部を返すときに、順番をラウンドロビンで変えている(case3)かもしれない。
case1 1回目:10.1.1.1 → 2回目:10.1.1.2 → 3回目:10.1.1.1
case2 1回目:10.1.1.1,10.1.1.2 → 2回目:10.1.1.1,10.1.1.2 → 3回目:10.1.1.1,10.1.1.2
case3 1回目:10.1.1.1,10.1.1.2 → 2回目:10.1.1.2,10.1.1.1 → 3回目:10.1.1.1,10.1.1.2
※このあたりは機器というかDNSサーバによって異なると思うので、テストが必要。YahooなどにDNSクエリーを投げて試してみたいと思う。
2)クライアントの動き
Postfixによるメールサーバは、複数のDNSのアドレスを両方保存し、生きている方と自動で通信をした。
Windowsパソコンでは、1つ目のIPアドレスしか保有せず、1つ目のサーバがダウンしている場合に自動で2つ目に行くような動きはしなかった。
※こちらもテストしてみたい。
情報処理試験(ネットワーク)でもこれに関する出題があった気がするので、確認したい。