web-dev-qa-db-ja.com

DNS(NSD)ゾーン転送が機能しない

NSDを使用してマスター/スレーブセットアップを作成しようとしています。 NSDを2台のサーバーにインストールしています。サーバーは正常に動作しています。通常のDNSクエリを実行すると、ゾーンファイルから情報が返されます。ただし、マスターでnsdc notifyしようとすると、スレーブが新しい​​ゾーン構成を取得していないようです。

マスターのnsd.confファイルは次のようになります。

## NSD authoritative only DNS
#

server:
    logfile: "/var/log/nsd.log"
    port: 53
    server-count: 1
    ip4-only: yes
    hide-version: yes
    identity: ""
    zonesdir: "/etc/nsd3"
    verbosity: 3

zone:
    name: domain.com
    zonefile: www.domain.com.forward
    notify: <ip slave> NOKEY
    provide-xfr: <ip slave> NOKEY

スレーブサーバー上のnsd.confは次のようになります。

## NSD authoritative only DNS
#

server:
    logfile: "/var/log/nsd.log"
    port: 53
    server-count: 1
    ip4-only: yes
    hide-version: yes
    identity: ""
    zonesdir: "/etc/nsd3"
    verbosity: 3

zone:
    name: domain.com
    zonefile: www.domain.com.forward
    allow-notify: <ip master> NOKEY
    request-xfr: AXFR <ip master> NOKEY

マスターサーバー上のゾーンファイルファイルは次のようになります。

$Origin domain.com.
$TTL 86400           ; default time to live

@ IN SOA ns1.domain.com. admin.domain.com. (
    2011010203  ; serial number
    28800       ; Refresh
    7200        ; Retry
    864000      ; Expire
    86400       ; Min TTL
    )

NS  ns1.domain.com.
MX  10  mailfilter.hostingprovider.com.

mail    IN  A   <ip mailserver hostingprovider>
www IN  A   <ip master>

ns1     IN      A       <ip master>
ns2     IN      A       <ip slave>


newvalue    IN  A   8.8.8.8

*   IN  A   <ip master>

転送ファイルは、「newvalue」(転送する値)の行を除いて、スレーブサーバーでも同じです。

マスターサーバーでnsdc notifyを実行すると、スレーブのログに次のようになります。

[1487507948] nsd[26038]: info: Notify received and accepted, forward to xfrd
[1487507948] nsd[26037]: info: Handle incoming notify for zone domain.com

ただし、ゾーンファイルは更新されていないようです。通知後、念のため、スレーブサーバーでnsdc patch; nsdc rebuild; nsdc reload; service nsd3 restartを実行します。ただし、これによってゾーンファイルが変更されることもありません。

また、スレーブサーバーでDig axfr @<master ip> domain.comを実行すると、ニースゾーン転送が行われます。

スレーブサーバーがゾーンファイルを更新しないのはなぜですか?

1
Graa

ゾーンのシリアル番号は変更後にインクリメントする必要があります

スレーブは、転送を試みる前に、最初に最新のゾーンがあるかどうかを確認します。そうでない場合、通知は無視されます。一般的な方法は、YYYYMMDDxxの形式を使用することです。xxはマイナーリビジョン番号(誤って大きく設定しすぎた場合は、番号を再度下げるために実行する必要のあるプロセスがあります)

Nsdのそれ以降のバージョンでは、nsd-control nsdcを置き換え、コマンドtransferを使用して試行するか、force_transferシリアルの変更に関係なく更新します。

1
pete