情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

BINDの設定ファイルをしっかり書いたと思ったのに反映されなかった原因 このエントリーを含むはてなブックマーク

BINDの設定書き換え

BINDの設定ファイルの書き方を含めた、自分が過去に書いたBIND関連記事を見ながらBINDの設定を変更しました。しかし、全く反映されない。正確に言うと、変更前の設定は確かに無効になっているのに、新しい設定が読み込まれない状態でした。

原因

原因は、「BIND導入記04 設定ファイル編 後編」でも触れていた、データベースファイルの3行目にある設定ファイルの通し番号を更新していなかったことが原因でした。リンク先の記事でしっかりと

また、2009010701という数字は、このファイルの更新のたびに増加するようにしてください。

のように注意を促しておきながら、自分が見事にはまってしまいました。

まとめ

BINDの設定はミスしやすい。

DNS & BIND 第5版
DNS & BINDクックブック―ネームサーバ管理者のためのレシピ集
BIND9によるDNSサーバ構築

スポンサーサイト
BIND | コメント:0 | トラックバック:0 | 編集

BINDインストールTIPS hosts.allow, hosts.deny 編 このエントリーを含むはてなブックマーク

BINDをインストールする最中に気がついたことをインストールTIPSとして紹介します

hosts.allow, hosts.deny ファイル

BINDの動作をnslookupで確認しようとしたとき、

No response from server
と表示されてしまったので、アクセスすらできていないことから、「hosts.allow」「hosts.deny」が思い浮かびました。

結論から言うと

結論から言うと、「BINDに関してはhosts.allowファイルもhosts.denyファイルも関係ありません」ということです。

なぜ関係ないのか

そもそも、hosts.allow,hosts.denyは、TCP Wrapperを利用するプログラムの通信を制限する設定ファイルなので、TCP Wrapperを利用していないBINDの通信には何の関係もないのです。

hosts.allow, hosts.denyが関係するプログラムとは

ずばりhosts.allow, hosts.denyが関係してくるプログラムは、TCP Wrapperを利用しているプログラムのことです。そして、TCP Wrapperの実態はlibwwrapという共有ライブラリです。つまり、hosts.allow, hosts.denyで通信相手を制限できるのは、libwrapを利用しているプログラムのみということになります。

共有ライブラリの利用状況を調べるには

つまり、プログラムが共有ライブラリlibwrapを利用しているかどうかが分かれば、hosts.allow, hosts.denyを設定する必要があるかどうかが判断できるわけです。

そのためには、lddコマンドを利用します。 たとえば、代表的なhosts.allow, hosts.denyを利用するプログラムであるsshdについてlddコマンドを利用してみます。

$ ldd /usr/sbin/sshd
 libwrap.so.0 => /lib64/libwrap.so.0 (0x00002ae70961f000)
 libpam.so.0 => /lib64/libpam.so.0 (0x00002ae709828000)
 libdl.so.2 => /lib64/libdl.so.2 (0x00002ae709a33000)
 libselinux.so.1 => /lib64/libselinux.so.1 (0x00002ae709c38000)
 libaudit.so.0 => /lib64/libaudit.so.0 (0x00002ae709e50000)
 libfipscheck.so.1 => /usr/lib64/libfipscheck.so.1 (0x00002ae70a06a000)
 libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002ae70a26d000)
 libutil.so.1 => /lib64/libutil.so.1 (0x00002ae70a5be000)
 libz.so.1 => /usr/lib64/libz.so.1 (0x00002ae70a7c1000)
 libnsl.so.1 => /lib64/libnsl.so.1 (0x00002ae70a9d6000)
 libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002ae70abee000)
 libresolv.so.2 => /lib64/libresolv.so.2 (0x00002ae70ae26000)
 libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002ae70b03c000)
 libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002ae70b26a000)
 libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002ae70b4ff000)
 libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002ae70b725000)
 libnss3.so => /usr/lib64/libnss3.so (0x00002ae70b927000)
 libc.so.6 => /lib64/libc.so.6 (0x00002ae70bc52000)
 /lib64/ld-linux-x86-64.so.2 (0x00002ae709402000)
 libsepol.so.1 => /lib64/libsepol.so.1 (0x00002ae70bfaa000)
 libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002ae70c1f0000)
 libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002ae70c3f9000)
 libnssutil3.so => /usr/lib64/libnssutil3.so (0x00002ae70c5fb000)
 libplc4.so => /usr/lib64/libplc4.so (0x00002ae70c818000)
 libplds4.so => /usr/lib64/libplds4.so (0x00002ae70ca1d000)
 libnspr4.so => /usr/lib64/libnspr4.so (0x00002ae70cc20000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae70ce5a000)
