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で確認してみる。
使い方はまたあとで。