DTIのキャッシュDNSサーバで遊んでみた
DNS
Published: 2014-06-16

きっかけ

まじか!と思い、conohaからdigって見るものの、REFUSEDになってしまいました。「ちぇー、ちゃんアクセス制限してんのかー」と思っていたところ、@tss_ontapさんから「繰り返し聞いてみましょう」とのアドバイスをいただきました。

言われた通り何度もdigった結果、、、

アクセス制限しているにも関わらず、何回かに1回、応答を返すという謎動作。「このDNS、ロードバランサか?」ということで、どんな構成なのか調べてみました。

調べかた

  • DTIが提供する以下のキャッシュDNSサーバ(202.216.224.30、202.216.229.30)にServersMans VPSから再帰問い合わせ行う。(このためだけにVPSを借りた。)
  • 問い合わせで利用するFQDNは、絶対にキャッシュされていないドメイン(自ドメインのNXDOMAINになるもの)を使う
  • 自ドメインの権威DNSはIPv4アドレスのみでListenする。
  • 自ドメインの権威DNSのクエリログを確認し、問い合わせで使ったFQDNを問い合わせに来たDNSサーバをチェックする。
  • 問い合わせに来たDNSサーバに、ConohaVPSから再帰問い合わせを行い、オープンリゾルバかどうかチェックする。
  • 面白そうなので、問い合わせに来たDNSサーバに、ServersManからversion.bindを問い合わせる。

結果

202.216.224.30

202.216.224.30は13台中2台がオープンリゾルバでした。version.bindを信じるのであれば、ソースからコンパイルしたbindはちゃんとしていて、RHELのパッケージを使っているbindはオープンリゾルバのようです。

<th>
  Real server
</th>

<th>
  Open Resolver
</th>

<th>
  Version bind
</th>
<td>
  202.216.224.10
</td>

<td>
  Yes
</td>

<td>
  9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1
</td>
<td>
  202.216.224.11
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.224.12
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.224.13
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.224.14
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.224.15
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.224.16
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.224.17
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.224.18
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.224.19
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.224.34
</td>

<td>
  Yes
</td>

<td>
  9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1
</td>
<td>
  202.216.224.60
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.224.61
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>

202.216.229.30

202.216.229.30は8台中5台がオープンリゾルバでした。version.bindを信じるのであれば、202.216.224.30と同様、ソースからコンパイルしたbindはちゃんとしていて、RHELのパッケージを使っているbindはオープンリゾルバのようです。

<th>
  Real server
</th>

<th>
  Open Resolver
</th>

<th>
  Version bind
</th>
<td>
  202.216.229.6
</td>

<td>
  Yes
</td>

<td>
  9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1
</td>
<td>
  202.216.229.10
</td>

<td>
  Yes
</td>

<td>
  9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1
</td>
<td>
  202.216.229.11
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.229.13
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.229.14
</td>

<td>
</td>

<td>
  9.10.0-P1
</td>
<td>
  202.216.229.41
</td>

<td>
  Yes
</td>

<td>
  9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1
</td>
<td>
  202.216.229.135
</td>

<td>
  Yes
</td>

<td>
  9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1
</td>
<td>
  202.216.229.146
</td>

<td>
  Yes
</td>

<td>
  9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1
</td>

雑感

  • ロードバランサの配下に置くサーバは、設定を合わせた方がいいと思います。。。
  • DNSサービスって、リアルサーバが沢山必要なのね。。。
  • BINDのバージョンをあわせないのは、脆弱性対策なのかなあ。。。全部同じバージョンだと、ひとつの脆弱性で全部死ぬから。
  • でも、全部BINDだから、新BINDコロリが出たら全滅だよなぁ。。。
  • LBの配下で異なるキャッシュDNSサーバ(e.g.unboundとBIND)を動かすと強いDNSサービスが作れそう。