第3章 Bind9 のインストールおよび設定
以下のステップでは、Bind9 をインストールして DNSaaS と統合するように設定します。
3.1. BIND の基本インストール リンクのコピーリンクがクリップボードにコピーされました!
1. BIND パッケージをインストールします。
# yum install bind bind-utils
2. named が受信接続をリッスンするように設定します。
# cp /etc/named.conf /etc/named.conf.orig
# sed -i -e "s/listen-on port.*/listen-on port 53 { 127.0.0.1; 192.168.100.20; };/" /etc/named.conf
3.2. BIND の設定 リンクのコピーリンクがクリップボードにコピーされました!
1. /etc/rndc.key に以下を書き込みます。
# rndc-confgen -a
2. options の前に以下を追加します。
# sed -i '/^options.*/i \
include "/etc/rndc.key"; \
controls { \
inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; }; \
};' /etc/named.conf
3. 既存のオプションをいくつか削除します (これらは後ほど再度記述します)。
# sed -i '/allow-query.*/d' /etc/named.conf
# sed -i '/recursion.*/d' /etc/named.conf
4. options の後に以下を追加します。
# sed -i '/^options.*/a \
allow-new-zones yes; \
allow-query { any; }; \
recursion no;' /etc/named.conf
5. rndc 設定を作成します。コンピュートノードでは、rndc の設定が DNS サーバーをポイントする必要があります。以下に例を示します。
# cat << EOF > /etc/rndc.conf
include "/etc/rndc.key";
options {
default-key "rndc-key";
default-server 192.168.100.20;
default-port 953;
};
EOF
6. named 設定をレビューします。
# named-checkconf /etc/named.conf
7. ファイルのパーミッションを修正します。
# setsebool -P named_write_master_zones on
# chmod g+w /var/named
# chown named:named /etc/rndc.conf
# chown named:named /etc/rndc.key
# chmod 600 /etc/rndc.key
8. named サービスを有効化して、起動します。
# systemctl enable named
# systemctl start named
9. named および rndc を検証します。
# dig @localhost localhost
# rndc status
3.3. BIND の DNSaaS プールターゲットの設定 リンクのコピーリンクがクリップボードにコピーされました!
1.プールターゲット設定を指定します。
# openstack-config --set /etc/designate/designate.conf pool_target:$target_id type bind9
# openstack-config --set /etc/designate/designate.conf pool_target:$target_id options "rndc_host: 192.168.100.20, rndc_port: 953, rndc_config_file: /etc/rndc.conf, rndc_key_file: /etc/rndc.key"
# openstack-config --set /etc/designate/designate.conf pool_target:$target_id masters 192.168.100.20:5354
2. DNSaaS を再起動して、プールの変更を適用します。
# systemctl restart designate-api
# systemctl restart designate-central
# systemctl restart designate-mdns
# systemctl restart designate-pool-manager
# systemctl restart designate-sink
3.4. BIND のテスト リンクのコピーリンクがクリップボードにコピーされました!
1. 以下の診断コマンドを実行します。
# netstat -tap | grep named
# netstat -tulpn | grep 53
# dig @192.168.100.20
2. DNSaaS ログのエラーをチェックします。Sink を設定していないため、今のところ Sink のエラーは無視します。
# cd /var/log/designate
# tail api.log
# tail central.log
# tail mdns.log
# tail pool-manager.log
# tail sink.log
3.5. DNSaaS と BIND9 の統合のテスト リンクのコピーリンクがクリップボードにコピーされました!
1. サーバー用のエントリーを作成します。
# designate server-create --name $(hostname).
2. 前のステップで作成した DNS サーバーレコードを検証します。
# designate server-list
3. ドメインを作成します (--name オプションの最後の . を忘れないようにしてください)。
# designate domain-list
# designate domain-create --name example.com. --email root@example.com
# DOMAINID=$(designate domain-list | grep example.com | awk '{print $2}')
BIND に対して designate からドメインを作成する場合は、基本的に以下のようなコマンドを実行します。
# rndc -s 192.168.122.41 -p 953 -c /etc/rndc.conf -k /etc/rndc.key addzone example.com '{ type slave; masters { 192.168.122.41 port 5354; }; file "slave.example.com.ff532e15-55a9-4966-8f1e-b3eddb2891ba"; };'
4. レコードを作成してルックアップのテストを行います (--name オプションの最後の . を忘れないようにしてください)。
# designate record-create --name server1.example.com. --type A --data 1.2.3.4 $DOMAINID
# dig +short -p 53 @192.168.100.20 server1.example.com A
3.6. DNS レコードの自動生成の設定 (nova fixed および neutron floating) リンクのコピーリンクがクリップボードにコピーされました!
1. サンプルドメインの DNSaaS 設定を変更します。
# openstack-config --set /etc/designate/designate.conf handler:nova_fixed domain_id $DOMAINID
# openstack-config --set /etc/designate/designate.conf handler:neutron_floatingip domain_id $DOMAINID
# systemctl restart designate-api
# systemctl restart designate-central
# systemctl restart designate-mdns
# systemctl restart designate-pool-manager
# systemctl restart designate-sink
2. OpenStack Compute (nova) のレコード作成をテストします。
# glance image-list
# neutron net-list
# nova boot testserver --flavor m1.tiny --image cirros-0.3.4-x86_64 --key-name yourkey --security-groups default --nic net-id=<Private Net ID>
3. Sink ログをチェックします。
通知が正しく取得されている場合には、インスタンスが起動すると、create_record エントリーが表示されるはずです。
# tail /var/log/designate/sink.log
BIND で確認します。
# dig +short @192.168.100.20 testserver.example.com
これが機能しない場合には /var/named のファイルを確認することもできます。
3.7. OpenStack Networking の Floating IP レコード作成のテスト リンクのコピーリンクがクリップボードにコピーされました!
1. 以下の診断コマンドを実行します (pubnet1 は環境に適した名前に置き換えます)。
# FLOATINGIP=$(neutron floatingip-create pubnet1 | grep floating_ip_address | awk '{print $4}')
# nova add-floating-ip testserver $FLOATINGIP
# DNSRESULT=$(echo $FLOATINGIP |sed 's/\./-/g').example.com
# dig +short @192.168.100.20 $DNSRESULT
2. ログファイルで create_record のイベントが確認できるはずです。
# tail /var/log/designate/sink.log
3.8. OpenStack Networking および Compute DNS エントリーのクリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
1. 前のステップで作成したテスト用の Floating IP を削除します。
# nova remove-floating-ip testserver $FLOATINGIP
2. ログファイルで delete_record のイベントが確認できるはずです。
# tail /var/log/designate/sink.log
これで、レコードが削除されたはずです。
3. 前のステップで作成した testserver を削除します。
# designate record-list $DOMAINID
# nova delete testserver
ログファイルで別の delete_record エントリーが確認できるはずです。
# tail /var/log/designate/sink.log