はじめに
仮想開発環境に簡単なDNSが欲しくなったので、dnsmasqでさっくりDNSを構築することにした
構成
- OS : CentOS 7.6.1810 x86_64
- MW : dnsmasq
構築
- Server
以下の環境設定で作るものとする
サーバ名 | IP アドレス | FQDN |
---|---|---|
dns-server | 10.2.0.5 | dns-server.localdomain.local |
サーバ名 | リゾルバ IP | 設定ファイル | 用途 |
---|---|---|---|
dns-server | 127.0.0.1 | /etc/resolv.conf | ローカルドメイン名前解決 / キャッシュ |
dns-server | 10.2.0.5 | /etc/resolv_dnsmasq.conf | グローバル名前解決 |
- Dnsmasq Install
sudo yum install -y dnsmasq bind-utils
- 基礎設定
vim /etc/dnsmasq.conf
#上位DNSへの設定
resolv-file=/etc/resolv_dnsmasq.conf
strict-order
#ゾーン設定(複数ドメインがある場合はここに追記)
# -> localdomain.local ドメインは 10.2.0.5 に問い合わせる。
server=/localdomain.local/10.2.0.5
# -> 10.2.0.xxxの逆引きは 10.2.0.5 に問い合わせる。
server=/0.2.10.in-addr.arpa/10.2.0.5
#log出力
log-facility=/var/log/dnsmasq.log
- localの名前解決用(自身の名前解決を自身でやるので、lo(127.0.0.1)を指定)
vim /etc/resolv.conf
domain localdomain.local
nameserver 127.0.0.1
- local以外の名前解決用(ダイレクトにグローバルのパブリックDNSを設定)
/etc/resolv_dnsmasq.conf
# 上位ISPのDNSサーバ
nameserver 1.1.1.1
nameserver 8.8.8.8
- 静的ルートを設定する場合(nmcliやipで設定するのが今風、以下は昔ながらの方法)
以下の設定は、10.2.0.0/24
へ行きたいときには、dns-server
側の eth1
を通って、10.2.0.0/24
のデフォルトゲートウェイである 10.2.0.5
へ行ってという意味です。
vim /etc/sysconfig/static-routes
any net 10.2.0.0 netmask 255.255.255.0 gw 10.2.0.5 dev eth1
- 名前解決設定
### 自身の設定はIP アドレス FQDN HOST名で必ず設定
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
10.2.0.5 dns-server.localdomain.local dns-server
### 以下名前解決設定
10.2.0.6 virt.localdomain.local virt-server
- 適用
systemctl restart dnsmasq
- クライアント側からの利用
基本的には、上で作ったDNSサーバをDNSとして登録すればいいだけです
vim /etc/resolv.conf
search localdomain.local
nameserver 10.2.0.5
- 設定したら確認
virt.localdomain.local
として作ったサーバから、問い合わせてみる
dig +short virt.localdomain.local
> 10.2.0.6
dig +short -x 10.2.0.6
> virt.localdomain.local
dig +short www.google.com
> 172.217.26.4
ちゃんとローカルもグローバルもひけていればOK、なお、キャッシュされるので、2回目以降は早くアクセスできるはず。
最後に
Windowsデスクトップなどの場合は一々設定が面倒だと思いますので、DHCPサーバ
やルータ
にデフォルトDNSとして登録すると良いでしょう。Linuxでも個人利用などの場合は、同様にすると良いです。
この構成はあくまで、覚書なので参考までにどうぞ