| Works
BINDのゾーン情報をPowerDNSへインポート
PowerDNS関連の一連のインストールが完了したので、ゾーンを作成していきます。
今回は既存のDNSサーバ(BIND 9)をリプレースするので、まずはBINDのゾーンファイルの内容を移行することにします。
環境の前提はCentOS 7へPowerDNSとPowerDNS-Adminのインストールが完了していること。
既存のDNSサーバから"named.conf"を含む設定ファイル一式をコピーしてきます。CentOSでchrootを使っている環境であれば、標準構成では"/var/named/chroot"配下が該当すると思います。
今回は、この設定ファイル一式をPowerDNSサーバの"/tmp/bind"へ配置しました。
# ls
dev etc run usr var
# ls ./etc
localtime named named.conf named.iscdlv.key named.rfc1912.zones named.root.key
pki protocols rndc.key services
# ls ./var/named/
chroot data dynamic example.local.zone named.ca named.empty named.localhost
named.loopback slaves
この設定ファイル一式はCentOS標準のBINDを使っているDNSサーバの"/var/named/chroot"配下を全てコピーしてきたものです。そのため、"dev"等の移行に関係ないファイル/ディレクトリも含まれています。
また、"example.local.zone"というファイルが独自のゾーンファイルで、以下のような内容になっています。
$TTL 3600
@ IN SOA ns.example.local. root.example.local. (
2019010801 ; serial
3600 ; refresh 1hr
900 ; retry 15min
604800 ; expire 1w
86400 ; min 24hr
)
IN NS ns.example.local.
ns IN A 172.16.11.250
gw01 IN A 172.16.11.1
www1 IN A 172.16.11.2
www2 IN A 172.16.11.3
db01 IN A 172.16.11.4
これらのゾーンファイルをPowerDNSのデータベースへインポートするには、PowerDNSのパッケージに含まれている"zone2sql"コマンドを使います。このコマンドは、ゾーンファイルの内容をPowerDNSデータベースへインポートするためのSQL文へ変換します。
ただし、今回の環境では単純に実行するとエラーになります。
読み込む"named.conf"に記載されている関連ファイルのパスが、現在の配置場所"/tmp/bind"に合うように修正して再実行します。
(下記の例では機械的に置き換えていますが、修正が必要な部分は"named.conf"の内容によって異なります。)
# sed -i "s/\/var/\/tmp\/bind\/var/g" ./etc/named.conf
# sed -i "s/\/run/\/tmp\/bind\/run/g" ./etc/named.conf
"zone2sql"を実行する際には、元となる"named.conf"の場所やデータベースの種類(今回はMySQL互換のため"--gmysql"を指定)を指定します。
正常に完了すれば対象となったドメインやレコードの数が表示され、リダイレクト先のファイル(ここでは"zone.sql")へSQL文が出力されます。
また、"named.conf"でタイプがMASTERゾーンであっても変換した後はNATIVEゾーンになってしまうため、必要に応じて修正します(SLAVEゾーンについては変換時に"--slave"オプションを付与すると"SLAVE"のまま維持される)。
作成したSQLをPowerDNS用データベースへ実行します。
PowerDNS-Adminへログインすると、インポートしたゾーン情報を確認することができるはずです。
これで、今後はPowerDNS-Adminを使ってゾーン情報を管理できそうですね。
ここでは省略しますが、念のため別のPC等からインポートしたゾーンの名前解決ができることも確認しておけばOKでしょう。