質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.83%

  • DNS

    248questions

    DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

DNSキャッシュサーバ(unbound)が動作しない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 69

wasshoi

score 1

unboundを用いてDNSキャッシュサーバを構築したが、名前解決ができませんでした。

DNSサーバの設定で名前解決できることは下記コマンドから確認できています。
host ns1.example.jp xxx.xxx.xxx.10
dig @xxx.xxx.xxx.10 ns1.example.jp A
ping ns1.example.jp

ただ、名前解決を行うサーバをDNSキャッシュサーバに変更すると名前解決が行われません。
DNSキャッシュサーバや、他のクライアントPCからも試したが、結果は同じでした。
host ns1.example.jp xxx.xxx.xxx.11
dig @xxx.xxx.xxx.11 ns1.example.jp A
ping ns1.example.jp

DNSサーバで内部NW向けのゾーンを作成し、内部の名前解決と、外部の名前解決を行うために
内部のクライアントが設定するDNSサーバとして、DNSキャッシュサーバを登録し、
DNSキャッシュサーバが自動で両方の名前解決を行うことを目標にしています。

そのためのステップとして、DNSキャッシュサーバから内部ゾーンの名前解決をしたかったのですが、上手く動きませんでした。
DNSもDNSキャッシュもdnsサービスは許可しています。
どうして、期待通りに動作しないのでしょうか。ご教授お願いできますでしょうか。

◆環境
・win10PCにて、仮想環境上にサーバを構築
virtual box 5.2.8 r121009 (Qt5.6.2)

・仮想環境上のNW構成
DNSサーバ: xxx.xxx.xxx.10/24 (ns1.example.jp)
DNSキャッシュサーバ: xxx.xxx.xxx.11/24 (cns.example.jp)

※サーバは全てCentOS7.4です。

