dポイントプレゼントキャンペーン実施中!

質問させて頂きます。

会社のDNSサーバ(OSはSolaris2.6)で、/var/named.confを設定していたところ、誤ってSOAレコードのserial値を現在の設定値よりも高い数値にしてしまい、数値を元に戻し再起動をしましたが上位DNSサーバへスレーブが反映出来ないとの通知を受けてしまいました。

私自身はUnix初心者ですが何とか解決したいと思い、HPや参考書を見てみたのですが、解決方法が記載されていませんでした。

serial値の減少方法を、具体的にご教授願えませんでしょうか?
宜しく御願い致します。

A 回答 (7件)

昔同様のことに出会ったことがあります。

その場合の対応をお知らせしておきます。

シリアル番号をいったん"0"(ゼロ)にしてください。
シリアル番号が0になると、refreshタイムを超過した場合、必ず取り直しが発生するようです。

手順としては、以下のようになります。
1. 該当のDNSサーバでシリアル番号を0にする
2. refreshタイムを待って、上位DNSサーバの該当ゾーンのシリアルが0になるのを待つ
3. 該当のDNSサーバでシリアル番号を希望の番号にする
4. refreshタイムを待って、上位DNSサーバの該当ゾーンのシリアルが希望の番号になるのを待つ

2.4.のコマンドは、
> nslookup -type=soa (検索ゾーン名) (上位DNSサーバのIPアドレス)
で検索できます。

検索ゾーン名は、SOAレコードの最初にあるに名前(INの左)です。サーバ名とは違うので、気をつけてください。

SOAレコードのシリアル番号リセットの方法はいろいろありますが、この方法が一番簡単だと思います。
    • good
    • 0
この回答へのお礼

ご回答有難う御座います。

nslookupまでの文章を理解する事が出来ました。
ですが、一点だけ質問が御座います。

>検索ゾーン名は、SOAレコードの最初にあるに名前(INの左)です。サーバ名とは違うので、気をつけてください。

SOAレコードの一覧が、
@   IN     SOA   localhost root.localhost
となっているのですが、INの左側は@でした。この事でしょうか?この@について調べていたのですが、何を意味しているかでつまづきました。
#サーバ名は、localhostだと思うのですが・・・うーん。

もしかすると、この@は単純にゾーンファイルのファイル名で、
>nslookup -type=soa (検索ゾーン名) (上位DNSサーバのIPアドレス)
上記の検索ゾーン名に、ゾーンファイルのファイル名を記載するということなのでしょうか?

お礼日時:2007/03/14 14:14

今更ですけど ndc で思い出しました.


ndc が使えるなら,ポチポチ(ナゼ2回かは2ヶ所のサーバの意味)って当該zoneのキャッシュだけ
削除できるじゃないですか.そういえば.

この回答への補足

出張から帰社後、皆様の方法を全て参考にしてserial値を元に戻す事が出来ました。有難う御座いました。
今回はとっても勉強させて頂きました。今後も日々精進していきたいと思います。

#皆さんに20ptあげたいのですが、そうもいかないので私が参考になった方に差し上げたいと思います。ご了承下さい。

補足日時:2007/03/20 13:59
    • good
    • 0
この回答へのお礼

こんにちは。

下記について、質問が御座います。
>ndc が使えるなら,ポチポチ(ナゼ2回かは2ヶ所のサーバの意味)って当該zoneのキャッシュだけ
削除できるじゃないですか.そういえば.

まず、ポチポチという部分がよく解りませんでした。
・2箇所のサーバの意味=現在設定している内部DNSサーバと、上位DNSサーバ側の外部DNSサーバの2箇所という事ですか?
・当該zoneのキャッシュだけ削除=No.4に書かれていた時の削除方法と違うキャッシュファイルを削除するという事でしょうか?

宜しく御願い致します。

#リスタートと-HUPの違いがわかりました。同じ事でした。
#namedを停止させたつもりで、nslookupしたところ動作しているような感じではなかったので、停止しているものと判断しました。

お礼日時:2007/03/15 12:05

#5です。


---
@   IN     SOA   localhost root.localhost
---
となっている場合、@は/etc/named.confで定義されているゾーン名をさします。

