dnsmasqはどれくらいの期間DNSをキャッシュしますか?


9

私はマニュアルページを調べましたが、dnsmasqがdnsをキャッシュする時間を見つけることができませんでした。キャッシュと有効期限のルールは何ですか?

外部サービスへのリクエスト送信がnamelookupに5秒または10秒以上かかることがあるという問題があります。外部サービスのIPを/ etc / hostsに保存できますが、IPの変更が怖いです。Dnsmasqをインストールすると、名前のルックアップが改善されますが、遅い名前のルックアップはまだ少ない頻度で起こります。

1つの解決策は、cronジョブで単純なpingをセットアップすることですが、最初に有効期限を確認する必要があります。

ありがとう。

更新

追加されたdig出力

; <<>> DiG 9.8.1-P1 <<>> api.mch.weixin.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45012
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.mch.weixin.qq.com.             IN      A

;; ANSWER SECTION:
api.mch.weixin.qq.com.      0       IN      A       140.207.69.102

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jul 17 19:24:36 2015
;; MSG SIZE  rcvd: 55

アップデート2

前のdig出力にはTTLが0として含まれており、誤解を招く恐れがあります。私は別の発掘出力を投稿しました。

; <<>> DiG 9.8.1-P1 <<>> api.mch.weixin.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60900
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.mch.weixin.qq.com.             IN      A

;; ANSWER SECTION:
api.mch.weixin.qq.com.      181     IN      CNAME   forward.qq.com.
forward.qq.com.             181     IN      A       101.226.90.149
forward.qq.com.             181     IN      A       101.226.129.200

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jul 21 12:01:54 2015
;; MSG SIZE  rcvd: 99

回答:


9

DNSmasqはDNS TTL値を使用して、キャッシュ期間を決定します。digコマンドを使用して、そのドメインのDNSサーバーの現在のTTLを照会できます。


dnsmasqはTTL期間内にのみDNSをキャッシュするということですか?質問をdig出力で更新しました。
perlwle 2015

1
はい、TTL期間のみがキャッシュに使用されます。また、TTLは0なので、DNSmasqは常に信頼できるDNSサーバーにクエリを送信します。
Tero Kilkanen、2015

ただし、マニュアルに記載されているように、-max-cache-ttlを使用して、キャッシュされた値のTTLを強制的に下げることができます(自分でテストしていません)。
sam_pan_mariusz 2015

@TeroKilkanen Query time: 0msecは、dnsmasq へのキャッシュヒットを意味します。しかし、dnsmasqがdnsレコードをキャッシュに保持する期間はどれくらいですか?
perlwle 2015

@sam_pan_mariusz私はあなたが--max_ttl旗を意味していたと思いますか?外部サービスIPの変更を見逃すよりは、常に正しいIPを取得したいのです。
perlwle

4

dnsmasqに設定する必要があるオプションは--min-cache-ttlで、値は秒単位です。

dig出力によると、TTLは0です。たとえば--min-cache-ttl=600、これをに設定すると、digによって返されるTTL値は600になります。api.mch.weixin.qq.com私がいるところからのTTL は600なので、自分で600秒に設定しますIPの変更を見逃さないようにするのに適度に安全でなければなりません。(私はあなたが中国にいると思います。)

これにより、すべてのDNSレコードが10分間有効と見なされます。

この機能の紹介の詳細は、dnsmasq メーリングリストのメッセージを参照してください。


私は10分程度ごとにpingを実行します。うまくいけば、DNSルックアップラグが修正されます。以前のコメントで述べたように、私はその設定がない古いバージョンを使用しています。間違っている場合は修正してください。ただし、使用可能な場合、600に設定すると、外部サービスTTLと同じになります。それで違いはありませんよね?
perlwle 2015

1
@perlwleいいえ、そうではありません。TTLが常に0であると想定していましたが、1200に増やすと役立ちます。DNSCryptを調べることをお勧めします。ルックアップにかかる時間、接続速度、およびサードパーティの影響に関する詳細情報がないと、明確な答えを出すことができません。より強力なDNSキャッシュ/リゾルバーが必要な場合は、このチュートリアルの Unboundに関する基本的な部分をお勧めします。これは、Ubuntu 12.04で標準リポジトリから完全に機能します。(Google DNSは現在DNSSECを適切に処理していることに注意してください。)
2015

1
これらのホストファイルエントリのdnsmasq 'local-ttl'にも注意してください
KCD
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.