DNS 201

/ LPIC / Comment[0]
名前解決
ホスト名とIPアドレスの相互変換
 ・ホスト名からIPアドレスを求める 正引き
 ・IPアドレスからホスト名を求める 逆引き


DNSの名前解決手順
 1 Webブラウザがリゾルバへ名前解決を依頼
 2 リゾルバは/etc/resolv.confに記述されているDNSサーバ☆に問い合わせを行う
 3 DNSサーバ☆はルートDNSサーバに問い合わせを行う
 4 ルートDNSサーバはwww.google.comは知らないが、知っている.comを管理しているDNSサーバを紹介する
 5 DNSサーバ☆は紹介されたDNSサーバに問い合わせると、そのDNSサーバはgoogle.comを知っていたので
  google.comのIPアドレスが分かる
 6 DNSサーバ☆は得た情報をキャッシュに保存し、リゾルバに返答する
 7 Webブラウザは得られたIPアドレスにアクセスする


DNS関連コマンド

# host [オプション] ターゲット [DNSサーバ]
  オプション
  -t リソースレコードタイプを指定
  -v 詳細情報を表示

 google.comのメールサーバを表示  
  # host -t MX google.com


# dig [オプション] [@DNSサーバ] ターゲット クエリタイプ
  オプション
   -x 逆引きするIPアドレスを指定
   -p 問い合わせ先のポート番号を指定
  クエリタイプ
   any 全ての情報
   ptr IPアドレスに対応するホスト名
   ns ネームサーバ情報
   mx メールエクスチェンジ情報
   soa ゾーン情報
   hinfo ホスト情報 
   axfr ゾーン転送情報
   txt 任意の文字
  フラグ
   ra 再帰検索が可能
   rd 再帰検索を希望
   qr 問い合わせに対する回答
   aa 権威のある回答

 google.comの全ての情報を表示
  # dig @216.239.32.10 google.com any
   ; <<>> DiG 9.7.0-P1 <<>> @216.239.32.10 google.com any
   ; (1 server found)
   ;; global options: +cmd
   ;; Got answer:
   ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14975
   ;; flags: qr aa rd; QUERY: 1, ANSWER: 12, AUTHORITY: 0, ADDITIONAL: 0
   ;; WARNING: recursion requested but not available
   :


# nslookup [オプション] ターゲット
  オプション
  -type= リソースレコードタイプを指定
  -norecurce 再帰的な問い合わせをしない

 google.comを名前解決
  # nslookup google.com
   Server:	192.168.1.1
   Address: 192.168.1.1#53

   Non-authoritative answer:
   Name: google.com
   Address: 66.249.89.99
   Name: google.com
   Address: 66.249.89.104

 DNSサーバ192.168.1.1はgoogle.comに権威を持っていない

 google.comに対し権威を持つDNSサーバを表示
  # nslookup -type=NS google.com
   Server:		192.168.1.1
   Address: 192.168.1.1#53

   Non-authoritative answer:
   google.com nameserver = ns3.google.com.
   google.com nameserver = ns4.google.com.
   google.com nameserver = ns1.google.com.
   google.com nameserver = ns2.google.com.

   Authoritative answers can be found from:
   ns4.google.com internet address = 216.239.38.10
   ns3.google.com internet address = 216.239.36.10
   ns2.google.com internet address = 216.239.34.10
   ns1.google.com internet address = 216.239.32.10

 google.comに権威を持つDNSサーバを指定して直接問い合わせる 
  # nslookup google.com 216.239.32.10
   Server:		216.239.32.10
   Address: 216.239.32.10#53

   Name: google.com
   Address: 66.249.89.99
   Name: google.com
   Address: 66.249.89.104


BIND

インターネットでもっとも利用されているDNSサーバ
BINDサーバデーモン: named
BIND設定ファイル: /etc/named.conf
BIND制御コマンド: # rndc

 ・ゾーン:DNSサーバが管轄するドメインの範囲
 ・ゾーンの管理権限を持っていることを権威を持つという
 ・ゾーン管理を移すことを委譲という

通常、DNSサーバは冗長性を確保するために複数で構成されている
 ・ゾーンファイルを所有するDNSサーバ: マスターDNSサーバ
 ・マスターDNSサーバのゾーン情報を転送(ゾーン転送)するDNSサーバ: スレーブDNSサーバ

問い合わせを受けたDNSサーバが権威の無いゾーンの場合、問い合わせ元に代わってルートDNSサーバから順に問い合わせをすることを再帰的な問い合わせという。
無条件に再帰的問い合わせを許可すると、関係ない問い合わせにも処理してしまいDDoS攻撃などに悪用されてしまう可能性が出てくるので、通常は限られた自ドメイン内からの問い合わせに対してのみ許可するように設定する。


/etc/named.conf

 //
 // named.conf
 //
 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
 // server as a caching only nameserver (as a localhost DNS resolver only).
 //
 // See /usr/share/doc/bind*/sample/ for example named configuration files.
 //

 options {
  listen-on port 53 { 127.0.0.1; };
  listen-on-v6 port 53 { ::1; };
  directory "/var/named";
  dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
  allow-query { localhost; };
  recursion yes;
 
  dnssec-enable yes;
  dnssec-validation yes;
  dnssec-lookaside auto;
 
  /* Path to ISC DLV key */
  bindkeys-file "/etc/named.iscdlv.key";
 };
 
 logging {
  channel default_debug {
  file "data/named.run";
  severity dynamic;
  };
 };
 
 zone "." IN {
  type hint;
  file "named.ca";
 };

 include "/etc/named.rfc1912.zones";


ステートメント
 acl    ACLの定義
 controls namedの操作を許可するホスト
 include 指定したファイルを読み込む
 key   認証情報
 zone   ゾーンの定義
 options namedの動作の詳細設定

named.confはステートメントとオプションで構成されており、行末は;で終わる

各ステートメントの書式
acl

 acl linux-network {
   192.168.1.0/24;
 };


controls

  controls {
    inet 127.0.0.1 allow { Phantom-network; };
  };


include

 include "/etc/named.rfc1912.zones";


zone
 ゾーンタイプ
 hint ルートDNSサーバを指定
 master 指定したゾーンのマスターDNSサーバを指定
 slave 指定したゾーンのスレーブDNSサーバを指定

マスター

 zone "phantom.net" {
    type master;
    file "phantom.net.zone";
 };


スレーブ

 zone "phantom.net" {
    type slave;
    file "phantom.net.zone";
    masters { 192.168.1.3; };
 };

スレーブの設定はマスターDNSサーバのIPアドレスを記述する


rndcコマンド
namedを制御するユーティリティ

# rndc オプション
 オプション
 stop namedを終了
 halt namedを停止
 refresh ゾーンデータベースを更新
 stats 統計情報を/var/named/named.statsに書き出す
 status namedのステータスを表示
 dumpdb キャッシュの内容をファイルに出力
 reload 指定したゾーンファイルを再読み込み
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可