DnsmasqをDockerで起動する

* 本ページはプロモーションが含まれています

自宅のサーバーでは、独自ドメインを利用していくつかのサーバーを起動しているが、自宅内のLANからだと、ルータを通るため、独自ドメインでのアクセスでは自宅内のサーバーへ到達出来ない

この記事を参考にした方がわかりやすいです

PCや端末が少ない場合は、dnsmasqを導入しなくても、それぞれhostsファイルに記述しても良いが、hostsファイルを一箇所で管理したい目的もあり、LAN内にDNSサーバーのdnsmasqをDockerで構築した

構成 

$ tree
.
├── dnsmasq.conf
├── docker-compose.yml
└── hosts-dnsmasq

hostsファイルを別ファイルにする 

hosts-dnsmasqを作成し、記述していく

192.168.1.1    test1.example.com
192.168.1.1    test2.example.com
192.168.1.1    test3.example.com
192.168.1.1    test4 foo bar

docker-compose 

起動と確認 

$ docker-compose up -d
$ dig @127.0.0.1 test1.example.com
...
;; ANSWER SECTION:
test1.example.com.	0	IN	A	192.168.1.1

ANSWER SECTIONで、hosts-dnsmasqで作成した内容が表示されるか確認しましょう

  • hosts-dnsmasqを変更したらdocker-compose restartしないと反映しない
  • dnsmasq.confを変更したらdocker-compose restartで再起動
    もし、反映されない場合はdocker-compose down;docker-compose up -dで起動

dnsmasqの内容 

# デフォルトの/etc/hostsをDNSのレコードとして使用しない
no-hosts

# /etc/resolv.confを無視
no-resolv

# ドメインの無いホストで問い合わせがあった際に上位 DNSにフォワード(転送) しない
domain-needed

# プライベート IP は上位DNSにフォワード(転送) しない
bogus-priv

# ローカルドメイン設定
local=/local.net/

# ドメイン自動補完 :「domain=」にドメインが設定された場合に有効
expand-hosts
domain=local.net

# ログ出力と保存先
log-querie
log-facility=/var/log/dnsmasq/dnsmasq.log

# dnsmasqでキャッシュするレコード数。0にするとキャッシュしない
cache-size=0

# 172.17.0.0/24の逆引きは127.0.0.1に問い合わせる
server=/0.168.192.in-addr.arpa/127.0.0.1
server=/google.com/8.8.8.8
# ↑以外は上位のDNSサーバに問い合わせ
strict-order
# 上位のDNSサーバを書いておく。書式はresolv.confと同じ
resolv-file=/etc/dnsmasq.resolv.conf

注意点 

上位DNSを設定する場合は、必ずDNS over HTTPS(DoH)対応のPublicDNSを利用しましょう!

参考(DNS over TLS、PublicDNS) 

dns