グッドデザイン賞を受賞したウォーターサーバー >>

はじめまして。
最近DNSサーバを触る機会が増えてきており、基本から勉強しているところです。
そこでどうしても知識として整理がつかないことがあります。
それが、DNSのTTLというものです。

いろいろなHPを拝見すると、通常のキャッシュを保持する時間と書いてあるところもあれば、ネガティブキャッシュを保持する時間と書いてあるところもあります。

いろいろ調べたところ、RFC 2308から役割が変更され、SOAレコードのTTL値はネガティブキャッシュを表していると、
また通常のキャッシュの値はSOAレコード内ではなく、$TTLで指定すると認識しました。
これで正しいのでしょうか?
参照URL:http://jprs.jp/tech/dnsuis/info001.html

SOAレコードの値はネガティブキャッシュというのは、広く認識されていることなのでしょうか?
HPによっては通常のキャッシュ保持時間と書かれているところも数多くあります。

また、よくDNSサーバ移行時にTTLを値を小さくするといいますが、その値とは通常のキャッシュ保持時間、つまり$TTLの値を小さくするのでしょうか?
SOA内のTTL値ではないということですよね?

もう一点あります。
あるネームサーバのTTLを確認するときにnslookupコマンドでset type=soaと指定し、default TTL値を確認してました。
これは、通常のキャッシュ保持時間ではなく、ネガティブキャッシュの時間ということでしょうか?
今まで、これが通常のキャッシュ保持時間だと認識してました・・・

であるとすると、TTL値(通常のキャッシュ保持時間)はどのように確認すればよいのでしょうか?
nslookupでは確認不可??

このSOAのTTL値をネガティブキャッシュとして扱うというのは、すべてのDNSサーバでそういう役割になったという認識でよろしいのでしょうか?

どうも、知識として整理がつかず、ごちゃごちゃになってしまってます。
ご存知の方、ご教授願えますでしょうか。
宜しくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは.



#1さんと同じ内容ですが.

> これで正しいのでしょうか?
8.2以降は、はい。(と各RRでも)

> SOAレコードの値はネガティブキャッシュというのは、広く認識されていることなのでしょうか?
個人的には余り認識されていないような気がしますね。
(知っててもスルーしている人も多いと思いますが)

> HPによっては通常のキャッシュ保持時間と書かれているところも数多くあります。
それは、そのHPの作成・更新タイミング次第ではないでしょうか。
(バージョンが記載されていないHPを参考にするときはご注意ということで)
# view もしかり。

> これは、通常のキャッシュ保持時間ではなく、ネガティブキャッシュの時間ということでしょうか?
そのサーバのバージョンによりますね。8.2以降は、はい。

> であるとすると、TTL値(通常のキャッシュ保持時間)はどのように確認すればよいのでしょうか?
> nslookupでは確認不可??
digは何もせず表示されますよね.nslookupはデバッグモードしかないようですね.

> このSOAのTTL値をネガティブキャッシュとして扱うというのは、すべてのDNSサーバでそういう役割になったという認識でよろしいのでしょうか?
受信したあなたのCacheサーバの解釈(bindのバージョン)次第のはずです。(多分)
    • good
    • 0

>また通常のキャッシュの値はSOAレコード内ではなく、$TTLで指定すると認識しました。


>これで正しいのでしょうか?
bindの設定方法ということであれば正しいです。
http://www.atmarkit.co.jp/flinux/rensai/bind902/ …

>HPによっては通常のキャッシュ保持時間と書かれているところも数多くあります。
ネガティブキャッシュに限らず、必ずしも正しく記載しているサイトばかりでは
ありません。DNSの情報は間違った記載が多いと感じます。
RFC2181のようなものがあるくらいなのでややこしいのかもしれません。

>SOA内のTTL値ではないということですよね?
おおむねそうだと思いますが多分同時にネガティブキャッシュも短い方が良いと
考える方もいるかもしれません。

>これは、通常のキャッシュ保持時間ではなく、ネガティブキャッシュの時間ということでしょうか?
そうです。

>nslookupでは確認不可??
Windowsでならset d2などでデバッグモードを使えば出るようです。
http://www.atmarkit.co.jp/fnetwork/netcom/nslook …
Linux等ならdigなどを使った方がいいでしょう。

>このSOAのTTL値をネガティブキャッシュとして扱うというのは、
>すべてのDNSサーバでそういう役割になったという認識でよろしいのでしょうか?
古い実装であればネガティブキャッシュも普通のキャッシュも同じTTLを使うという
ことだと思います。

BINDであればRFC2308を受けて8.2以降では前述の設定で
二つのキャッシュを分けて設定が行えて、取り扱いも分かれたということだと思います。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QNTP の TCPポートは?

NTPは123/UDPでようは足りると思うのですが、
WELL KNOWN PORTとかいろいろな資料に「123/TCP」ポートが割当たってます。
ntpd,ntpdate等でNTPを使う場合、実際には123/TCPは使われているのでしょうか?

Aベストアンサー

RFC1305では「ntpには123/udpを割り当てる」となっていますが、RFC1700では「123 ntp」となっており、「123/udp」と明示されているわけではありません。
よって、「123/tcp ntp」が間違っている(または使えない)という明確な根拠にはなりません。

「現状では『123/tcp ntp』を実装するための定義が存在しない」程度に考えた方が良いと思います。

