目的
dnsmasq を使い、ローカルのDNSサーバーをCentOS 8に作成して、puliyo.lan
をサブドメイン含み名前解決できるようにする。
手順
1. dnsmasqをインストール
yum install dnsmasq
2. /etc/dnsmasq.conf を編集
こんな感じに設定:
# '.' を含まないドメインをアップストリームに流さないようにする
domain-needed
# プライベートアドレスをアップストリームに流さないようにする
bogus-priv
# アップストリームDNSサーバーはここに書かれているものを使用
resolv-file=/etc/resolv.dnsmasq
user=dnsmasq
group=dnsmasq
# このマシンでしか使わないのでローカルアドレスを指定
listen-address=127.0.0.1
bind-interfaces
# /etc/hosts は使わない
no-hosts
# いくつの名前をキャッシュするか
cache-size=150
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig
そのほかオプションや詳細はここを見てね。
3. 他の必要なファイル作成
*.puliyo.lan
を名前解決できるように定義を /etc/dnsmasq.d/ の下に置いたファイルに記述(ファイル名はなんでもよい)
# cat /etc/dnsmasq.d/puliyo.lan.conf
address=/puliyo.lan/127.0.0.1
ローカルで名前解決できない場合アップストリームDNSサーバーに流すので、アップストリームDNSサーバーはどこにあるのか /etc/resolv.dnsmasq を作成して dnsmasq に教えてあげる。
基本的に、/etc/resolv.conf と同じでよい。
cp /etc/resolv.conf /etc/resolv.dnsmasq
4. /etc/resolv.conf を編集
ローカルのDNSサーバー(dnsmasq)を使うように編集
# cat /etc/resolv.conf
nameserver 127.0.0.1
5. NetworkManager が /etc/resolv.conf を上書きしないようにする
NetworkManager のサービスが再起動すると /etc/resolv.conf を自動に再作成してしまうのでそうさせないようにする。
いずれかの方法で実現可能:
/etc/NetworkManager/NetworkManager.conf の
[main]
の下にdns=none
を追加/etc/sysconfig/network-scripts/
に PEERDNS=no
を追加resolve.conf 自体を更新できないようにする
chattr +i /etc/resolv.conf
6. サーバーを起動して動作テスト
サーバー起動
systemctl start dnsmasq
ローカルのドメインとパブリックのドメインを名前解決できるかテスト
# dig +short hello.puliyo.lan
127.0.0.1
# dig +short puliyo.lan
127.0.0.1
# dig +short www.google.com
74.125.142.99
74.125.142.106
74.125.142.105
74.125.142.104
74.125.142.147
74.125.142.103