3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

技術検証:MacBook上でBINDを用いたDNSサーバーの構築と名前解決の検証

Last updated at Posted at 2024-10-30

はじめに

MacBook上でBINDを利用してDNSサーバーを構築する方法について説明します。

BINDは多くのOSで使用可能なDNSサーバーソフトウェアであり、macOSでもHomebrewを用いることで簡単にインストールおよび設定が可能です。

過去の記事では、Windows ServerでDNSサーバーを構築し、名前解決の検証を行っていますので、興味のある方は参考にしてみてください。

知識整理

DNSとは

DNS(Domain Name System)は、ドメイン名とIPアドレスを相互に変換するシステムです。

インターネット上のホストやサービスに人間がわかりやすい名前(例:example.com)を与え、それをIPアドレスに変換することでアクセスを容易にしています。

BINDとは

BIND(Berkeley Internet Name Domain)は、UNIX系OS向けに開発されたDNSサーバーソフトウェアで、DNSサーバーとして最も広く利用されています。

BINDを使用することで、独自のDNSサーバーを立てることができ、ローカル環境や内部ネットワークなどでの名前解決にも役立ちます。

構築手順

HomebrewでBINDをインストール

MacでBINDをインストールするには、Homebrewを使うと簡単です。以下のコマンドでインストールを行います。

brew install bind

実際のインストール中の画面は以下の通りです。

スクリーンショット 2024-10-30 21.20.04.png

インストール自体は、2〜3分程度で完了しました。

BINDの設定ファイルを編集

インストールが完了したら、/usr/local/etc/bind/named.confファイルを編集します。

以下の設定を追加し、honda.com のドメイン名を「1.1.1.1」に名前解決できるように設定します。

/usr/local/etc/bind/named.conf
options {
    directory "/usr/local/var/named";
    allow-query { any; };
    listen-on { any; };
};

zone "honda.com" {
    type master;
    file "honda.com.zone";
};

ここでの設定ファイルは、必要に応じて修正してください。私の環境では、この設定ファイルをそのまま使用します。

directoryに指定したディレクトリには、各ドメインのゾーンファイルを配置します。

ゾーンファイルの作成

/usr/local/var/named/honda.com.zoneというファイルを作成し、以下のように設定します。

/usr/local/var/named/honda.com.zone
$TTL 86400
@   IN  SOA ns1.honda.com. admin.honda.com. (
        2023101801 ; Serial
        3600       ; Refresh
        1800       ; Retry
        604800     ; Expire
        86400 )    ; Minimum TTL

    IN  NS  ns1.honda.com.
ns1 IN  A   1.1.1.1
@   IN  A   1.1.1.1

これにより、「honda.com」を「1.1.1.1」に名前解決できます。

BINDの起動と停止

設定が完了したら、以下のコマンドでBINDを起動します。named.confファイルのパスを指定して実行する必要があります。

sudo named -c /usr/local/etc/bind/named.conf

以下のようなエラーが発生した場合は、namedコマンドが見つからない可能性があります。PATHに追加するか、正しいフルパスを確認して実行してください。

sudo: named: command not found

まず、/usr/local/opt/bind/sbinをPATHに追加します。お使いのシェルに応じて、以下のコマンドで設定ファイルを編集してください。

Bash の場合:

echo 'export PATH="/usr/local/opt/bind/sbin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

Zsh の場合(macOSのデフォルト):

echo 'export PATH="/usr/local/opt/bind/sbin:$PATH"' >> ~/.zshrc
source ~/.zshrc

その後、設定が反映されているか確認するために、以下のコマンドでnamedが呼び出せることを確認します。

which named

これで、/usr/local/opt/bind/sbin がパスに追加され、namedコマンドが直接実行できるようになります。

スクリーンショット 2024-10-30 21.39.55.png

停止する際は、以下のコマンドでプロセスを終了します。

pkill named

名前解決の検証 〜digコマンドで確認〜

BINDの設定が完了したら、digコマンドを使って名前解決が正しく行われているか確認します。

dig @localhost honda.com

上記コマンドを実行し、正しいIPアドレス「1.1.1.1」が返されることを確認します。

➜  named dig @localhost honda.com

; <<>> DiG 9.20.3 <<>> @localhost honda.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 996
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: efe60facbdbacf7901000000672229ae92e83397a2376cb4 (good)
;; QUESTION SECTION:
;honda.com.			IN	A

;; ANSWER SECTION:
honda.com.		86400	IN	A	1.1.1.1

;; Query time: 1 msec
;; SERVER: ::1#53(localhost) (UDP)
;; WHEN: Wed Oct 30 21:42:22 JST 2024
;; MSG SIZE  rcvd: 82

この結果から、honda.comの名前解決がBINDサーバーによって正しく行われており、IPアドレス1.1.1.1に解決されていることが確認できます。

名前解決の検証 〜nslookupコマンドで確認〜

さらに、nslookup コマンドを使用して、名前解決の確認を行います。

nslookup
> server localhost
Default server: localhost
Address: ::1#53
> honda.com

応答が次のようになれば成功です。

Name:	honda.com
Address: 1.1.1.1

実際の検証中のターミナルの画面は以下になります。

スクリーンショット 2024-10-30 22.01.01.png

まとめ

この手順で、MacBook上でBINDを使用し「honda.com」を「1.1.1.1」に名前解決するDNSサーバーを構築できました。

これにより、ローカル環境や小規模ネットワークで独自のDNSサーバーを運用することが可能になります。

さらに、設定ファイルを調整することで、外部DNSサーバーへのフォワード設定なども行えるので、興味があればぜひ挑戦してみてください!

関連記事

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?