◆unboundの設定
■/etc/unbound/unbound.conf(デフォルトのまま変更していない。設定は別途ファイルにて行っている。)
server:
verbosity: 1
statistics-interval: 0
statistics-cumulative: no
extended-statistics: yes
num-threads: 4
interface-automatic: no
so-reuseport: yes
ip-transparent: yes
chroot: ""
username: "unbound"
directory: "/etc/unbound"
log-time-ascii: yes
pidfile: "/var/run/unbound/unbound.pid"
harden-glue: yes
harden-dnssec-stripped: yes
harden-below-nxdomain: yes
harden-referral-path: yes
unwanted-reply-threshold: 10000000
prefetch: yes
prefetch-key: yes
rrset-roundrobin: yes
minimal-responses: yes
module-config: "ipsecmod validator iterator"
trust-anchor-signaling: yes
trusted-keys-file: /etc/unbound/keys.d/*.key
auto-trust-anchor-file: "/var/lib/unbound/root.key"
val-clean-additional: yes
val-permissive-mode: no
val-log-level: 1
include: /etc/unbound/local.d/*.conf
ipsecmod-enabled: no
ipsecmod-hook: "/usr/libexec/ipsec/_unbound-hook"
python:
remote-control:
control-enable: yes
server-key-file: "/etc/unbound/unbound_server.key"
server-cert-file: "/etc/unbound/unbound_server.pem"
control-key-file: "/etc/unbound/unbound_control.key"
control-cert-file: "/etc/unbound/unbound_control.pem"
include: /etc/unbound/conf.d/*.conf

■/etc/unbound/local.d/interface.conf
interface: 127.0.0.1
interface: xxx.xxx.xxx.11

■/etc/unbound/local.d/client.conf
access-control: 127.0.0.1/8 allow
access-control: xxx.xxx.0.0/16 allow

■/etc/unbound/conf.d/example.jp.conf
stub-zone:
name: example.jp
stub-prime: no
stub-addr: xxx.xxx.xxx.10

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

DNS サーバー側のゾーン(example.jp)で、DNSSEC が有効でない場合、/etc/unbound/unbound.conf で domain-insecure: "example.jp" が必要です。

(2018/06/04 09:54) 追記

unbound のデバッグログ、DNS サーバー側のクエリーログまたはパケットキャプチャーで、
「DNSクライアント → unbound → DNSサーバー → unbound → DNSクライアント」
の経路のどこまでできているか確認するといいと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/04 19:36 編集

    ご回答ありがとうございます。

    早速検証してみましたが、単純にunboundの設定を変更しただけでは動きませんでした。
    DNS側のDNSSECの設定も確認してみたいと思います。

    また、/var/log/messageに出力されているログを確認してみました。
    (その際に、verbosity: 1 ⇒ verbosity: 3に変更)
    名前解決を問い合わせているようなメッセージがありましたが、
    DNS(xxx.xxx.xxx.10)へ問い合わせているメッセージはありませんでした。
    下記がそのメッセージです。(一部抜粋)

    info: validator operate: query example.jp. A IN
    debug: iterator[module 2] operate: extstate:module_state_initial event:module_event_pass
    info: resolving example.jp. A IN
    info: processQueryTargets: example.jp. A IN
    info: sending query: example.jp. A IN
    debug: sending to target: <.> 192.168.zzz.zzz#53
    info: error sending query to auth server 192.168.zzz.zzz port 53
    info: processQueryTargets: example.jp. A IN

    ※192.168.zzz.zzzは自宅のルータのIPアドレスで、こちらが外部の名前解決を行うDNSです。
    現状、そっちへアクセスできるNICは落としています。

    やはりクライアントからunboundへのリクエストが出来ていないようですね。
    もう少し調べてみたいと思います。

    キャンセル

  • 2018/06/04 21:39

    > debug: sending to target: <.> 192.168.zzz.zzz#53

    stub-zone が認識されておらず、(質問文にはありませんが) forward-zone で処理されているように思います。
    unbound の再起動はしていますよね?

    キャンセル

  • 2018/06/05 01:16

    失礼しました。
    これが原因かと思いforward-zoneの設定を追加していました。
    forward-zoneの設定をコメントアウトして、再度確認してみました。

    また、unboundの再起動は行っています。コマンドは下記です。
    unbound-checkconf
    ⇒で設定が問題ないことを確認
    unbound-control reload 
    ⇒で設定を再読み込み
    systemctl restart unbound
    ⇒念のため再起動

    ■以下log [実行コマンド: host example.jp DNSキャッシュサーバのIP]
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: validator operate: query example.jp. A IN
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: resolving example.jp. A IN
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: priming . IN NS
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: iterator operate: query . NS IN
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: processQueryTargets: . NS IN
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: sending query: . NS IN
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: error sending query to auth server 192.5.5.241 port 53
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: processQueryTargets: . NS IN

    ⇒これ以降は、下記のようなログが、IPアドレスxxx.xxx.xxx.xxxの部分だけ変わって
    500行近くが続いています。
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: sending query: . NS IN
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: error sending query to auth server xxx.xxx.xxx.xxx port 53
    Jun 5 01:04:09 cDNS unbound: [1114:1] info: processQueryTargets: . NS IN

    その中に、DNSやDNSキャッシュサーバのIPは含まれておらず、各アドレスの値は何の値か不明なものでした。

    キャンセル

  • 2018/06/05 10:19

    stub-zone 設定が読み込まれると、起動時に「info: DelegationPoint<example.jp.>: 0 names (0 missing), 1 addrs (0 result, 1 avail) parentNS」のようなログが出力されます。
    /etc/unbound/unbound.conf に直接設定しても変化ないでしょうか。

    キャンセル

  • 2018/06/05 17:02

    /etc/unbound/unbound.confへsuub-zoneに直接設定したところ
    正常にキャッシュDNSから名前解決できるようになりました!

    といいますか、どうやらstub-zoneの設定を記載していたファイル名が誤っておりまして、初歩的なミスでお恥ずかしいです。
    設定ファイルが×の方の名前となっておりました。
    /etc/unbound/conf.d/example.jp ×
    /etc/unbound/conf.d/example.jp.conf 〇

    整理しましすと、今回設定できていない所は2箇所でした。
    1. stub-zone設定
    ⇒/etc/unbound/conf.d/ に置くconfファイルの名前ミス
    2. domain-insecure設定
    ⇒DNSでDNSSECの設定をしていない為(ZSK鍵もKSK鍵も未作成で、公開鍵のゾーンへの登録もゾーンに対する署名も行っていない。)、 "example.jp"の設定をする必要がある。

    おかげさまで解決することが出来ました!
    ベストアンサーに登録させて頂きます!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • DNS

    248questions

    DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。