はじめに
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
実際のインストール中の画面は以下の通りです。
インストール自体は、2〜3分程度で完了しました。
BINDの設定ファイルを編集
インストールが完了したら、/usr/local/etc/bind/named.conf
ファイルを編集します。
以下の設定を追加し、honda.com
のドメイン名を「1.1.1.1」に名前解決できるように設定します。
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
というファイルを作成し、以下のように設定します。
$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
コマンドが直接実行できるようになります。
停止する際は、以下のコマンドでプロセスを終了します。
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
実際の検証中のターミナルの画面は以下になります。
まとめ
この手順で、MacBook上でBINDを使用し「honda.com」を「1.1.1.1」に名前解決するDNSサーバーを構築できました。
これにより、ローカル環境や小規模ネットワークで独自のDNSサーバーを運用することが可能になります。
さらに、設定ファイルを調整することで、外部DNSサーバーへのフォワード設定なども行えるので、興味があればぜひ挑戦してみてください!
関連記事