2019年7月30日火曜日

Ubuntu で dnsmasq に入門してみた

概要

dnsmasq は軽量な DNS サーバです
他の有名な DNS ソフトウェアに bind などがありますが bind のような複雑な知識がなくても簡単に導入できます
今回は Ubuntu 上で dnsmasq を構築してみました

環境

  • Ubuntu 16.04 LTS
  • dnsmasq 2.75

インストール

  • sudo apt -y install dnqmasq

Ubuntu の場合は systemctl でデーモンを制御できるようになります
インストールされたファイルの一覧は以下の通りです

  • dpkg -L dnsmasq
/. /usr /usr/lib /usr/lib/resolvconf /usr/lib/resolvconf/dpkg-event.d /usr/lib/resolvconf/dpkg-event.d/dnsmasq /usr/share /usr/share/doc /lib /lib/systemd /lib/systemd/system /lib/systemd/system/dnsmasq.service /etc /etc/insserv.conf.d /etc/insserv.conf.d/dnsmasq /etc/resolvconf /etc/resolvconf/update.d /etc/resolvconf/update.d/dnsmasq /etc/default /etc/default/dnsmasq /etc/init.d /etc/init.d/dnsmasq /etc/dnsmasq.d /etc/dnsmasq.d/README /etc/dnsmasq.conf /usr/share/doc/dnsmasq

設定

/etc/dnsmasq.conf を変更します
とりあえず最低限の設定だけ記載します

  • sudo vim /etc/dnsmasq.conf
domain-needed
bogus-priv
local=/vagrant.local/
expand-hosts
domain=vagrant.local

内部で使用するドメインは「vagrant.local」にしたいと思います

A レコードを登録する

dnsmasq は /etc/hosts に IP アドレスとホスト名の組み合わせを記載することで A レコードの登録になります
また IPv6 用の AAAA レコードも /etc/hosts に記載します

  • sudo vim /etc/hosts
127.0.1.1 vm03
172.28.128.2 vm02.vagrant.local vm02
172.28.128.3 vm03.vagrant.local vm03
172.28.128.4 vm04.vagrant.local vm04
172.28.128.5 vm05.vagrant.local vm05

ちなみに dnsmasq をインストールしたのは vm03 になります
今回は Vagrant 上で動作させており .1 は mac になるのでそれも登録しました
あとは必要に応じて適当に登録してください

DNS をクライアントで確認

今回は dig コマンド実行時に構築した DNS サーバを指定して名前から IP アドレスが引けるか確認します
dig の場合は @ のあとに DNS サーバを指定すれば OK です

  • dig mac @172.28.128.3
; <<>> DiG 9.10.6 <<>> mac @172.28.128.3 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2261 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1   ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1280 ;; QUESTION SECTION: ;mac. IN A   ;; ANSWER SECTION: mac. 0 IN A 172.28.128.1   ;; Query time: 0 msec ;; SERVER: 172.28.128.3#53(172.28.128.3) ;; WHEN: Tue Jul 30 11:48:38 JST 2019 ;; MSG SIZE rcvd: 48

ちなみに今回はローカルドメイン以外の検索はしないので例えば www.google.com のようなレコードは引けません

  • dig www.google.com @172.28.128.3
; <<>> DiG 9.10.6 <<>> www.google.com @172.28.128.3 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 7891 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0   ;; WARNING: EDNS query returned status FORMERR - retry with '+noedns'   ;; QUESTION SECTION: ;www.google.com. IN A   ;; Query time: 2 msec ;; SERVER: 172.28.128.3#53(172.28.128.3) ;; WHEN: Tue Jul 30 11:50:59 JST 2019 ;; MSG SIZE rcvd: 32

いちいちアットマークで指定するのも面倒なので普通は /etc/resolv.conf やネットワークの設定ファイルに記載します

PTR (逆引き) もできる

特に何も PTR 用のレコードは設定しませんでしたが引けました

  • dig -x 172.28.128.1 @172.28.128.3
; <<>> DiG 9.10.6 <<>> -x 172.28.128.1 @172.28.128.3 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16109 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1   ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1280 ;; QUESTION SECTION: ;1.128.28.172.in-addr.arpa. IN PTR   ;; ANSWER SECTION: 1.128.28.172.in-addr.arpa. 0 IN PTR mac.vagrant.local.   ;; Query time: 0 msec ;; SERVER: 172.28.128.3#53(172.28.128.3) ;; WHEN: Tue Jul 30 11:54:49 JST 2019 ;; MSG SIZE rcvd: 85

おまけ: CNAME を登録してみる

CNAME や MX レコードも登録できるようです
CNAME の場合は以下のような設定を追記してあげれば OK です

  • sudo vim /etc/dnsmasq.conf
domain-needed
bogus-priv
local=/vagrant.local/
expand-hosts
domain=vagrant.local
cname=alt-vm04,vm04

設定ファイルや hosts ファイルを変更した場合はプロセスを再起動してあげる必要があります

  • sudo systemctl restart dnsmasq

確認すると以下のような感じで返ってきました

  • dig alt-vm04 @172.28.128.3
; <<>> DiG 9.10.6 <<>> alt-vm04 @172.28.128.3 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21908 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1   ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1280 ;; QUESTION SECTION: ;alt-vm04. IN A   ;; ANSWER SECTION: alt-vm04. 0 IN CNAME vm04. vm04. 0 IN A 172.28.128.4   ;; Query time: 0 msec ;; SERVER: 172.28.128.3#53(172.28.128.3) ;; WHEN: Tue Jul 30 11:57:46 JST 2019 ;; MSG SIZE rcvd: 71

最後に

Ubuntu で dnsmasq に入門してみました
導入自体はかなり簡単に行えます
あとはこの DNS サーバを外部向けに公開する作業が必要になるかと思います
ルータの DNS 設定に登録したり DHCP サーバの配布設定に入れるのが良いかと思います
また今回は主に内部向けの DNS サーバを構築しましたが外部 DNS として公開する場合はドメインを取得したサービスに DNS を登録したりするのが必要になります

参考サイト

0 件のコメント:

コメントを投稿