ただ、将来的にRFC2030のSNTPが(IPv6対応などの点で)主流になる可能性があるので、「123/tcp ntp」は定義されない可能性もあります。

QDOSコマンドのダブルクォーテーションの扱い

DOSコマンドでダブルクォーテーションを検索し、
リダイレクションをすることが出来なくて困っています。
例えば
findstr "\"!" a.txt
は出来ますが
findstr "\"!" a.txt >b.txt
とするとリダイレクションが出来ません。
grepも同じようです。

またunixコマンドではシングルクオートは、「囲まれた中身をそのままの文字として利用」し、ダブルクオートは、「囲まれた中身に$HOME など $ で始まる文字列があれば、
それを環境変数、シェル変数といった、値に置き換えてから、利用する」という明確な違いがありますが、DOSコマンドでは明確な違いはあるのでしょうか?

unixのshellをDOSコマンドに移植しています。
DOSコマンドの参考Webもあまり見つからなくて困っています。
もし参考になりそうなWeb等ありましたら教えてください。

Aベストアンサー

"と'の違いですが、cmd.exe では ' 特殊文字ではありません。for /f 文のある形式で意味を持つだけでそれ以外の場所では#+-/などと同じ普通の文字です。unixのシェルとは全然違います。

まず質問文の
>findstr "\"!" a.txt >b.txt
ですが、\ はfindstrが正規表現の特殊文字として扱うだけでCMDの構文解析では普通文字なので、"\"が引用符に囲まれた文字列として扱われます。次の!は引用符の外の文字。次の " a.txt >b.txtが、(終りの引用符の欠けた)引用符に囲まれた文字列とみなされますので、リダイレクト記号は引用符の中となり効きません。

>OKだったもの
>findstr ^"\^"!^" a.txt
>findstr \^"! a.txt
^を前置した"は引用符としての意味を失い、そのまま"がfindstrにわたされます。リダイレクト記号をつけても引用符の中で無いので効きます。findstrは検索文字列が"で囲まれていればそれを外して、囲まれていなければそのままが使われますので、どちらでも同じ結果になります。

>以下待ちになるもの
>findstr ^"! a.txt
findstrに "! a.txt が渡るのでa.txtも検索文字列の一部とみなされます(閉じる"がfindstrによって補われる)。従って、標準入力から、! または a.txt という文字列を含む行を探していることになります。
リダイレクトをつけると引用符の外なので効きます。

>findstr "^"!" a.txt
引用符の中で^は"をエスケープしないので1個目と2個目の"がペアになり^を囲み、3個目はペアの欠けた引用符となり a.txtを囲みます。リダイレクトをつけても引用符の中なので効かないはず。
その後、findstrが文字列を囲む""を外すので、^!つまり行頭の!または a.txtを含む文字を標準入力から探すことになります。

>findstr ^"!^"^" a.txt
^が前置されているので"はCMD的には引用符でなくなりますのでリダイレクトは効きます。
findstr には "!"" a.txt が渡り、文字列を囲む""が外されて、!またはa.txtを含む文字列を標準入力から探す。

>findstr ^" a.txt
同様。

>コンソールには表示できるがリダイレクションでエラーになるもの
>findstr \"! a.txt >b.txt
cmd的には"は引用符なので>b.txtも(終りの欠けた)引用符の中なのでリダイレクトは効きません。
findstr にわたるのは \"! a.txt >b.txtで、検索文字列が "! で残りがファイル名とみなされますが、「a.txt >b.txt」という名前のファイルが無いのでエラー
リダイレクトをつけないで
>findstr \"! a.txt
だと、findstr には \"! a.txt が渡り、検索文字列が "! で、ファイル名がa.txtとなり目的通りになります。

>「"」を検索するには「\^」をつけるということでしょうか。
CMDに引用符とみなされないように^をつけて(この^はCMDが外してからfindstrに渡す)、findstrが"を外さないようにさらに\を前置する必要があるということです。

CMDがまず最初に^や"や>をどのように処理して、次にfindstrが渡された文字列をどう解釈するか段階を分けて考えればわかると思います。これはunixのシェルでも同じですが。
unixのシェルと比べるとCMDの"は変態的です。

"と'の違いですが、cmd.exe では ' 特殊文字ではありません。for /f 文のある形式で意味を持つだけでそれ以外の場所では#+-/などと同じ普通の文字です。unixのシェルとは全然違います。

まず質問文の
>findstr "\"!" a.txt >b.txt
ですが、\ はfindstrが正規表現の特殊文字として扱うだけでCMDの構文解析では普通文字なので、"\"が引用符に囲まれた文字列として扱われます。次の!は引用符の外の文字。次の " a.txt >b.txtが、(終りの引用符の欠けた)引用符に囲まれた文字列とみなされますので、リダイレクト...続きを読む

QDNSキャッシュサーバのキャッシュ保持時間設定方法について

DNSキャッシュサーバでキャッシュを保持する時間は、
通常はzoneファイルのTTLを見ていると思います。

このTTLを無視して強制的に全部のキャッシュ保持時間を
統一させる方法をご存知の方、いらっしゃいますでしょうか…。

Aベストアンサー

bind9を使っていて、実際のTTLよりも短い時間にしたいのであれば、
optionsで
 max-cache-ttl (秒数)
※ネガティブキャッシュなら max-ncache-ttl (秒数)
を指定する事で、最大TTLを設定することが出来ます。


人気Q&Aランキング