• ベストアンサー

DNS SOAレコードのserial値について

質問させて頂きます。 会社のDNSサーバ(OSはSolaris2.6)で、/var/named.confを設定していたところ、誤ってSOAレコードのserial値を現在の設定値よりも高い数値にしてしまい、数値を元に戻し再起動をしましたが上位DNSサーバへスレーブが反映出来ないとの通知を受けてしまいました。 私自身はUnix初心者ですが何とか解決したいと思い、HPや参考書を見てみたのですが、解決方法が記載されていませんでした。 serial値の減少方法を、具体的にご教授願えませんでしょうか? 宜しく御願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#243622
noname#243622
回答No.5

昔同様のことに出会ったことがあります。その場合の対応をお知らせしておきます。 シリアル番号をいったん"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レコードのシリアル番号リセットの方法はいろいろありますが、この方法が一番簡単だと思います。

mayoi-st99
質問者

お礼

ご回答有難う御座います。 nslookupまでの文章を理解する事が出来ました。 ですが、一点だけ質問が御座います。 >検索ゾーン名は、SOAレコードの最初にあるに名前(INの左)です。サーバ名とは違うので、気をつけてください。 SOAレコードの一覧が、 @   IN     SOA   localhost root.localhost となっているのですが、INの左側は@でした。この事でしょうか?この@について調べていたのですが、何を意味しているかでつまづきました。 #サーバ名は、localhostだと思うのですが・・・うーん。 もしかすると、この@は単純にゾーンファイルのファイル名で、 >nslookup -type=soa (検索ゾーン名) (上位DNSサーバのIPアドレス) 上記の検索ゾーン名に、ゾーンファイルのファイル名を記載するということなのでしょうか?

その他の回答 (6)

  • oi_goo
  • ベストアンサー率44% (20/45)
回答No.7

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

mayoi-st99
質問者

お礼

こんにちは。 下記について、質問が御座います。 >ndc が使えるなら,ポチポチ(ナゼ2回かは2ヶ所のサーバの意味)って当該zoneのキャッシュだけ 削除できるじゃないですか.そういえば. まず、ポチポチという部分がよく解りませんでした。 ・2箇所のサーバの意味=現在設定している内部DNSサーバと、上位DNSサーバ側の外部DNSサーバの2箇所という事ですか? ・当該zoneのキャッシュだけ削除=No.4に書かれていた時の削除方法と違うキャッシュファイルを削除するという事でしょうか? 宜しく御願い致します。 #リスタートと-HUPの違いがわかりました。同じ事でした。 #namedを停止させたつもりで、nslookupしたところ動作しているような感じではなかったので、停止しているものと判断しました。

mayoi-st99
質問者

補足

出張から帰社後、皆様の方法を全て参考にしてserial値を元に戻す事が出来ました。有難う御座いました。 今回はとっても勉強させて頂きました。今後も日々精進していきたいと思います。 #皆さんに20ptあげたいのですが、そうもいかないので私が参考になった方に差し上げたいと思います。ご了承下さい。

noname#243622
noname#243622
回答No.6

#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(末尾ドットなし)に設定してありますが、これは問題ないんでしょうか....

mayoi-st99
質問者

お礼

こんばんは。 具体的に書かれて、初心者の私でもすごく理解出来ました。 とっても感謝しています。 私が何を勘違いしているか、それも同時に解けました。 >--- zone "example.jp" { type master; file "example.zone"; }; --- zoneはゾーン情報で動作をさせる為の内容が記載されていて、"example.jp"がゾーン名。 type masterはマスターサーバを指定する。 fileはゾーンファイルの事で、"example.zone"がゾーンファイルのファイル名。という事なんですね。 example.jpに書かれている情報が、example.zoneっていうファイルに載っているから、それを見にいく感じなのかな・・・? 今まで何も気にせずに見ていた情報が、一つ一つに意味があるという事に驚かされています。 #すいません・・・/var/named/local_zoneからの情報を参考に例を書かせて頂きました。紛らわしくてごめんなさい(>_<)

  • oi_goo
  • ベストアンサー率44% (20/45)
回答No.4

こんにちは. #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で良いんですけどね,

mayoi-st99
質問者

お礼

こんにちは。 調べた結果、namedを停止させるには/usr/local/sbin namedでなく、ndcというサービス?にstopと打ち込んだところ、停止しているように見えました。 >残念ながら今回はハズレです. この意味がわからなかったので調べてみたところ、下記はルートサーバのキャッシュファイルという事に気がつきました。 ---------------------------------------------------------------- zone "." { type hint; file "named.ca"; ←named.casheではなくnamed.caでした・・・ } ---------------------------------------------------------------- oi_goo様のご教授通りに、スレーブに書かれたディレクトリまで進んでみたところファイルが見つかりました。 有難う御座いました。 #namedのリスタートと、kill -HUP [プロセス番号?(psコマンドで該当のデーモンを打ち込んだ時に出てくる数字)]は同じ事なんですか?

