JavaScript が無効になっているよ!

ローカルのDNSサーバー CentOS 8

 ·  ☕ 2 分(読了時間)  ·  🐨 Puliyo

目的

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
シェア
支援