|
||
|
プライマリサーバを構築する(CentOS5)BIND、つまりDNSです。その役割に今更説明は必要ないでしょう。DNSには基本的に三種類のタイプがあります。 ・プライマリDNSサーバ ・セカンダリDNSサーバ ・キャッシュオンリーサーバ これらはゾーン単位でなら同居させることが可能です。 ※ゾーン、つまりそのサーバが管理しているドメインの一つ一つの範囲のことです。 ファイルパスで言えば、個々のエントリをファイルとするなら、ゾーンはフォルダに相当するのでしょうか。 一台のDNSサーバが複数のゾーンを管理していることも珍しくありません。 自社のexample.comドメイン(ゾーン)に関しては責任を持つ立場(プライマリ)、サブドメインに当たる子会社の child.example.comドメイン(ゾーン)については冗長化を兼ねた立場(セカンダリ)、インターネット系ドメインの解決については要求を転 送するだけ(キャッシュオンリーサーバ)、などという具合に。 なおプライマリ、セカンダリという名称はBIND4以前のころで、BIND8からはマスター、スレイブという呼び方をします。 けれど世間的には相変わらずプライマリ、セカンダリと呼ぶことが多いです。 ・CentOSのDNSクライアントの設定 ・BINDのインストール ・named.confの編集 ・ゾーンファイルの作成 ・ルートヒントのダウンロード ・ファイアウォールの開放 ・試験 CentOSのDNSクライアントの指定OSのDNSクライアントの設定と。DNSサーバの動作は関係ありません。ですがとりあえず、混乱が無いように指定の仕方を紹介しておきます。 GUI上の設定 コマンドラインからの設定 /etc/resolv.confを編集(各環境のDNS、もしくはDNSである自分自身) nameserver 192.168.1.254 search localdomain BINDのインストールここではBINDはchrootしたものを使用します。最近のCentOSやFedoreなどは、セキュリティ上の考えからインターネット公開に適したchroot版BINDを推奨しているようです。普通のBINDを使用した場合でも、ファイルパスをわずかに読み替えるだけなので、参考になると思います。 ※chroot BINDが使用するファイルの構成を/(ルート)から考えて、/var/named/chroot配下に再配置した仕組み。 例 /etc/named.conf → /var/named/chroot/etc/named.conf BINDにとってchrootディレクトリ以上へは辿れなくなることで、侵入者がBINDから侵入してもシステムへアクセスできなくなります。 一旦chrootをすると、OS上からそれを解除する方法はありません。 インストール自体は相変わらずです。yumから、chrootタイプのbindをインストールします。 #yum install bind-chroot この時点でインストールされたバージョンは「bind-9.3.6-16.P1.el5」でした。 実運用、とくに公開する場合BINDの最新バージョンを使用するほうが良いです。 なおセキュリティを重視するインターネットサーバ、攻撃が予想されやすい大規模環境、非常にスキルの高いエンジニアなどはソースコンパイルにこだわったりします。 細かな調整を加えることが可能なこと、伝統、単に思想の問題など理由はさまざまです。 named.confの編集インストールが完了すれば、named.confファイルを作成します。Fedoreなら5以降、CentOSなら3以降、named.confはデフォルトでは添付されなくなり、自分で記述する必要があります。 named.confにはどんなゾーンを、どんな性質(プライマリ、セカンダリ、キャッシュオンリー)で、どんなファイル名で運用するかということが記述されています。他にもBINDの動作について不用と言えるほど細かい動作を指定できます。 ここでは必要最低限の記述のみ行っています。 chrootを採用しているので、named.confのパスは以下になります。 /var/named/chroot/etc/named.conf options { directory "/var/named"; // forwarders { DNS-Addr;}; // forward only; }; //正引きゾーンの定義 zone "example.com" { type master; file "example.com.zone"; allow-update {none;} ; }; //逆引きゾーンの定義 zone "1.168.192.in-addr.arpa" IN { type master; file "example.com.rev"; allow-update {none;} ; }; //インターネットルートヒント //zone "." { // type hint; // file "named.ca"; // allow-update { none; }; //}; この設定では、自身がホストするexample.comゾーンの正引き、逆引き、そしてインターネットドメインのルートサーバへの問い合わせです。 ルートヒントは起動時に自動的ダウンロードしてメモリ上に格納されることと、デフォルトで再帰問い合わせが有効になっているため、インターネットゾーンの設定は無くてもインターネットドメインの解決をすることができます。 でもできることなら最新のルートヒントをファイルで与えるほうが伝統的です。明示的に設定した場合ファイル「named.ca」が必要になります。 ゾーンファイルの作成受け皿となるファイル(example.com.zoneとexample.com.rev)を作成します。#cd /var/named/chroot/var/named/ #touch example.com.zone #touch example.com.rev 空ファイルが出来たら、編集してゾーン情報を加えます。 NSには適当なサーバ名、対応するAレコードにDNSサーバのアドレスを与えます。 host1は、LAN内の適当なホストです。 各FQDNの末尾の「.」に注意しましょう。 example.com.zone $TTL 86400 @ IN SOA bind-sv.example.com. root.example.com. ( 2011070901 ;Serial 3600 ;ゾーン転送の間隔 秒 300 ;転送失敗時のリトライ間隔 秒 360000 ;ゾーンファイルの保持時間 秒 86400 ) ;他サーバでキャッシュされる時間 秒 IN NS bind-sv.example.com. bind-sv IN A 192.168.1.99 host1 IN A 192.168.1.100 example.com.rev $TTL 86400 @ IN SOA bind-sv.example.com. root.example.com. ( 2011070901 ;Serial 3600 ;Refresh sec(Transfer span) 300 ;Retry sec(in failure retry) 360000 ;SecondaryExpire sec 86400 ) ;Minumum TTL sec(zone expired time) IN NS bind-sv.example.com. 99 IN PTR bind-sv.example.com. 100 IN PTR host1.example.com. ファイルを作成したら、bindを起動します。 #service named start #chkconfig named on 正常に起動できない場合は、各ファイルの記述をチェックします。末尾のセミコロンやカッコに気を付けましょう。 ルートヒントのダウンロードnamed.confの中でルートヒントを明示的に記述するのは伝統的なことです。named.conf、以下の情報を有効にします。 zone "." { type hint; file "named.ca"; allow-update { none; }; }; 明示的に記述した場合、指定したnamed.caファイルがディレクトリに存在してないとサービスの起動に失敗します。 配布サイトからnamed.rootファイルをダウンロードして、名前を変えて配置します。 ftp://ftp.nic.ad.jp/internet/rs.internic.net/domain/ よく最新のものを使うとか、起動時にダウンロードするとかあります。 頻繁に更新されるものではありませんが、アチラさんの都合で勝手に変更されるものです。 ルートヒントが変更されたとき、最新のリストを自動で得るには再起動せねばなりません。 なのでDNSサーバとして一瞬たりとも停止できない環境や、ゾーンが大規模で再起動に時間がかかる環境だと再起動は困難です。 リストファイルを編集してリロードすればサービスを停止せずルートリストを更新できるという利点があります。 ファイアウォールの開放試験の前に、ファイアウォールを開放します。ファイアウォールが有効なら、おそらくUDPの53番は閉じられているでしょう。自身はともかく、LAN内の端末からはアクセスできません。 GUIかコマンドラインか、いずれかで開放します。 GUIからの開放 コマンドラインからの開放 /etc/sysconfig/iptablesへ、udp 53の行を追加します。 ファイルを編集後、iptablesを再起動します。 #service iptables restart 試験LAN内の端末から、nslookupで名前解決の試験をしてみます。#nslookup >server 192.168.1.99 >host1.example.com Server: [192.168.1.99] Address: 192.168.1.99 Name; host1.example.com Address: 192.168.1.100 >set type=ptr >192.168.1.100 Server: [192.168.1.99] Address: 192.168.1.99 100.1.168.192.in-addr.arpa name = host1.example.com 1.168.192.in-addr.arpa nameserver = bind-sv.example.com bind-sv.example.com internet address = 192.168.1.99 無事、回答が帰ってくれば成功です。 タイムアウトする場合は、ファイアウォールで53番が開放されていない、named,confやゾーンファイルの記述が間違っていることが考えられます。 細かい調整を加える場合は、別項の「named.confを調整する」を参照してください。 |
|