開発環境に DNS キャッシュサーバーが欲しかったので、Docker で unbound を構築してみたメモです。
Dockerfile
Alpine Linux のイメージをもとに unbound をインストールしたイメージを作成します。
DNS で使用する TCP と UDP の53番ポートを EXPOSE しています。
1 2 3 4 5 6 7 8 9 10 11 12 13
| FROM alpine
RUN apk update \ && apk upgrade \ && apk add --no-cache \ unbound \ && rm -rf /var/cache/apk/*
RUN unbound-checkconf
EXPOSE 53:53 EXPOSE 53:53/udp CMD ["tail", "-f", "/dev/null"]
|
docker-compose.yml
Docker Compose で制御できるように、docker-compose.yml ファイルも作製しました。
1 2 3 4 5 6 7 8 9 10
| version: '3.0' services: unbound: build: ./unbound ports: - "53:53" - "53/udp:53/udp" volumes: - ./conf:/etc/unbound command: /usr/sbin/unbound -d -c /etc/unbound/unbound.conf
|
conf/unbound.conf
unbound の設定ファイルです。
- 192.18.1.0/24 ネットワークからの要求に対応
- wp.example.com の問合せに 192.168.1.80 と回答する。
- それ以外の問合せは上位に転送
1 2 3 4 5 6 7 8 9 10 11 12 13
| server: interface: 0.0.0.0 access-control: 192.168.1.0/24 allow verbosity: 1 do-ip4: yes do-ip6: no
local-data: "wp.example.com. IN A 192.168.1.80" local-data-ptr: "192.168.1.80 wp.example.com." root-hints: "/etc/unbound/root.hints" forward-zone: name: "." forward-addr: 8.8.8.8
|
root.hints
ヒントファイルは定期的に更新されるので、cron で取得したいところですが、簡易に運用したいので今回は手作業で取得しました。
1
| $ curl -o root.hints https://www.internic.net/domain/named.cache
|