ですから、該当のゾーンファイル名が、example.zoneだとして、/etc/named.conf上に以下のエントリがあった場合、
---
zone "example.jp" {
type master;
file "example.zone";
};
---
ゾーン名は "example.jp" になります。つまり、
---
example.jp. IN SOA localhost.example.jp. root.localhost.example.jp.
---
と書いてあることと同じになります。

# そういえばホスト名はlocalhost(末尾ドットなし)に設定してありますが、これは問題ないんでしょうか....
    • good
    • 0
この回答へのお礼

こんばんは。

具体的に書かれて、初心者の私でもすごく理解出来ました。
とっても感謝しています。
私が何を勘違いしているか、それも同時に解けました。

>---
zone "example.jp" {
type master;
file "example.zone";
};
---

zoneはゾーン情報で動作をさせる為の内容が記載されていて、"example.jp"がゾーン名。
type masterはマスターサーバを指定する。
fileはゾーンファイルの事で、"example.zone"がゾーンファイルのファイル名。という事なんですね。
example.jpに書かれている情報が、example.zoneっていうファイルに載っているから、それを見にいく感じなのかな・・・?

今まで何も気にせずに見ていた情報が、一つ一つに意味があるという事に驚かされています。

#すいません・・・/var/named/local_zoneからの情報を参考に例を書かせて頂きました。紛らわしくてごめんなさい(>_<)

お礼日時:2007/03/14 18:12

こんにちは.



#1なのです.

> namedをstopさせるには、/usr/local/sbin named stop と打ち込んだところ、
>can't open 'stop'と表示されたのですが、これで停止したということなのでしょうか?
多分,それは止まってないです.
これは適宜お使いのOSの作法に習って下さい.
(商用OSであれば最悪マニュアルには記載しているハズです)
# もしLinuxであれば,/etc/init.d/named stopで停止します.

