Introduction

Synology の NAS サーバで DNS を動かしているのだが、正引気くらいしか使っていないのと設定が GUI だけしかなくて追加が面倒、ベンダーロックでつぶしが効かない、ということで DNS サーバを別途用意することに決めた。
Alpine Linux にしたのは軽量だったから。

Description

全て root で実施している。

1. dnsmasq のインストール

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ apk add dnsmasq
(1/3) Installing dnsmasq-common (2.91-r0)
(2/3) Installing dnsmasq-openrc (2.91-r0)
(3/3) Installing dnsmasq (2.91-r0)
Executing dnsmasq-2.91-r0.pre-install
Executing busybox-1.37.0-r19.trigger
OK: 88 MiB in 73 packages
$ rc-update add dnsmasq default
* service dnsmasq added to runlevel default
$ rc-service dnsmasq start
* Caching service dependencies ... [ ok ]
* /var/lib/misc/dnsmasq.leases: creating file
* /var/lib/misc/dnsmasq.leases: correcting owner
* Starting dnsmasq ...

続いて /etc/dnsmasq.conf を設定。
dnsmasq をインストールした DNS サーバをプライマリにし、外部のドメインの解決はインターネット回線に繋がっているルータにフォワードするようにしている。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# ローカルゾーン定義
- #local=/localnet/
+ local=/

# ローカル名は外部にフォワードしない
- #domain-needed
+ domain-needed
- #bogus-priv
+ bogus-priv

# ローカル名の定義
- addn-hosts=/etc/dnsmasq.d/hosts.local
+ addn-hosts=/etc/dnsmasq.d/hosts.local

# ローカルドメイン
- #domain=thekelleys.org.uk
+ domain=xxxxxx.arpa

# 別のルータにフォワード
- #no-resolv
+ no-resolv
- server=/localnet/192.168.0.1
+ server=192.168.11.1

- #cache-size=150
+ cache-size=0
- #no-negcache
+ no-negcache

2. ローカルのドメイン設定

いわゆる hosts ファイル。
dnsmasq/etc/dnsmasq.d の配下に hosts ファイルを配置していく。
先の設定ファイル内の addn-hosts で指定した、/etc/dnsmasq.d/hosts.local を作成する。

1
2
192.168.11.107  snipeit.xxxxxx.local
192.168.11.108 gitlab.xxxxxx.local

設定後、dnsmasq を再起動 (不要かも)。

1
$ rc-service dnsmasq restart

3. 動作確認

DNS クライアントの DNS サーバ制定設定を変更し、名前解決ができているかを確認。
(もし、hosts ファイルを編集していたなら記述は削除しておく)

下記は Windows からの確認。

1
2
3
4
5
6
$ nslookup gitlab.xxxxxx.local
Server: UnKnown
Address: 192.168.11.115

Name: gitlab.xxxxxx.local
Address: 192.168.11.108

問題なく解決できている。

最終的に、DNS サーバのリソース消費は

  • ストレージ: 1 GB 未満
  • RAM: 600 MB
  • CPU: 100 MHz

と超低スペックで済んだ。