すると、このようにsshdが利用しているライブラリの一覧を取得することができます。そして、この中に確かに「libwrap」があることが確認できます。よって、sshdはhosts.allow, hosts.denyの制御の影響を受けるわけです。

BINDデーモンnamedについて確認する

では、BINDはどうかというと、

$ ldd /usr/sbin/named
 liblwres.so.9 => /usr/lib64/liblwres.so.9 (0x00002b819e041000)
 libdns.so.26 => /usr/lib64/libdns.so.26 (0x00002b819e252000)
 libbind9.so.0 => /usr/lib64/libbind9.so.0 (0x00002b819e573000)
 libisccfg.so.1 => /usr/lib64/libisccfg.so.1 (0x00002b819e77c000)
 libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002b819e996000)
 libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002b819ece7000)
 libisccc.so.0 => /usr/lib64/libisccc.so.0 (0x00002b819ef16000)
 libisc.so.15 => /usr/lib64/libisc.so.15 (0x00002b819f11e000)
 libnsl.so.1 => /lib64/libnsl.so.1 (0x00002b819f360000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b819f579000)
 libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00002b819f794000)
 libc.so.6 => /lib64/libc.so.6 (0x00002b819f9cf000)
 libdl.so.2 => /lib64/libdl.so.2 (0x00002b819fd27000)
 libz.so.1 => /usr/lib64/libz.so.1 (0x00002b819ff2b000)
 libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002b81a013f000)
 libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002b81a03d5000)
 libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002b81a05fa000)
 libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002b81a07fc000)
 libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002b81a0a05000)
 libresolv.so.2 => /lib64/libresolv.so.2 (0x00002b81a0c07000)
 /lib64/ld-linux-x86-64.so.2 (0x00002b819de24000)
 libcap.so.1 => /lib64/libcap.so.1 (0x00002b81a0e1c000)
 libselinux.so.1 => /lib64/libselinux.so.1 (0x00002b81a1021000)
 libsepol.so.1 => /lib64/libsepol.so.1 (0x00002b81a1239000)
を見ての通り、libwrapがありません。つまり、BINDにhosts.allow, hosts.denyの設定は無意味という訳です。

まとめ

今回のまとめはこんな感じ

BIND | コメント:0 | トラックバック:0 | 編集

BIND導入記06 動作確認編 このエントリーを含むはてなブックマーク

前回まででBINDの起動が終了しました。続いて、BIND正しく動作しているかの確認を行います。

動作確認環境

今回は、BINDサーバの動作確認をWindowsから行います。今回利用したのはWindows Vistaですが、ほかでもたいし変わりません。

DNSサーバの指定方法

DNSサーバは、DHCPを利用している環境では、プライベートIPアドレスの割り当てと同時に指定されるので、DNSサーバの指定を変更するためには、DHCPを行っているサーバもしくはブロードバンドルータの設定を変更します。

しかし、ルータの再起動が必要になるなど、動作確認で利用するにはめんどくさい方法です。

そこで今回は、特定のWindows PCのDNSサーバを直接指定することにします。

利用するDNSサーバを直接指定する

まず、コントロールパネルもしくはスタートから、「ネットワーク接続(コントロールパネル>ネットワークとインターネト>ネットワーク接続)」を開きます。そして、利用している回線(普通はローカルエリア接続もしくはワイヤレスネットワーク接続)を右クリックし、「状態」を表示します。状態表示の中の「プロパティ」をクリックし、プロパティを表示します。

続いて、「この接続は次の項目を使用します」の中から、「インターネット プロトコル バージョン4(TCP/IPv4)」を選択した状態で「プロパティ(R)」をクリックします。

「全般>次のDNSサーバーのアドレスを使う(E)」を選択して、「優先DNSサーバ」に、BINDをインストールしたサーバのIPアドレスを指定します。指定したらOKをクリックし、開いていたウィンドウを閉じて設定完了です。

この設定を戻すときは、「DNSサーバのアドレスを自動的に取得する」を選択し直せばOKです。

DNSキャッシュをフラッシュ(消去)する

動作確認をする前に、今までのDNSサーバの履歴があると問題解決に不都合が生じることがあるので、履歴(キャッシュ)を消去します。

コマンドプロンプトを右クリックで「管理者として実行」を選択して起動します。

起動したら、

>ipconfig /flushdns
を実行します。これで
DNS リゾルバ キャッシュは正常にフラッシュされました。
と表示されれば、キャッシュが消去されたことになります。

登録したアドレスが取得できるか確認する

引き続きコマンドプロンプトを利用します。example.netに192.168.1.21というIPアドレスを登録していたとすると、コマンドプロンプトで、

