自宅のサーバーでは、独自ドメインを利用していくつかのサーバーを起動しているが、自宅内の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リゾルバーを見つけるためのパフォーマンス測定方法と「DNS Performance test」
- DNS over TLS/HTTPSについて考える | IIJ Engineers Blog
- DNS over HTTPS(DoH)対応のDNSサービスの一覧 | ハルパス