mayoi-st99
質問者

補足

追記です。 ndcというサービス?にstopと打ち込んだところ、何も変化が無かった為、psコマンドでnamedが動作しているか確認しました。表示が何も出てこなかったので、停止しているように見えたのですが不明です。 #Linuxのように開始とか停止とか出ればわかるのですが、Solarisは表示されないのでわかりにくいです・・・(;; また、namedが停止されていれば名前解決も出来ない為、nslookupで名前がひけなければ動作していないという事で間違いないでしょうか? 聞いてばっかりで本当にごめんなさい・・・

回答No.3

参考URLの通り、シリアル番号を減らす方法はあります(3.1 シリアル番号)。 ちなみに本文ではマスタサーバのことをプライマリ、スレーブサーバのことをセカンダリと呼んでいます。プライマリ、セカンダリは昔の呼び方です。 また、BIND 8以降はマスタ側が持っているゾーンが更新されるとDNS notifyにより即座にスレーブ側にも通知されてそちらも更新されるので、リフレッシュ時間待つ必要は無いかもしれません(DNS notify が有効かどうかは設定によります)。

参考URL:
http://bonz.squares.net/~dais/misc/rfc1912j.html#serial
mayoi-st99
質問者

お礼

ご回答有難う御座います。 >参考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の「標準」では使えないが、何かを入れると使用出来たりするのでしょうか?

回答No.2

