1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自宅にUnboundでDNSサーバを建ててみた

Posted at

はじめに

この前自宅を大掃除し、使っているサーバ群を整理しました。このサーバもある程度数が殖えてきて、IPアドレスだけだとどれがどれだか分からなくなってきました。

そこで、自宅にDNSサーバを建ててみることにしました。こうすることで、IPアドレスではなく意味を持たせた文字列でサーバにアクセスできるようになり、区別や管理がしやすくなるはずです。

やったこと

今回は、UnboundというDNSサーバを使ってDNSサーバを建ててみました。使用したOSはUbuntu 24.04 LTSです。

Unboundのインストール

まずはUnboundをインストールします。

sudo apt update
sudo apt install unbound

Unboundの設定

次にUnboundの設定を行います。

sudo nano /etc/unbound/unbound.conf

以下のように設定します。

server:
    # ログ出力ファイルの設定
    logfile: "/var/log/unbound.log"

    # ログ出力先にsyslogを使用しない
    use-syslog: no

    # エラーと操作情報を出力
    verbosity: 1

    # リクエストの受付
    interface: 0.0.0.0
    interface: ::0

    # アクセスを許可
    access-control: 0.0.0.0/0 refuse
    access-control: xxx.xxx.xxx.0/24 allow
    access-control: 127.0.0.1 allow

    # ローカルネットワークのリクエストを受け付ける
    domain-insecure: "home"

    # 対応を正引きと逆引きの両方記述する
    local-data: "hogefoo.home. IN A xxx.xxx.xxx.1"
    local-data-ptr: "xxx.xxx.xxx.1 hogefoo.home"

# フォワーダーの設定
forward-zone:
    name: "."
    forward-addr: 10.32.10.1

xxx.xxx.xxx.0/24は自宅のネットワークアドレスに置き換えてください。まず全てを拒否し、その後自宅のネットワーク内のみアクセスを受け付けるという流れです。

また、自分が自分を呼び出せるように、ローカルホストのアクセスも許可しておきます。

変換はサーバの数だけ書きます。ドメイン名→IPアドレスを書くときにはドメイン名の末尾に.をつけることに注意してください。

.comみたいなところは適当に決めることができますが、実在するドメイン名との競合を避けるため、自宅ならhome、会社ならcompanyなどにしておくとよいでしょう。

自分は[業務内容].[苗字].homeという形にしています。これでサーバの区別がつきやすくなりました。

Unboundの起動

Unboundは他のDNSサーバと競合する可能性があります。そのため、他のDNSサーバを停止しておきます。

sudo nano /etc/systemd/resolved.conf

以下のように設定します。

DNSStubListener=no

設定を変更したら再起動します。

sudo systemctl restart systemd-resolved

また、Unboundはデフォルトで53番ポートを利用しているので、ファイアウォールを設定している場合は導通させておきます。

sudo ufw allow 53
sudo ufw enable

ここまでできたら、Unboundを再起動します。

sudo systemctl restart unbound

Unboundの動作確認

Unboundが正しく動作しているか確認します。

nslookup hogefoo.home localhost

以下のような結果が返ってくれば成功です。

Server:         localhost
Address:        127.0.0.1#53

Name:   hogefoo.home
Address: xxx.xxx.xxx.1

クライアント側での設定

DNSサーバを立てたはいいものの、これだけではクライアントが名前解決をしてもらうことができません。なので、クライアント側でDNSサーバを設定します。

今回はWindowsの場合について説明します。Mac等の場合も似たような手順で設定できるはずです。

まず、ネットワークとインターネットの設定を開きます。「ネットワークと共有センター」を開いて、接続しているネットワークをクリックします。「プロパティ」をクリックし、プロパティを開きます。

一覧から「インターネット プロトコル バージョン 4 (TCP/IPv4)」を選択し、「プロパティ」をクリックします。

「次の DNS サーバー アドレスを使用する」を選択し、プライマリDNSサーバにUnboundをインストールしたサーバののIPアドレスを入力します。

これでクライアント側での設定は完了です。

pingコマンドなどで名前解決ができるか確認してみてください。Webブラウザでhttpを使ってアクセスしてみてもいいでしょう。

わからなかったこと

建てたDNSサーバをクライアント側でセカンダリDNSとして設定すると、名前解決ができなくなりました。

また、建てたものをプライマリ、元々のデフォルトゲートウェイのDNSをセカンダリに設定すると、名前解決ができたりできなかったりしました。

そのため、先述したように今回建てたDNSサーバをプライマリとし、セカンダリの設定はしませんでした。

なんでかわからなかったのですが、先述の通り建てたDNSサーバは名前解決ができなかったときに、デフォルトゲートウェイのDNSに問い合わせるようになっているので、この設定でも問題ないようです。

おわりに

これで自宅にDNSサーバを建てることができました。利用のためにはクライアント側でDNSサーバを設定する必要がありますが、これで自宅のサーバを管理しやすくなりました。

できればデフォルトゲートウェイとなっているルータの設定を変更し、名前解決したいサーバのIPアドレスを登録する形にしてクライアント側での設定を不要にしたかったのですが、そういった設定ができないルータだったようで、仕方なく今回のような形としました。

サーバが増えてきたら、アクセスの利便性のためにもDNSサーバを建てることをおすすめします。

それではまた。

参考文献

Unboundで自宅のLAN内の名前解決がしたい #Linux - Qiita

奥が深いDNSサーバーとdigコマンド #dns - Qiita

第834回 Unboundでお手軽に家庭内DNSサーバーを作ろう[Ubuntu 24.04 LTS対応版] | gihyo.jp

unbound | 基本設定 | メモ

DNSキャッシュサーバ(unbound)が動作しない

unbound-control(8) | 日本Unboundユーザー会

Unbound on CentOS7でローカルDNSサーバを構築してみる - ニートのMEMO

DNSキャッシュサーバーの構築 – nkmtの日記

俺様サーバー構築記 - LAN内DNSサーバー Unbound @デスクトップパソコン(BIOS) #dns - Qiita

Unboundで内向きDNSを建てる | なうびるどいんぐ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?