PowerDNSとISC-KEAでDDNSを実装する。
PowerDNSとISC-KEAは既にセットアップ済とする。
ダイナミックDNSでDNS情報を動的に変更する際、DNSサーバー同士を認証するために使われる通信プロトコルであるTSIGを利用する。
TSIG nykel の助けを借りてゾーン転送を保護する。
マスタ サーバーで TSIG キーを生成
pdnsutil generate-tsig-key tsig-transfer hmac-sha512
次に、セキュリティを確保するゾーンで nykel を有効にする。
pdnsutil activate-tsig-key example.com tsig-transfer master
スレーブにコピーできるように TSIG nykeln をリストする。
pdnsutil list-tsig-keys
スレーブにキーをインポートします。
pdnsutil import-tsig-key tsig-transfer hmac-sha512 'キーの値'
次に、マスターと同じゾーンでTSIG nykel ninをアクティブにする。
pdnsutil activate-tsig-key example.com tsig-transfer slave
※キーがマスターとスレーブの両方に同じ名前が必須
Dnssec
DNSSEC は、受信した応答が正しいソースから来て、途中で改ざんされていないことを確認できるように、暗号キーを使用して DNS ルックアップに署名する機能
DNSSEC を有効
pdnsutil secure-zone ZONE
DNSSEC を無効
pdnsutil disable-dnssec ZONE
次のコマンドを実行して DS レコードを表示する。
pdnsutil show-zone ZONE
ZONEはゾーン名(例:example.com)
ダイナミック DNS
更新をより安全にするために使用される TSIG nykel を生成する。
pdnsutil generate-tsig-key ddns_update hmac-md5
更新するドメインで、nykelを有効にする。
pdnsutil set-meta example.com TSIG-ALLOW-DNSUPDATE ddns_update
特定のネットワークのみがゾーンの更新を許可する。
pdnsutil set-meta example.com ALLOW-DNSUPDATE-FROM 192.168.1.0/24 pdnsutil set-meta example.com ALLOW-DNSUPDATE-FROM 10.100.0.0/24
本来、これで設定できるはずだが、ALLOW-DNSUPDATE-FROMのレコードは1つしか持てない。ドキュメントだと複数持てるはずなのでが・・・・。で、2レコード以降は、SQLでインサートする。
insert into domainmetadata (domain_id, kind, content) values (ドメインのID,'ALLOW-DNSUPDATE-FROM','2001:db8:53::1');
マスターが各更新時にスレーブに通知を送信することを確認します。それ以外の場合は、スレーブ自身がマスターに尋ねるまで待つ必要がある。
pdnsutil set-meta example.com NOTIFY-DNSUPDATE 1
PowerDNSコンフィグファイルに追記する。
vi /etc/powerdns/pdns.conf
dnsupdate=yes
PowerDNS を再起動して、動作を確認
nsupdate <<! server <ip> <port> zone example.com update add ddnstest.example.com 3600 A 10.13.37.1 key ddns_update キー send !
ISC-KEAの設定
kea-dhcp4、kea-dhcp6、kea-ctrl-agentの設定は終了しているとする。kea-dhcp-ddnsの設定のみを記載する。
コメント