Dnsmasq とは

Dnsmasq の存在を知らない方が結構いるようで。。これ、うまく使えばかなり便利です。

Dnsmasq は、1,000クライアント以下の小規模ネットワーク環境向けに開発された軽量 DNS サーバです。

特に、セキュリティ的に保護されている環境内のローカルネットワーク向けの内部 DNS として使われます。

Dnsmasq で出来ること

Dnsmasq の大きなメリットとしては、以下があります。

  • BIND に比べて手軽に・簡単に DNS サーバ構築が可能
  • レコードの登録・管理方法がとてもとてもシンプル
  • 内部 DNS に加え、外部 DNS を参照することも可能
  • キャッシュ機能を備えているので、外部 DNS の負荷軽減に貢献できる
  • DNS 機能以外にも、DHCP・TFTP サーバとして構築することも可能

なんだか難しそうな BIND を構築するまでもない DNS 環境がほしいときには、Dnsmasq で簡単に DNS サーバを構築することが可能です。

レコードの登録・管理は、全て /etc/hosts ファイルによって行われます。

単純に /etc/hosts を開いて IP アドレスと FQDN を登録するたけで済むので、とても管理しやすい利点がありますが、逆に /etc/hosts が外に漏れたり、第三者に見られたりするとセキュリティ的に良くないので、気をつける必要があります。

設定によっては 内部 DNS 以外にも、特定ドメインに対して別環境上にある DNS サーバに問い合わせることも可能です。

そして、キャッシュ機能も備えているので、外部 DNS の負荷を減らすことも可能です。

また、Dnsmasq は DNS 機能以外にも DHCP サーバ、TFTP サーバとして動かすことが出来ます。

終わりに

セキュリティ的に保護されている社内ネットワーク向けの小規模 DNS を建てたい場合には、Dnsmasq で簡単に構築・管理できるので便利ではないかと思います。

私は、主に以下の目的で Dnsmasq を使っています。

  • 複数のサーバ、もしくは仮想マシン間の連携が必要な検証環境構築時に
  • 上記、検証環境の名前解決に加え、社内向け DNS サーバへ問い合わせる時に
  • 社内 DNS に名前を登録する必要はないが、自分用に名前登録がほしい時に
  • UDP 53番ポートのロードバランサー検証時に (BIND を構築するまでもない)
  • FQDN が登録されてないと動かない特殊なアプリケーションのインストール時に

OpenStack を勉強している方へ

Dnsmasq は、OpenStack のネットワークノード上で動いています。

コンピュートノードでインスタンスを作成するとネットワークノードの Dnsmasq によってインスタンスの DHCP IP アドレスが払い出されるようになっています。

OpenStack を勉強している方は、Dnsmasq の動きを理解し、OpenStack 内部の動きを少しでも把握できるように、Dnsmasq を一回構築してみることをオススメします。

また、公式ドキュメントでは、新しいノード・コンポネントを追加するたびに、既存のノードを含めて、全てのノード上の /etc/hosts ファイルに FQDN を登録するようになっていて、ノード数が増えれば増えるほど、本当に面倒くさくて非効率的です。

最初から Dnsmasq 一台構築しておけば、後々便利なので、一台用意しておくことをオススメします。

Dnsmasq は、使い方色々ありますので、皆さんも是非活用して見てください。

以上、Dnsmasq とは でした。