> file "named.cache"; ←この部分がキャッシュファイルだと思っていますが、間違いでしょうか?
残念ながら今回はハズレです.
セカンダリ(=スレーブサーバ)のnamed.confの中から間違ったserial値のzoneを参照すると,
----------------------------------------------------
zone "example.co.jp" {
 type slave;
 file "example.co.jp.zone";  ← このファイル
 masters {192.168.0.1; };
----------------------------------------------------
のような記述があると思います.
で,「このファイル」を削除すれば良いハズです.
# rm example.co.jp.zone とか.

(NOTIFYとか設定不明なので念のため)プライマリ,セカンダリのnamedのリスタートを忘れずに.
# イヤ,-HUPで良いんですけどね,

この回答への補足

追記です。

ndcというサービス?にstopと打ち込んだところ、何も変化が無かった為、psコマンドでnamedが動作しているか確認しました。表示が何も出てこなかったので、停止しているように見えたのですが不明です。
#Linuxのように開始とか停止とか出ればわかるのですが、Solarisは表示されないのでわかりにくいです・・・(;;

また、namedが停止されていれば名前解決も出来ない為、nslookupで名前がひけなければ動作していないという事で間違いないでしょうか?

聞いてばっかりで本当にごめんなさい・・・

補足日時:2007/03/14 13:41
    • good
    • 0
この回答へのお礼

こんにちは。

調べた結果、namedを停止させるには/usr/local/sbin namedでなく、ndcというサービス?にstopと打ち込んだところ、停止しているように見えました。

>残念ながら今回はハズレです.

この意味がわからなかったので調べてみたところ、下記はルートサーバのキャッシュファイルという事に気がつきました。
----------------------------------------------------------------
zone "." {
type hint;
file "named.ca"; ←named.casheではなくnamed.caでした・・・
}
----------------------------------------------------------------

oi_goo様のご教授通りに、スレーブに書かれたディレクトリまで進んでみたところファイルが見つかりました。
有難う御座いました。

#namedのリスタートと、kill -HUP [プロセス番号?(psコマンドで該当のデーモンを打ち込んだ時に出てくる数字)]は同じ事なんですか?

お礼日時:2007/03/14 13:40

参考URLの通り、シリアル番号を減らす方法はあります(3.1 シリアル番号)。



ちなみに本文ではマスタサーバのことをプライマリ、スレーブサーバのことをセカンダリと呼んでいます。プライマリ、セカンダリは昔の呼び方です。

また、BIND 8以降はマスタ側が持っているゾーンが更新されるとDNS notifyにより即座にスレーブ側にも通知されてそちらも更新されるので、リフレッシュ時間待つ必要は無いかもしれません(DNS notify が有効かどうかは設定によります)。

参考URL:http://bonz.squares.net/~dais/misc/rfc1912j.html …
    • good
    • 0
この回答へのお礼

ご回答有難う御座います。

>参考URLの通り、シリアル番号を減らす方法はあります(3.1 シリアル番号)。

HPを拝見させて頂きました。シリアル番号を減らす方法が、実際にあったとは驚きです。職場の先輩やサイトでもご存じない方が多かったので、出来ないものと思っていた矢先だったので大変感謝しております。

まずBINDのバージョンがいくつなのか調べました。
# named -v で試したのですが間違っていたので、調べたところ、Solarisはin.namedがBINDの本体みたいですので、
# in.named -v と打ち込んだところ、バージョン情報が出ませんでした。原因は解りませんでしたが、他の方法で試しました。
# nslookup -q=txt -class=chaos version.bind [サーバ名]とWindowsコマンドプロンプト上から確認が出来ました。
結果、BIND8でした。

#サイトで調べたのですが、BIND8はDNS notifyが無いとサイトで見たのですが、BIND9からでは使用出来るものと理解していいのでしょうか?それとも、BIND8の「標準」では使えないが、何かを入れると使用出来たりするのでしょうか?

お礼日時:2007/03/14 11:55

シリアル値の減少、私もやったことないし知らないです・・。


(一応その手の仕事をしていますが)

以前新人が間違えて一桁多くしてしまったときは、しょうがないからそれまでのフォーマットを変えて対応しました。
2007031301(YYYYMMDD##)→
20070313001(YYYYMMDD###)

こんな解決でいいんじゃないですか?
時間掛けるほどのことではない気がしますが。
    • good
    • 0
この回答へのお礼

ご回答有難う御座います。

>以前新人が間違えて一桁多くしてしまったときは、しょうがないからそれまでのフォーマットを変えて対応しました。
2007031301(YYYYMMDD##)→
20070313001(YYYYMMDD###)

こんな解決でいいんじゃないですか?
時間掛けるほどのことではない気がしますが。

上記についてですが、ある参考書には「SOAレコードのシリアル番号を最大値より超えて設定してしまうと、ゾーンデータの読み込みに失敗する為、注意が必要です。」と書かれていた為、これで解決していいものか迷走しております。

お礼日時:2007/03/13 09:36

こんにちは.



スレーブのnamedが管理下なのであれば,スレーブのnamedをstopしてキャッシュファイルを手で削除してしまえば良いと思います.(確か)

手を出せないのであれば,いっそのこと思い切って大きな番号で管理してしまえば良いと思っちゃったりしますが... 5007031301とか.

減少できるのかはわかりません.*私は*出来ると聞いたことないですね...

# 新しめのbindならserial値のフォーマットを変えられるので,変更したタイミングできれいになるかも???(試したこと無いのでわかりませんよ)

この回答への補足

自身が無かったので確認させて下さい。
namedをstopさせるには、/usr/local/sbin named stop と打ち込んだところ、can't open 'stop'と表示されたのですが、これで停止したということなのでしょうか?

また、キャッシュファイルのありかは以下を参照しております。
more /etc/named.conf

zone "."
type hint;
file "named.cache"; ←この部分がキャッシュファイルだと思っていますが、間違いでしょうか?

初コマンドベースでの作業なので、ご協力の程、宜しく御願い致します。

補足日時:2007/03/13 17:53
    • good
    • 0
この回答へのお礼

ご回答有難う御座います。

>スレーブのnamedが管理下なのであれば,スレーブのnamedをstopしてキャッシュファイルを手で削除してしまえば良いと思います.(確か)

まずは、この方法を試したいと思います。キャッシュファイルを手動で削除する方法が解らないので、調べている状況です。

>手を出せないのであれば,いっそのこと思い切って大きな番号で管理してしまえば良いと思っちゃったりしますが... 5007031301とか.

それは事前に考えてましたが、出向先のサーバなので出来れば元に戻せるのであれば戻したいという気持ちです。

お礼日時:2007/03/13 09:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!