DNS

今日はDNS。名前解決。
通信には53番ポートを利用。通常UDP。データが大きくなるとTCPを使うことも。
一般的にDNSでやりとりするデータはパケット分割されるほど大きくないので、到達確認を行わないUDPでもいいんだって。

/etc/hostsファイル

ローカルで名前解決ができちゃうファイル。
昔はほんとにこのファイルで管理してたんだけど、すぐ破綻したのはすぐ想像できる。
けどいまでも一応このファイルを参照するんだとさ。
やりたい人は気合入れて何万行と書いてもいけるらしい?

書き方例
127.0.0.1 localhost localhost.localhost.mydomain
IPアドレス ホスト名+ドメイン名 別名…
192.168.0.1 abc.mynetwork abc
192.168.0.2 www.google.com ←こんなことしちゃうとgoogleにいけなくなります。
おもろいね。

/etc/resolv.confファイル

問合せしに行くnameserverを記入しておくファイル。
3つまで書いてOK。1つあればOK。
1つ目がダウンしてたりしたときは2つ目…という風になるみたい。
ただし、1つ目で問合せをして、名前解決できねーよ!と返ってきても2つ目に問合せするとかではないらしい。
なぜって、2つ目に問合せしても結局名前解決はできないからさ。

書き方例
nameserver 192.168.0.1
nameserver 222.222.222.222
nameserver h01.abc.net

BIND DNS

インストールされてるかチェック
rpm -qa | grep ^bind
 ^←行頭を指定する正規表現
ここでは行頭がbindのrpmを検索してる。

ついでにキャッシングネームサーバーもチェック
rpm -qa | grep cash

  • 設定ファイル

/etc/named.conf
たとえば、abc.netというネットワークがあって、その中にh01.abc.netという集まりを作るよって時。下記を追加する。

zone "h01.abc.net" IN {
   type master; ←マスターDNSの設定だよ。sleve/hintの場合もあるよ。
   file "/var/named/h01.abc.net.zone"; ←ゾーンファイルはこれだよ。
};

ファイルを変更した後は
#named-checkconfと実行する。
ファイルに問題なければなんも出てこない。
ネットワークに関する設定だから、間違ったまま起動しちゃうと大変。

次にゾーンファイルを作る。
vi等で、さっき/etc/named.confで指定したファイルを作成する。
ここでは /var/named/h01.abe.net.zone
ちなみにファイルの場所とかはどこでもいいけど、/var/namedディレクトリ以下に置くのが一般的らしい。
ファイルの中にはh01.abc.netのネームサーバーの情報とh01.abe.net以下のコンピュータの名前解決情報を書く。

まずはDSNサーバーの情報

$TTL 86400 ←キャッシュ時間 別のDNSサーバーがここの情報を保持しておく時間。
h01.abc.net. IN SOA ns1.h01.abc.net. info.abc.net. (
------------ -- --- ---------------- ------------- --
    (1)     (2) (3)      (4)            (5)        (6)
  2007022001 ← シリアル番号
  3H ← スレーブDNSからチェックを受ける間隔
  15M ← 上記チェックが失敗したとき、リトライするまでの時間
  1W ← マスタDNSと連絡が取れなくなってからスレーブDNSがデータを破棄するまでの時間
  1D ← 存在しないという情報を保存しておく時間。余計な問合せを減らす。 
  ) 
(1) ネームサーバーが管理するネットワーク
(2) クラス インターネットで…
(3) レコード SOAレコードだよ。
(4) ネームサーバー名
(5) 管理者メールアドレス。一つ目の.は@とみなされる。 
(6) ( 設定内容が続くよという印。)で終わる。

h01.abc.net IN NS ns1.h01.abc.net ←h01.abc.netのネームサーバはns1.h01.abc.netですよ
h01.abc.net IN MX mail.h01.abc.net ←h01.abc.netのメールサーバーはmail.h01.abc.netですよ
ns1.h01.abc.net IN A 111.111.111.1 ← ns1.h01.abc.netのアドレスは111.111.111.1ですよ
mail.h01.abc.net IN A 111.111.111.2 ← mail.h01.abc.netのアドレスは111.111.111.2ですよ
www.h01.abc.net IN A 111.111.111.3 ← www.h01.abc.netのアドレスは111.111.111.3ですよ

まぁこんな感じ。
間違ってたらごめんなさい。
#/etc/init.d/named restart
DNSを再起動してnslookupやdigで確認してみる。

使い方はまたあとで。