Linuxサーバ運用マニュアル
基本的にコンピュータはホストを数字(IPアドレス)で管理しています。 しかしIPアドレスはただの数字で,人間には使いにくいものです。 そのためwww.ash.or.jpなどのホスト名をつけ,IPアドレスと対応させて管理しています。
ホストを追加するということは,このホスト名とIPアドレスの対応情報を登録する作業のことです。 登録された情報を元に,コンピュータはIPアドレスとホスト名を相互に変換します。 ホスト名からIPアドレスを検索することを正引き,IPアドレスからホスト名を検索することを逆引きと言います。
ホスト名とIPアドレスを変換するには,HOSTSファイルを利用する方法とDNSを利用する方法がありますので,それぞれについて解説していくことにします。また,ホスト情報を調査するnslookupコマンドについての簡単な解説もすることにします。
hostsファイルというのは,
/etc/hosts
というファイルのことで,IPアドレスとホスト名の対応が書いてあるテキストファイルです。
単純でわかりやすいものですが基本的にはローカルネット内部の名前解決にしか使えません。
# hosts 127.0.0.1 localhost 10.0.1.1 gauntlet.lo.ash.or.jp gauntlet 10.0.1.1 sv01.lo.ash.or.jp 10.0.1.1 www.lo.ash.or.jp 10.0.1.2 sv02.lo.ash.or.jp 10.0.1.20 pc20.lo.ash.or.jp 10.0.1.21 pc21.lo.ash.or.jp 10.0.1.22 pc22.lo.ash.or.jp 10.0.1.23 pc23.lo.ash.or.jp 10.0.1.24 pc24.lo.ash.or.jp |
ホストを追加する場合は,上記の例のようにIPアドレスとホスト名の対応をhostsファイルに追加するだけです。 また,上記の例で,10.0.1.1に,sv01とwwwの2つのホスト名を割り当てているように, 同一のIPアドレスに複数のホスト名を割り当てることも可能です。 削除する場合は,そのホスト名が書いてある行を削除してしまいます。
DNSは,ドメインネームシステムの略で,簡単には,ホスト情報を分散管理するためのシステムです。 インターネットができた頃は,hostsファイルですべてのホスト名を管理していました。 しかし,hostsファイルによるホスト管理では,どこかで新しいホストが追加されるたびにhostsファイルを更新していかねばならず,ネットワークの規模が大きくなってくると,すべてのホスト情報をhostsファイルに記入していくことは非常に困難になります。 そこで,DNSを利用することになります。
DNSの概念は,この図のようになっています。 どこかの誰かがwww.ash.or.jpを調べようとした場合,まず,jpドメインを管理するDNSがどこか教わり,そこでor.jpを管理するDNSを教わり,というように,参照先を教わりながら次々と質問していき,最終的にwww.ash.or.jpに対応するIPアドレスを得ることになります。 この場合,ashのDNSサーバは,ash内部の情報と,それ以外(jpやor.jp)の問い合わせ先だけを記録しておけばよく,hostsファイルでの管理よりもはるかに簡単になります。
セカンダリDNSというのは,基本的には予備のDNSサーバです。 しかし,通常参照する側から見れば,プライマリとセカンダリは等価であり,負荷を分散させるために,どちらかを参照することになっています。 このためセカンダリDNSは,プライマリ側と同等の情報を貯える必要があり,プライマリDNSを修正した場合,それをチェックして情報を貯えます。
DNSの基本的な設定はnamed.confで行われます。 DNSで設定されたホスト名の情報は,基本的に全世界から参照できるようになります。
ホスト名を追加する場合は,named.confを編集するのではなく, named.confで指定された,zoneファイル(正引き用)とrevファイル(逆引き用)を修正することになります。
;$ORIGIN ash.or.jp. @ IN SOA gwsv.ash.or.jp. root.ash.or.jp. ( 1999062901 ; Serial 3600 ; Refresh after 1 hour 300 ; Retry after 5 minutes 604800 ; Expire after 1 week 14400 ) ; Minimum TTL of 4 hour IN NS gwsv.ash.or.jp. IN NS ns-tk011.ocn.ad.jp. IN MX 10 name.ash.or.jp. IN A 210.154.87.18 ; gate IN A 210.154.87.17 name IN A 210.154.87.18 pc20 IN A 210.154.87.20 pc21 IN A 210.154.87.21 pc22 IN A 210.154.87.22 pc23 IN A 210.154.87.23 pc24 IN A 210.154.87.24 ; mail IN CNAME name www IN CNAME name ftp IN CNAME name |
zoneファイルでは,以下のようにホスト名を登録します。
ホスト名 IN A IPアドレス |
また,ホストに別名を割り当てる際には,以下のように指定します
別名 IN CNAME ホスト名 |
zoneファイルにはSOAレコードという部分があり,セカンダリDNSに対する制御情報が記入されています。 Serialという数字(上記の例では1999062901となっている)は, 前回よりも大きくなっていないとセカンダリDNSの参照が行われないので, 更新したら必ず変更しなければなりません。 年月日プラス連番という書き方をするのがわかりやすくていいでしょう。 また,Refreshにはセカンダリが次にチェックするまでの時間を指定します。 ここでは3600(秒)を指定しているので,1時間後にはセカンダリDNSにも設定が反映されます。 この数字を小さくすれば,設定の反映はすぐ行われますが,回線を無駄に消費してしまうことにもなりますので,注意してください。
;$ORIGIN 16.87.154.210.in-addr.arpa. @ IN SOA gwsv.ash.or.jp. root.ash.or.jp. ( 1999062901 ; Serial 3600 ; Refresh after 1 hour 300 ; Retry after 5 minutes 604800 ; Expire after 1 week 14400 ) ; Minimum TTL of 4 hour IN NS gwsv.ash.or.jp. IN NS ns-tk011.ocn.ad.jp. IN A 255.255.255.240 ; 17 IN PTR gate.ash.or.jp. 18 IN PTR name.ash.or.jp. 20 IN PTR pc20.ash.or.jp. 21 IN PTR pc21.ash.or.jp. 22 IN PTR pc22.ash.or.jp. 23 IN PTR pc23.ash.or.jp. 24 IN PTR pc24.ash.or.jp. |
revファイルは,以下のようにホスト名を記述します。
IPアドレス IN PTR ホスト名.ドメイン名. |
ここではIPアドレスの最後の桁だけを記入すればよく, また,ホスト名はドメイン名まで含めて記入し,最後に「.」をつけます。
zoneファイルの修正時と同様に,SOAレコード(Serial)も修正しておきましょう。
なお,各ファイルを更新しただけでは設定は反映されません。 DNSサーバ(named)の再起動が必要になります。
Linux# ps aux | grep named Linux# kill プロセス番号 (プロセス番号は,psで調べたnamedの番号) |
DNSは,基本的に全世界へと公開されるものです。 ローカルネットで利用しているプライベートアドレスがインターネット側に流れていくのには問題があります。 このため,ローカルネット側のホスト情報は,外部からは参照されないような設定にしなければなりません。 また,逆に,インターネット側で利用するべきグローバルIPのホスト情報はDNSに登録しなければ意味がありません。
ローカルネットとインターネットの双方に接続されているゲートウェイマシンの場合,その設定には注意をする必要があります。 プライベートアドレスはhostsファイルで管理し,グローバルアドレスはDNSで管理するのも1つの方法でしょう。
両方をDNSで管理する場合は,named.confファイル内でzoneファイルやrevファイルを指定するとき,どこから参照できるかの情報を記入し,プライベートアドレスの情報が外部から参照されないようにする必要があります。それにはallow-query,allow-transferの2つを設定することが必要です。 queryは通常の問い合わせ。transferは通常セカンダリが行うような,全情報の取得です。
// zone "lo.ash.or.jp" { type master; file "lo.ash.zone"; allow-query { 10.0.1/24; 210.154.87.16/28; }; allow-transfer { 10.0.1/24; 210.154.87.16/28; }; }; |
この例では,10.0.1/24と210.154.87.16/28,すなわち10.0.1.*と210.154.87.[16-30](ASHのグローバルアドレス)からのみ参照できる設定になっています。
nslookupコマンドは,DNSサーバに対して,ホスト情報を問い合わせるコマンドです。 対話モードと非対話モードがあります。 非対話モードは,以下の形で実行されます。
Linux# nslookup ホスト名 問い合わせ先 Linux# nslookup IPアドレス 問い合わせ先 |
一般的には対話型として実行され,EXITで終わるまで,ホストとIPの名前解決を行います。
exit | 対話モードを終了する。 |
lserver ドメイン名 | ホスト情報を問い合わせるサーバを変更する。 |
ls -d ドメイン名 | ホスト情報の一覧(ゾーン転送の内容)を表示する。 |
set type=A | 応答の種類をホストのインターネットアドレスに変更(デフォルト) |
set type=MX | メールサーバの情報を問い合わせるようになります。 |
set type=NS | 指定したゾーンのネームサーバを問い合わせるようになります。 |
set type=SOA | SOAレコードを問い合わせるようになります。データが更新されているかを確認する場合や,ネットワーク管理者を調べる場合に使います。 |
今回で「Linuxサーバ運用マニュアル」の連載は終了です。 長い間、コラムを読んでいただきありがとうございます。
(ASHマルチメディア研究会/joe,はしもと)