れんとう

まいにち なにか ひとつ

キャッシュDNSの夢を見た

またDNSをいじってる…

かつて、「DNSは全ての基本」と教わった。
三つ子の魂百まで。DNSの設定ができてこそ一人前だと思っている。
基本的なことしかできないけどね(笑)

で、だ。
また、BeagleBone Blackでセカンダリを立ち上げたので、嬉々として、各クライアントにDNSIPアドレスを書き込んで喜んでいたのだよ。
そして、ふと、気がつく…これ…DNSのアドレスが変更になったら、すごくめんどくさくないか?とね。

ならばcacheのアドレスを書けばいいじゃない?

ということで、cacheDNSのアドレスを書き込んでおけば、MasterDNSのアドレスが変更になったら、cacheDNSでの設定を変えるだけで済むよね?ということで、cacheの設定を見直すことにした。

今のDNSの構成はこんな感じ。

 

MainRouter

├──RouterA

  ├──DNS(Master)

      ├──DNS(Slave1)

      ├──DNS(Slave2)

      └──DNS(cache)

  └──DNS(MasterCopy)

└──RouterB

    └──DNS(Master)

 


このツリーが示すように、cacheはマスターの下にぶら下がっていて、全ての問い合わせをMasterDNSに投げている。
MasterDNSがローカルかグローバルかを判断して、自分自身(ローカル)かMainRouter(グローバル)に問い合わせして、cacheDNSに答えを返している。
でもね、これ、よく考えてみると、MasterDNSがこけたら、全てアウト。SlaveDNSを2つも構築している意味がないじゃんね。

なので、こうした。

・ローカルゾーンの名前解決は、MasterDNS、SlaveDNS1、SlaveDNS2のいずれかに問い合わせする。
・それ以外のゾーンはグローバルとみなして、MainRouterに問い合わせする。

という方針で、設定を考えてみた。

unboundの設定を変える

cachheDNSはunboundで構築してるわけだが…これ楽だね?
BINDはキャッシュと権威が同居してるけど、unboundはキャッシュ機能がメインなので、設定がすっきりとかける。
はじめ、間違って、stub-zoneに設定を書いたけど、forward-zoneにちゃんと書いてうまくいったよ。

設定ファイルはこんな感じ。

 

# chache server

 

server:

    interface: 172.18.10.9 DNSサービスを稼働するNICIPアドレス

    do-ip6: no

 

    access-control: 0.0.0.0/0 refuse ← 全拒否

    access-control: 172.18.0.0/16 allow ← からの、ローカルIPからは許可

 

    hide-identity: yes

    hide-version: yes

 

local-zone: "18.172.in-addr.arpa." transparent ← 名前解決したいプライベートIPのゾーンを指定

 

remote-control:

        control-enable: yes

        control-use-cert: no

 

forward-zone:

name: "dedara.jp." ← 名前解決したいローカルドメインを指定

forward-addr: 172.18.0.1 ← MasterDNSにフォワード

forward-addr: 172.18.10.8 ← SlaveDNS1にフォワード

forward-addr: 172.18.101.103 ← SlaveDNS2にフォワード

 

forward-zone:

name: "18.172.in-addr.arpa." ← プライベートIPのゾーンを指定

forward-addr: 172.18.0.1 ← MasterDNSにフォワード

forward-addr: 172.18.10.8 ← SlaveDNS1にフォワード

forward-addr: 172.18.101.103 ← SlaveDNS2にフォワード

 

forward-zone:

        name: "." ← 上記以外の全てのゾーン

        forward-addr: 192.168.0.1 ← プロバイダ接続しているルーターフォワード

 


うん、言われて見ればそうだよね。
こうなるよね。

MasterやSlaveをstopとstartを繰り返して、片肺で動かしつつ、digしながらローカルとグローバルを正引き、逆引き、ちゃんとできるか試してO.K.でした。

こうしてcacheは完成!

実稼働環境では、DNSって1度構築すると設定をやり直すことって少ないよね。
停止したらえらいことになるからね。
若い頃にしくじって実環境で止めちゃってシヌかと思ったこと何回かあるよ。
だからこそ自宅のテスト環境で色々試して遊びたい!
単純なDNSの案件しかやったことないけど、こういうちょっと変わったのの設定もやれるようになりたいな。
と、初心に返って思うのですよ。