2019年7月31日水曜日

docker で dnsmasq を構築する

概要

前回 Ubuntu 上に dnsmasq を構築してみました
今回は docker コンテナとして dnsmasq を構築してみたいと思います

環境

  • Ubuntu 16.04
  • docker 18.09.8
  • dnsmasq

イメージ

andyshinn/dnsmasq を使います
おそらくこれが一番無難なはず、、

コンテナ起動

基本的な使い方はすべて引数でコントロールする点です
/etc/dnsmasq.conf に記載できる内容はすべて引数で指定可能です
例えば前回と同じ内容で起動する場合は

  • docker run -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN andyshinn/dnsmasq -D -b --local=/vagrant.local/ -E --domain=vagrant.local

という感じで起動します

  • -D・・・domain-needed
  • -b・・・bogus-priv
  • --local・・・local=/vagrant.local/
  • -E・・・expand-hosts
  • --domain・・・domain=vagrant.local

になります
そして A レコードを登録する場合は更に引数に -A を使います

  • docker run -d -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN --name dns andyshinn/dnsmasq -D -b --local=/vagrant.local/ -E --domain=vagrant.local -A /mac/172.28.128.1 -A /mac.vagrant.local/172.28.128.1

DNS クライアントから動作確認

  • dig mac @172.28.128.3
  • dig mac.vagrant.local @172.28.128.3

どちらでも引けるはずです

CNAME は

これもオプションを追加します
--cname を使います
また cname の場合は /etc/hosts への記載が必要になるので -A ではなく docker の --add-host オプションを使います

  • docker run -d -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN --name dns --add-host=mac:172.28.128.1 --add-host=mac.vagrant.local:172.28.128.1 andyshinn/dnsmasq -D -b --local=/vagrant.local/ -E --domain=vagrant.local --cname=alt-mac,mac

これで CNAME も引けるようになります

  • dig alt-mac @172.28.128.3

冷静に考えると A, AAAA レコードは --add-host オプションを使うのが良いと思います

最後に

docker で dnsmasq を動かしてみました
ポイントは設定ファイルではなくすべてオプションで指定するという点です
オプションがわからない場合は dnsmasq --help あたりで調べられます
help で表示されるオプションはすべて docker でも指定可能です

設定ファイルも当然あるのですがそれよりもオプションで変更できるほうを推奨しているようです

  • docker exec dns ls /etc/dnsmasq.conf

参考サイト

0 件のコメント:

コメントを投稿