目的
MacPCでDNSサーバを構築するメモです。
MacOSサーバではありませんので、サーバの場合、同じ手順でできるかは不明です。
かなり試行錯誤で設定したので、作業手順に抜けがあるかもしれません。
いきさつ
tmpserver
というホスト名がローカルネットワーク上にあります。
スマフォからそのサーバにIPではなく、ホスト名でアクセスするという仕様があり、その名前解決を行うために
MacでDNSサーバをたてて、今回の設定を行いました。
環境
- Mac OS Catalina 10.15.2
参照ページ
Qiita macOS Server用 BIND(DNSサーバ)のセットアップ
Qiita macでnslookupできるけどpingできない時の対処法
Mazn.net nslookupでホスト名引けるのにpingに失敗する@Windows
Aterm 詳細設定-DNSルーティング設定
日本ネットワークインフォメーションセンター ドットレスドメイン名(Dotless Domain Names)とは
実装手順
MacでDNSサーバを構築する場合は、BIND
というライブラリ・サービスが必要なようです。
で、こちらMac OS Catalinaでは標準でインストールされていません。
昔のMacOSには、インストールされていたようで、BINDを使ったDNS設定ファイルも一通り揃っていて、構築楽だったよう。
…にネット上調べて見受けられました。
ただMac OS Catalinaですと、インストールされていないので、導入します。
以降Macのターミナルアプリでの操作となります。
まず、以下コマンドで、BINDをインストールします。特に問題なくインストールできると思います。
$ brew install bind
以下コマンドでBINDサービス起動します。
$ sudo brew services start bind
以下コマンドでサービスの起動確認をします。
$ ps awux | grep -v grep | grep named
->root XXX .... /usr/local/opt/bind/sbin/named -f -c /usr/local/etc/named.conf
上記コマンドの出力結果の最後に/usr/local/etc/named.conf
と出力されると思いますが、こちらがBIND(DNS)の設定ファイルになると思いました。
ということで、次に設定ファイルを修正します。(事前にバックアップを取っておいた方がよいです。)
vi /usr/local/etc/named.conf
ここでチェック&修正する項目は以下です。
- options項目のdirectory値をチェック
- DNSに設定するサーバ値を記入する
options項目のdirectory値をチェック
設定ファイルの20行目ほどに
directory "/usr/local/var/named";
とあり、このパスがこの後設定するzoneファイルのパス元になるので、メモって置きます。
DNSに設定するサーバ値を記入する
設定ファイルにzoneファイルの参照設定を行います。
すでにlocalhost
zoneファイルの記述があるので、その下に以下を追記しました。
zone "tmpserver" IN {
type master;
file "tmpserver.zone";
allow-update { none; };
};
zoneファイルを設定する
次に上で少し書いたzoneファイルというものを設定します。
簡単に書くと、IPとドメインの対応や応答処理について書かれたファイルというものだと私は認識しています。
options項目のdirectory値をチェック
項目でメモしたパスに遷移します。
cd /usr/local/var/named
遷移後、ディレクトリ内を見ると、localhost.zone
などのファイルの存在が確認できると思います。
このディレクトリにtmpserver用のzoneファイルを新しく作成します。
vi tmpserver.zone
もしくは
localhost.zoneをコピーして作成も良いかもしれません。
tmpserver.zoneの中身は以下としました。
$TTL 86400
@ IN SOA @ root.tmpserver. (
50 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ; minimum
)
@ IN NS @
@ IN A 192.168.1.11
私は基本localhostのコピーとしました。
ファイル全体とおして出てくる
@
は自分自信tmpserver
のことのようです。2行目の
root.tmpserver.
はメアドのことのようで適切に設定。最後の行の
192.168.1.11
はtmpserverのIPアドレスです。重要かもzoneファイル変更する事にserial値を変更(増やしていく)必要があるとの記載がありました。それを信じて、一応変更毎に1ずつ増やして行きました。
作成したzoneファイルの記載が正しいか以下コマンドで確認できます。
/usr/local/sbin/named-checkzone tmpserver /usr/local/var/named/tmpserver.zone
以下コマンドでBINDサービス再起動します。
$ sudo brew services restart bind
最後にMacのネットワークのDNS設定を変更します。
DNSは通常ルーターなどに設定されていることが多いですが、今回は127.0.0.1
にします。
設定方法は
システム環境設定 → ネットワーク
から行います。
設定は以上です。
これでDNSサーバを構築できていると思うのですが、冒頭で書いたとおり、かなり試行錯誤したので、不足があるかもしれません。
以下コマンドでうまく名前解決ができているか確認できます。
$ dig tmpserver
->
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
...
;tmpserver. IN A
;; ANSWER SECTION:
tmpserver. 86400 IN A 192.168.1.11
ANSWER: 1
となっていれば成功です。0
だとどこか記載ミスがあります。
ドットレスドメインのpingについて
名前解決できたので、pingコマンドを実行したのですが、うまく通信できませんでした。
今回tmpserverというホスト名に.com
などが付かないドットレスドメインというものなのですが、、
特にWindowsだと、そのまんまの名前では通信確認できないようです。
Mac OS からのpingについて
参照サイトのように以下コマンドにて、サービス再起動で通信できるようになりました。
sudo killall -HUP mDNSResponder
Windows からのpingについて
知らなかったのですが、ドットレスドメインは以下のやり方のように最後に.
を付けないとpingが通らないようです。
ping tmpserver.
ことの発端
そもそもtmpserverというサーバにドットレスドメインを付けたから上記のような作業を行う必要があると思っています!
- ドットレスドメインですと、ルーターのルーティング設定に設定できませんでした!
- ルーターのDNSで設定できないから、DNSサーバを立てようということになりました!
- zone設定もネット上でのサンプルはドットありの書き方がほとんどでめちゃくちゃ苦労しました!
- tmpserverのドメインは他でも使っていて、今更変更できないようです!
- 参照にもあるとおりドットレスドメインは推奨されないよう!
- 今後ドットレスドメインを付けているエンジニアがいたら、ちょっと見損ないそう!!!!!!!
この知識が間違っていたら申し訳ない