URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

BINDのゾーン情報をPowerDNSへインポート

 PowerDNS関連の一連のインストールが完了したので、ゾーンを作成していきます。
 今回は既存のDNSサーバ(BIND 9)をリプレースするので、まずはBINDのゾーンファイルの内容を移行することにします。

 環境の前提はCentOS 7へPowerDNSとPowerDNS-Adminのインストールが完了していること。

 既存のDNSサーバから"named.conf"を含む設定ファイル一式をコピーしてきます。CentOSでchrootを使っている環境であれば、標準構成では"/var/named/chroot"配下が該当すると思います。
 今回は、この設定ファイル一式をPowerDNSサーバの"/tmp/bind"へ配置しました。

# cd /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/\/etc/\/tmp\/bind\/etc/g" ./etc/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"を指定)を指定します。

# zone2sql --named-conf=./etc/named.conf --gmysql > zone.sql

 正常に完了すれば対象となったドメインやレコードの数が表示され、リダイレクト先のファイル(ここでは"zone.sql")へSQL文が出力されます。
 また、"named.conf"でタイプがMASTERゾーンであっても変換した後はNATIVEゾーンになってしまうため、必要に応じて修正します(SLAVEゾーンについては変換時に"--slave"オプションを付与すると"SLAVE"のまま維持される)。

# sed -i "s/NATIVE/MASTER/g" ./zone.sql

 作成したSQLをPowerDNS用データベースへ実行します。

# mysql -h 127.0.0.1 -u pdns -p powerdns < zone.sql

 PowerDNS-Adminへログインすると、インポートしたゾーン情報を確認することができるはずです。



 これで、今後はPowerDNS-Adminを使ってゾーン情報を管理できそうですね。
 ここでは省略しますが、念のため別のPC等からインポートしたゾーンの名前解決ができることも確認しておけばOKでしょう。


        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

プロフィール

1020@管理人

都内を彷徨っているインフラエンジニアとかいう雑用係。いつだって眠い…。

最近のつぶやき

@umkn1020 (10/19-12:50)
ちょっとタイトルの付け方がどうかとは思う。 : Apple、布を発売 1枚1980円 - ITmedia NEWS https://t.co/YYAMcTDSke
@umkn1020 (10/19-10:26)
寒い…
@umkn1020 (10/18-19:45)
RT @yuroyoro: 障害の原因: ヒューマンエラー 再発防止策: ヒューマンを絶滅
@umkn1020 (10/16-12:24)
現在地は"Saitama Pref." ( https://t.co/45TObVydMm )
@umkn1020 (10/15-18:04)
移動に疲れた…

エントリーリスト

カテゴリーリスト

タグ