- 1. 前提条件
- 2. 証明書とキーの生成
- 3. 正引きファイル作成
- 4. 逆引きファイル作成
- 5. nsd.conf 設定
- 6. その他のディレクトリ作成
- 7. /etc/rc.conf 設定
1. 前提条件
以下の環境で設定を行うものとします。
項目 | 設定値 | 備考 |
ネットワークアドレス | 192.168.100.0/24 | |
ルータアドレス | 192.168.100.1 |
サーバアドレス | 192.168.100.150 |
その他ホストアドレス | 192.168.100.2~6 |
ブロードキャストアドレス | 192.168.100.255 |
ドメイン名 | vm.sing.ne.jp | |
サーバ名 | ns.vm.sing.ne.jp | |
プロバイダネームサーバ名 | ns.sing.ne.jp | |
プロバイダネームサーバアドレス | 122.215.121.34 | |
ご存知の方は、いらっしゃるかと思いますが、「192.168...」は、もちろんローカルエリアネットワークですので、実際にこのようなアドレッシングを行うことはありませんので、悪しからず。
以下、すべて、「root」ユーザ権限で。
2. 証明書とキーの生成
「nsd-control」のために証明書とキーを生成します。
nsd-control-setup
前回、それまでと違うメッセージが出力されて、ドキドキしたのですが、今回、またメッセージが変わりました。
removing artifacts
Setup success. Certificates created. Enable in nsd.conf file to use
メッセージが違うので、どきどきしましたが、ファイルは作成されておりました。
以下のファイルが生成されます。
/usr/local/etc/nsd/nsd_control.key クライアントキー
/usr/local/etc/nsd/nsd_control.pem クライアント証明書
/usr/local/etc/nsd/nsd_server.key クライアント証明書
/usr/local/etc/nsd/nsd_server.pem サーバ証明書
/usr/local/etc/nsd/nsd.conf コンフィグレーションファイル
/usr/local/etc/nsd/nsd.conf.sample コンフィグレーションファイル サンプル
下の2行分は、セットアップ時でなく、インストール時に生成されています。
3. 正引きファイル作成
正引き・逆引きのゾーンファイルを作成します。
ゾーンファイル用のディレクトリを生成して (ここでは「/var/nsd」に「chroot」する設定で記述しています)
mkdir -pv /var/nsd/zone
正引きファイルと逆引きファイルを作成します。
まずは、正引きファイルから。
vi /var/nsd/zone/vmsingnet.zone
;
$TTL 3600
@ IN SOA ns.vm.sing.ne.jp. root.vm.sing.ne.jp. (
2023052601 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS ns.vm.sing.ne.jp.
IN NS ns.sing.ne.jp.
IN MX 10 ns.vm.sing.ne.jp.
ns IN A 192.168.100.150
www IN CNAME ns
rt IN A 192.168.100.1
pc02 IN A 192.168.100.2
pc03 IN A 192.168.100.3
pc04 IN A 192.168.100.4
pc05 IN A 192.168.100.5
pc06 IN A 192.168.100.6
解説
;
;(セミコロン)以降はコメントになります。
$TTL 3600
キャッシュの有効期限を秒単位で指定します。
@ IN SOA ns.vm.sing.ne.jp. root.vm.sing.ne.jp. (
2023052601 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
「@ IN SOA」でドメイン情報を記載するという意味です。
続いて、コンテンツサーバ名、管理者のメールアドレスになります。
「Serial」シリアル番号、なんでもいいのですが、伝統的に年月日サフィックスという番号をいれます。
記述を更新した場合、この値を更新しておけばリロードした際にゾーンの書き換えを行います。
「Refresh」 ゾーン転送間隔を秒で指定。
「Retry」 転送の再試行時間を秒で指定。
「Expire」 ゾーン情報を最新と確認できない場合の有効時間を秒で指定する。
「Minimum」 キャッシュの有効期限を秒単位で指定します。最初のものとは違うらしい。
IN NS ns.vm.sing.ne.jp.
IN NS ns.sing.ne.jp.
「IN NS」で自分のネームサーバ名とプロバイダが提供するネームサーバ名を記述します。
名称の後ろに .(ドット)がつくものは、絶対名称を示します。
以降の行で、「ns」のみ書いてある名称は、. がついていません。
これは相対名称で、その絶対名称は、後ろにそのゾーン名がつくことになります。
もともと、このファイルは、「vm.sing.ne.jp」を定義してあるものですから「ns」は、「ns.vm.sing.ne.jp」という絶対名称を持つということになります。
IN MX 10 ns.vm.sing.ne.jp.
「IN MX」(MX は mail server exchanger)と書いてある行は、メールサーバとして、「ns.vm.sing.ne.jp」を使用することを定義しています。
「10」と記述してあるのは、メールサーバの優先順位であり、複数のメールサーバを使用する場合は、「10」とか「20」とか複数行書いてその優先順位を分けます。
この例では、メールサーバは1台しか使用しません。その場合は、「10」を入れます。
ns IN A 192.168.100.150
「IN A」の行は、「ns」の アドレスが「192.168.100.150」であると定義しています。
前に述べているように、「ns」の後ろが略されていて、実際には「ns.vm.sing.ne.jp」のことを定義しているということになります。
www IN CNAME ns
「IN CNAME」(CNAME は canonical name)で「www.vn.sing.ne.jp」は、「ns.vm.sing.ne.jp」の別名ですよという定義を行っています。
別名を定義した場合、「CNAME」の他の行に別名を出現させてはいけません。
現在は、別名を使うことは極力避けるようになっています。
rt IN A 192.168.100.1
pc02 IN A 192.168.100.2
pc03 IN A 192.168.100.3
pc04 IN A 192.168.100.4
pc05 IN A 192.168.100.5
pc06 IN A 192.168.100.6
その他のアドレスの定義です。
プロバイダから与えられたアドレスを全部定義しておきましょう。
例では、割愛していますが、与えられたアドレスの空間は全部定義する義務があります。
4. 逆引きファイル作成
次に、逆引きファイルを作成します。
vi /var/nsd/zone/vmsingnet.rev
;
$TTL 3600
@ IN SOA ns.vm.sing.ne.jp. root.vm.sing.ne.jp. (
2021041901 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS ns.vm.sing.ne.jp.
IN NS ns.sing.ne.jp.
137 IN PTR ns.vm.sing.ne.jp.
1 IN PTR rt.vm.sing.ne.jp.
2 IN PTR pc02.vm.sing.ne.jp.
3 IN PTR pc03.vm.sing.ne.jp.
4 IN PTR pc04.vm.sing.ne.jp.
5 IN PTR pc05.vm.sing.ne.jp.
6 IN PTR pc06.vm.sing.ne.jp.
「IN PTR(pointer)」は、アドレスを名称に変換するための記述です。
アドレスが省略形(相対アドレス)で記述されています。
「1、2、3 ・・・」というのは、行番号ではありません。正引きファイルのときがそうであったように、このファイルは、「192.168.100.0/24」を定義するものですから、「2」のアドレスは、「192.168.100.2」を意味し、「ns.vm.sing.ne.jp」であることを定義しています。
ゾーンファイルのチェックを行うコマンドとして「nsd-checkzone」というコマンドが用意されていますが、今のところ、文法的な間違いがあってもエラーが出力されないので、コマンドの機能に不備があるのか、使い方が悪いのか、現在調査中です。
すべて編集し終わったら、権限を設定します。
chown -R nsd:nsd /var/nsd/zone
chmod 600 /var/nsd/zone/*
5. nsd.conf 設定
コンフィグレーションファイルを編集します。
vi /usr/local/etc/nsd/nsd.conf
主なところのみ抜き書きしていますので、検索してください。
server:
ip-address: 192.168.100.150
verbosity: 2
chroot: "/var/nsd/"
zonesdir: "/var/nsd/zone"
zonelistfile: "/var/nsd/var/db/nsd/zone.list"
database: "/var/nsd/var/db/nsd/nsd.db"
logfile: "/var/log/nsd/nsd.log"
pidfile: "/var/nsd/var/run/nsd/nsd.pid"
xfrdfile: "/var/nsd/var/db/nsd/xfrd.state"
xfrdir: "/var/nsd/tmp"
「server:」の設定は、下記を意味します。
項目 | 意味 | 備考 |
ip-address | ポートを待ち受ける IP アドレスを記述しています。 | IP アドレスが1つで、「unbound」と共存しないのであれば不要 |
verbosity | ログの出力をいささか冗長にしています | 不要であればコメントアウトします |
chroot | /var/nsd に chroot します | |
zonesdir | ゾーンファイルを配置するディレクトリ名 | |
zonelistfile | ゾーンリストファイル名 | |
database | データベースファイル名 | |
logfile | ログファイルの出力先 | |
pidfile | pid ファイル名 | |
xfrdfile | これとひとつ下は、よくわかりません | |
xfrdir | | |
remote-control:
control-enable: yes
server-key-file: "/usr/local/etc/nsd/nsd_server.key"
server-cert-file: "/usr/local/etc/nsd/nsd_server.pem"
control-key-file: "/usr/local/etc/nsd/nsd_control.key"
control-cert-file: "/usr/local/etc/nsd/nsd_control.pem"
「remote-control:」の個所は、リモートコントロールを行うことと、本ページ2番目の項目で作成した、キーや証明書の定義です。
zone:
name: "vm.sing.ne.jp"
zonefile: "vm.sing.zone"
notify: 122.215.121.34 NOKEY
notify-retry: 5
provide-xfr: 122.215.121.34 NOKEY
outgoing-interface: 192.168.100.150
zone:
name: "32/0.100.168.192.in-addr.arpa"
zonefile: "vm.sing.rev"
notify: 122.215.121.34 NOKEY
notify-retry: 5
provide-xfr: 122.215.121.34 NOKEY
outgoing-interface: 192.168.100.150
「zone:」の設定は、下記を意味します。
項目 | 意味 | 備考 |
name | 定義しているゾーン名 | |
zonefile | ゾーンの定義ファイル | |
notify | 更新が発生した場合、このアドレスに通知する | |
notify-retry | 通知送信時のリトライ回数 | |
provide-xfr | ゾーンデータをこのアドレスに提供する | |
outgoing-interface | 通知の送信にこのアドレスを使用する | |
「122.215.121.34」の個所は、本来、実際転送を許可する「IP」アドレスを入力しますので、ご注意ください。
「nsd」の設定紹介サイトではゾーン名やゾーンファイル名をダブルコーテーションで囲んでいない例が多々ありますが。
「sample」ではダブルコーテーションで囲んでいるので、それを使用しています。
なお、ここでは使用していませんが、自分に対してゾーン転送を行うコンテンツサーバが存在して、そのサーバからのゾーン転送を許可するには、以下のような記述が必要になります。
zone:
name: "ゾーン名"
zonefile: "ゾーンの定義ファイル(なくていいような気がする)"
allow-notify: IPアドレス NOKEY ← 自分に対して転送するサーバのアドレスです。
request-xfr: IPアドレス NOKEY
allow-axfr-fallback: yes
outgoing-interface:待ち受けするIPアドレス
6. その他のディレクトリ作成
その他のディレクトリを作成します。
mkdir -pv /var/nsd/tmp
mkdir -pv /var/nsd/var/db/nsd
mkdir -pv /var/nsd/var/run/nsd
chown -R nsd:nsd /var/nsd
mkdir -pv /var/log/nsd
chown -R nsd:nsd /var/log/nsd
「/var/nsd/var/db」は、データベース用ディレクトリです。
「/var/nsd/var/run/nsd」は、「pid」ファイル用ディレクトリです。
ここまで終わったら
nsd-checkconf /usr/local/etc/nsd/nsd.conf
でエラーが出力されないことを確認します。
7. /etc/rc.conf 設定
「nsd」の軌道を有効にします。
service nsd enable
起動します。
service nsd start
|