>nslookup example.net
を実行し、
サーバー: example.net
Address: 192.168.1.21

名前: example.net
Address: 192.168.1.21
と表示されればOKです。登録されていたIPアドレスを正しく取得できました。

登録されていないアドレスが取得できるか確認する

登録したアドレスexample.net以外も取得できるはずなので、コマンドプロンプトで

>nslookup yahoo.co.jp
を実行し、ただしくIPアドレスが返ってくることを確認してください。

結果

以上の動作確認が完了すれば、BINDサーバをとりあえず正しく設定できていることになります。

次回

ここまででインストール・設定・起動・動作確認までが終了しましたが、そうそううまくいきません。自分がそうでした。

そこで、BINDをインストールするに当たってつまづいたポイントを以降の記事で紹介しておこうと思います。

BIND9によるDNSサーバ構築
DNS & BINDクックブック―ネームサーバ管理者のためのレシピ集
DNS & BIND 第5版

BIND | コメント:0 | トラックバック:0 | 編集

BIND導入記05 起動編 このエントリーを含むはてなブックマーク

前回までに、BINDの設定ファイルを作成し終えました。あとは起動するだけです。

namedの起動

BINDの実態は、「named」というデーモンです。これを起動するためには、

# /etc/rc.d/init.d/named start
を実行すればOKです。
namedを起動中 [OK]
となれば正常起動です。また、OSの起動時に自動的に実行するためには、
# chkconfig named on
とすればOKです。

次回

次回は、動作確認編です。正しく動作しているかを確認します。

BIND9によるDNSサーバ構築
DNS & BINDクックブック―ネームサーバ管理者のためのレシピ集
DNS & BIND 第5版

BIND | コメント:0 | トラックバック:0 | 編集

BIND導入記04 設定ファイル編 後編 このエントリーを含むはてなブックマーク

前回に引き続き、設定ファイルを作成していきます。

ゾーン定義ファイル作成

まず、

/var/named/chroot/etc/named.example.zone
を作成します。内容は、DDNSで取得したアドレスをexample.netとすると、
zone "example.net" {
        type master;
        file "example.net.db";
        allow-update { none; };
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "1.168.192.in-addr.arpa.db";
        allow-update { none; };
};
となります。 ここでのポイントは、example.netと結びつけたいプライベートアドレスを192.168.1.21としたときに、この設定ファイル中で「file "21.1.168.192.in-addr.arpa"」などにしないことです。21はいりません。

ゾーンデータベース作成

いよいよ、DNSらしく、アドレス変換テーブルを作成します。今回作成するのは、正引き用・逆引き用の2種類です。

正引き用データベース

とりあえず、

/var/named/chroot/var/named/example.net.db
に、以下のような内容でファイルを作成してください。これは、DDNSで取得したexample.netというアドレスを、192.168.1.21というアドレスに結びつける場合です。
$TTL 86400
@       IN      SOA     example.net.    root.example.net. (
                                2009010701
                                28800
                                14400
                                3600000
                                86400 )
        IN      NS      example.net.
@       IN      A       192.168.1.21
ポイントですが、まず$TTLの項目を忘れないこと。また、現在あるSOA,NS,Aはどれも必須です。こう見えて最低限です。確実にすべて入力してください。また、何カ所かよくわからない数字があると思いますが、2009010701が2009年01月07日01番目という意味であることをのぞき、そのままの数値にしてください。また、2009010701という数字は、このファイルの更新のたびに増加するようにしてください。

注意点として、example.net.は、netの後にドットが付いています。その他のアドレスにもドットが付いています。必要だったか忘れましたが、付ける方が正式なので付けておいてください。また、root.example.net.は、何かあったときに通知がいくメールアドレスで、root.example.netは、@をドットに置き換えたメールアドレスとなっています。

逆引き用データベース

正引き用と同じように、

/var/named/chroot/var/named/1.168.192.in-addr.arpa.db
に、以下のような内容で設定ファイルを作成してください。
$TTL    86400
@       IN      SOA     example.net.    root.example.net. (
                                2009010701
                                28800
                                14400
                                3600000
                                86400 )
        IN      NS      example.net.
21      IN      PTR     example.net.
正引き用との違いに注意して作成してください。「21」の部分は、「192.168.1.21」の「21」を示しています。また、正引きの時のAレコードの代わりにPTRレコードとなっています。その他は正引き用と一緒です。

次回

次回は、いよいよBINDの起動・実行についてです。

BIND9によるDNSサーバ構築
DNS & BINDクックブック―ネームサーバ管理者のためのレシピ集
DNS & BIND 第5版

BIND | コメント:0 | トラックバック:0 | 編集
 | HOME |  OLD >>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。