目的
前回構築したunboundで、ログの出力をしてほしいという要望があった。
今回はログを出力させる方法を紹介する。
構築
unbound.conf
以下を変更
use-syslog: no
log-queries: no
この様に変更する
logfile: "/etc/unbound/log/unbound.log"
use-syslog: no
log-queries: yes
log-time-ascii: yes
最終的に以下の様になった
server:
# Send minimum amount of information to upstream servers to enhance
# privacy. Only sends minimum required labels of the QNAME and sets
# QTYPE to NS when possible.
# See RFC 7816 "DNS Query Name Minimisation to Improve Privacy" for
# details.
# qname-minimisation: yes
# allow local address
access-control: 0.0.0.0/0 allow
# listen interface
interface: 0.0.0.0
# hide version
hide-version: yes
hide-identity: yes
logfile: "/etc/unbound/log/unbound.log"
use-syslog: no
log-queries: yes
log-time-ascii: yes
local-data: "www.tmcit.sho IN A 172.24.20.25"
# local-data: "fuga.example.com. IN A 172.16.0.2"
# local-data: "foo.example.com. IN A 172.16.0.3"
# local-data: "bar.example.com. IN A 172.16.0.4"
#forward-zone:
# name: "example.org."
# forward-addr: 192.168.10.5
forward-zone:
name: "."
forward-addr: 8.8.8.8
forward-addr: 8.8.4.4
forward-addr: 172.24.2.51
Dockerfile
docker-logはlogのローテーション設定ファイル
ログ系のフォルダやファイルはunboundが所有者にならないといけないので権限調整を行う
FROM almalinux:latest
RUN yum -y update && yum -y install unbound
ADD unbound.conf /etc/unbound/
ENV TZ=Asia/Tokyo
ADD docker-log /etc/logrotate.d/
RUN mkdir -p /etc/unbound/log/
RUN chmod 777 /etc/unbound/log/ && \
chown unbound:unbound /etc/unbound/log/ && \
touch /etc/unbound/log/unbound.log && \
chmod 777 /etc/unbound/log/unbound.log && \
chown unbound:unbound /etc/unbound/log/unbound.log && \
chmod 644 /etc/logrotate.d/*
ENTRYPOINT ["/usr/sbin/unbound","-d","-c","/etc/unbound/unbound.conf"]
ログローテーション
docker-log
/etc/unbound/log/unbound.log { # 対象のログファイル
ifempty # ログファイルが空でもローテーションする
dateformat .%Y%m%d # dateフォーマットを任意のものに変更する
missingok # ログファイルがなくてもエラーを出さない
compress # 圧縮する
rotate 10 # 10世代分古いログを残す
postrotate # ローテート後にsyslogを再起動
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
docker-compose.yml
今回は事前にdocker volume create
コマンドを用いて、unboundボリュームを作成しているため、externalオプションをtrueにしている。ここを指定しなければdocker-composeが自動的にボリュームを作成する。
version: "3.9"
services:
unbound:
build: .
image: unbound-alma:1.0.0
container_name: unbound
tty: true
networks:
vlan0:
ipv4_address: 172.24.20.205
volumes:
- unbound:/etc/unbound/log/
networks:
vlan0:
name: vlan0
driver: macvlan
driver_opts:
parent: enp1s0
ipam:
config:
- subnet: 172.24.20.0/24
gateway: 172.24.20.254
volumes:
unbound:
external: true
ホストから確認
dockerのvolumeは/var/lib/docker/volumes/
以下に格納されている。
/var/lib/docker/volumes/unbound/_data/unbound.log
root@shoma:/home/shoma/dns# cat /var/lib/docker/volumes/unbound/_data/unbound.log
Jul 26 16:20:19 unbound[1:0] notice: init module 0: subnetcache
Jul 26 16:20:19 unbound[1:0] notice: init module 1: validator
Jul 26 16:20:19 unbound[1:0] notice: init module 2: iterator
Jul 26 16:20:19 unbound[1:0] info: start of service (unbound 1.16.2).
Jul 26 16:22:38 unbound[1:0] info: 172.24.20.16 205.20.24.172.in-addr.arpa. PTR IN
Jul 26 16:22:38 unbound[1:0] info: 172.24.20.16 google.com. A IN
Jul 26 16:22:40 unbound[1:0] info: 172.24.20.16 google.com. AAAA IN
Jul 26 16:22:52 unbound[1:0] info: 172.24.20.16 205.20.24.172.in-addr.arpa. PTR IN
Jul 26 16:22:52 unbound[1:0] info: 172.24.20.16 google.com. A IN
Jul 26 16:22:52 unbound[1:0] info: 172.24.20.16 google.com. AAAA IN
Jul 26 16:22:55 unbound[1:0] info: 172.24.20.16 205.20.24.172.in-addr.arpa. PTR IN
Jul 26 16:22:55 unbound[1:0] info: 172.24.20.16 www.tmcit.sho. A IN
Jul 26 16:22:56 unbound[1:0] info: 172.24.20.16 www.tmcit.sho. AAAA IN
Jul 26 16:22:56 unbound[1:0] info: 172.24.20.16 205.20.24.172.in-addr.arpa. PTR IN
Jul 26 16:22:56 unbound[1:0] info: 172.24.20.16 www.tmcit.sho. A IN
Jul 26 16:22:56 unbound[1:0] info: 172.24.20.16 www.tmcit.sho. AAAA IN
Jul 26 16:22:57 unbound[1:0] info: 172.24.20.16 205.20.24.172.in-addr.arpa. PTR IN
Jul 26 16:22:57 unbound[1:0] info: 172.24.20.16 www.tmcit.sho. A IN
Jul 26 16:22:57 unbound[1:0] info: 172.24.20.16 www.tmcit.sho. AAAA IN