シリアル値の減少、私もやったことないし知らないです・・。 (一応その手の仕事をしていますが) 以前新人が間違えて一桁多くしてしまったときは、しょうがないからそれまでのフォーマットを変えて対応しました。 2007031301(YYYYMMDD##)→ 20070313001(YYYYMMDD###) こんな解決でいいんじゃないですか? 時間掛けるほどのことではない気がしますが。

mayoi-st99
質問者

お礼

ご回答有難う御座います。 >以前新人が間違えて一桁多くしてしまったときは、しょうがないからそれまでのフォーマットを変えて対応しました。 2007031301(YYYYMMDD##)→ 20070313001(YYYYMMDD###) こんな解決でいいんじゃないですか? 時間掛けるほどのことではない気がしますが。 上記についてですが、ある参考書には「SOAレコードのシリアル番号を最大値より超えて設定してしまうと、ゾーンデータの読み込みに失敗する為、注意が必要です。」と書かれていた為、これで解決していいものか迷走しております。

  • oi_goo
  • ベストアンサー率44% (20/45)
回答No.1

こんにちは. スレーブのnamedが管理下なのであれば,スレーブのnamedをstopしてキャッシュファイルを手で削除してしまえば良いと思います.(確か) 手を出せないのであれば,いっそのこと思い切って大きな番号で管理してしまえば良いと思っちゃったりしますが... 5007031301とか. 減少できるのかはわかりません.*私は*出来ると聞いたことないですね... # 新しめのbindならserial値のフォーマットを変えられるので,変更したタイミングできれいになるかも???(試したこと無いのでわかりませんよ)

mayoi-st99
質問者

お礼

ご回答有難う御座います。 >スレーブのnamedが管理下なのであれば,スレーブのnamedをstopしてキャッシュファイルを手で削除してしまえば良いと思います.(確か) まずは、この方法を試したいと思います。キャッシュファイルを手動で削除する方法が解らないので、調べている状況です。 >手を出せないのであれば,いっそのこと思い切って大きな番号で管理してしまえば良いと思っちゃったりしますが... 5007031301とか. それは事前に考えてましたが、出向先のサーバなので出来れば元に戻せるのであれば戻したいという気持ちです。

mayoi-st99
質問者

補足

自身が無かったので確認させて下さい。 namedをstopさせるには、/usr/local/sbin named stop と打ち込んだところ、can't open 'stop'と表示されたのですが、これで停止したということなのでしょうか? また、キャッシュファイルのありかは以下を参照しております。 more /etc/named.conf zone "." type hint; file "named.cache"; ←この部分がキャッシュファイルだと思っていますが、間違いでしょうか? 初コマンドベースでの作業なので、ご協力の程、宜しく御願い致します。

関連するQ&A

  • DNS 逆引きについて

    現在solaris9, BIND9でDNSの設定をしていますが、そこでふと疑問があり、 オライリーなどの本で調べてみましたが解決に至りませんでしたので 質問をさせていただきます。 1. 逆引きゾーンの範囲について /24未満の逆引きゾーン、たとえば 192.168.24.64/28というアドレス帯の 逆引きゾーンを設定した場合、 ゾーン名は、64.24.168.192.in-addr.arpa となりますが、 ゾーンの範囲が192.168.24.64/28なのか、192.168.24.64/27なのか、 192.168.24.64/26なのか、どうやって判断しているのでしょうか? 2. ゾーン転送をするタイミングについて slaveサーバ側でmasterサーバからゾーン転送ができるように設定をし、 named.confの再読み込みを実施しました。 しかし、まだmasterサーバ側ではslaveへのゾーン転送設定はしていません。 そのため、slaveサーバ側にはゾーンファイルが作成されておらず、 当然refresh間隔などの情報も持っていません。 この状態がずーと続いた場合、slaveサーバは、定期的にmasterサーバに対して ゾーン転送の要求を行いますか? ログ(/var/adm/messages)を見ると、どうも何もしないような気がするのですが・・ また、途中、named.confの再読み込みを何度かしたことはありますが、それでもエラーログをはいた跡はありませんでした。 以上です。 皆様のお知恵をお貸しください。よろしくお願いします。

  • Solaris10でDNS

    はじめまして。 素人な質問をさせて頂きます。 Solari10で、DNSを構築したいと考えております。 Solaris 10 9/10 を利用しており #named -v BIND 9.6.1-P3 は確認が出来ました。 ですが、named.confファイル等のconfigファイルが見当たりません。 Solaris10でDNSを構築する初動の作業を御教示下さい。 宜しくお願い致します。

  • DNS・ゾーン転送について

    宜しくお願いします。 masterのnamed.confファイルに allow-transfer { ***.**.***.***; ← IPアドレス };slave に転送する設定を加えました。 masterのゾーン情報などが、slaveサーバに転送されるのは どれくらいの時間がかかるものでしょうか。 また、masterのnamed.conf中の // ***.com zone "***.com" { type master; file "master/***.com"; }; の記述もslaveのnamed.confに転送され記述されることになりますでしょうか。 それとも、slaveのnamed.confに // ***.com zone "***.com" { type slave; masters { ***.***.***.***; }; ← マスターのIPアドレス file "slave/***.com"; }; と人の手で追記設定がいるのでしょうか。 ご回答、何卒宜しくお願い致します

  • DNS動かず、、、

    linuxでnamed-serverを動かしたいのですが、 設定後、nslookup と打つと、 can' find server named for ***.***.***.*** Non-existent host/domai Default Server: **.***.ne.jp address ***.***.***.*** とでて、provider(OCN-economyのようにC未満でIP割当受けるサービス受け手ます)側で用意してもらったsecondaryが、default-serverで受けてくれます。 /var/log/message を見ると、各ゾーンファイルに対して、 Aug 23 00:43:10 dns named[5468]: Zone "0.0.127.IN-ADDR.ARPA" (file localhost.rev ): No default TTL set using SOA minimum instead のように、no default TTL ,,,,,, と出ています。 nslookupと打って、キチンとprimaryで設定してあるサーバーに返信して欲しいのですが。 どうしたらよいのでしょう。 よろしくお願いします。

  • インターネット上にあるプライマリDNSに対してスレーブサーバをたてたい

    DNSの設定を勉強したいので、自宅にDNSのマスターとスレーブのサーバを立てて基本的な設定を確認しました。 実際に使われているマスターDNSにスレーブDNSを建てて、もう少し突っ込んで学習してみたいと思うのですが、 設定可能な程情報公開されたマスターサーバが見付からず悩んでいます。 会員になっているNiftyからdhcpで取得しているDNSサーバのスレーブとなるように 設定して動作を確認してみたかったのですが Dec 29 14:22:45 localhost named[3902]: zone nifty.co.jp/IN: refresh: non-authoritative answer from master ???.???.1.1#53 のようなメッセージがsyslogdにより/var/log/messageに書き込まれて転送情報の ファイルが出来上がりません#???は当方が書き換えています DNSSECの設定がよろしくないのかなと思うのですが、どう切り分けたらいいでしょうか?

  • セカンダリDNSのNSレコードの動作がわからなくて困ってます。

    DNSサーバについての質問です。或るドメインに対して、以下の設定がされている状態で、プライマリDNSサーバが障害にあった場合、名前解決について何か支障がでるのでしょうか?また、支障が出るとすればどういった症状になるのでしょうか。  ・レジストラにはプライマリ、セカンダリDNSサーバをそれぞれ登録しています。  ・プライマリDNSサーバの、ゾーンファイルのNSレコードには、セカンダリDNSサーバの記述がありません。  ・セカンダリDNSサーバのnamed.confには、プライマリDNSサーバのIPアドレスが記述されています。 つまり、セカンダリDNSサーバには、プライマリDNSサーバからのゾーンファイル転送によって、自身のNSレコードを含まないゾーンファイルが存在しています。 レジストラには登録されているので、問題なく名前解決ができるのではと思っているのですが・・・。 すみません、いまいちNSレコードの役割がわかっていません。 ご教授よろしくお願いします。

  • Linux初心者 DNSの設定

    DNSの設定(Ledhat Bind 9)がうまくいきません。 外部からのアクセスは可能なのですが、自分自身が外部にアクセスできません。nslookupコマンドでwww.yahoo.co.jpと入力しても、エラーで返ってきてしまいます。 Var/log/messages を参照しても、namedにエラーは起こっていないです。 etc/rc.d/init.d/Namedは自動起動に設定済みです。 設定した内容は、 etc/named.conf var/named/named.local var/named/localhost.zone var/named/aaa.gr.jp var/named/111.112.2.210.in-addr.arpa.zone etc/ld.so.conf 以上の編集と pidファイルの移動 以上となります。 どなたか助けてください。

  • DNSサーバとDNSクライアントについて

    DNSサーバから、そのDNSを使用しているDNSクライアントがどれだけあるか確認出来ますでしょうか? DNSクライアントだと思われる装置から、毎回Resolv.Confを確認してそのDNSサーバのIPが記述されているかを確認するしか方法はないのでしょうか?(結構手間なのでそれだけではないと思うのですが。。) DNSサーバのnamed.confに記述のあるIPアドレスの正引きや逆引きのファイルがあるのですが、これって、あくまで問い合わせしてきたDNSクライアントへの答えなので実際のDNSクライアントってわかりませんよね。。。 う~~~ん、、何かご回答、アドバイスなどありましたらお願いします。

  • bind9のNSレコードを返す設定について

    DNSサーバ(bind9)のNSレコードを返す設定について質問させて下さいませ。 DNSサーバ#0と、DNSサーバ#1の、2つのDNSサーバがあったとします。 DNSクライアントが、DNSサーバ#0にexample.comのAレコードを問い合わせたとき、DNSサーバ#0がDNSサーバ#1のNSレコード(ns.dnsserver1.com)を返す設定をご教示願います。 現在、DNSサーバ#0に下記のようにzone設定を入れたところ、DNSサーバ#0はNSレコードを返さずに standard query respnse, No such nameを返してしまいます。 //named.conf.default.zone zone "." { type master; file "/etc/bind/all.zone"; }; //"/etc/bind/all.zone" $TTL 3600 @ IN SOA ns.dnsserver0.com. root.dnsserver0.com. ( 2000091801 ; Serial 3600 ; Refresh 900 ; Retry 3600000 ; Expire 3600 ) ; Minimum IN NS ns.dnsserver1.com. ns.dnsserver1.com IN A aaa.aaa.aaa.aaa(IPアドレス) 宜しくお願い致します。

  • bind9.2.4

    お世話になります。 自宅にて勉強のためDNSサーバを構築している最中なのですが、詰まっています。 皆様方、お忙しい中お手を煩わすようで恐縮なのですが、ご指導頂けないでしょうか? OS:RedhatES4 2.6.9-5.EL(VMwareWorkstation6.5上にインストール) クライアント:WindowsXP professional SP2 ×2台 Bind ver 9.2.4 現状は正引きの名前解決のみできない状況ですが、windowsからの問い合わせ、サーバ自身からの問い合わせの解決(これは問い合わせ先をルータにしているのでOK)ができていません。 named.confとzoneの設定が下記になります。 #named.conf zone "magi.com" { type master; file "test.zone"; allow-update { none; }; }; #magi.com.zone $TTL 86400 @ IN SOA magi.com. root.magi.com. ( 2009021203 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS magi.com. MAGISYSTEM2. IN A 192.168.11.2 magisystem. IN A 192.168.11.4 magi.com. IN A 192.168.11.10 named-checkzoneの結果が下記です。dns_master_load: /var/named/chroot/var/named/magi.com.zone:12: ignoring out-of-zone data (MAGISYSTEM2) dns_master_load: /var/named/chroot/var/named/magi.com.zone:13: ignoring out-of-zone data (magisystem) zone magi.com/IN: loaded serial 2009021203 OK とりあえずは名前解決ができればよいという設定で作ろうと思っています。 ーよろしくお願い致します