先日の GW は姪っ子から感染したと思われる溶連菌感染症でほぼ潰れました。
こんにちは、えんぞーです^^
さて、ローカルで立てたサーバにドメイン名でアクセスしたい場合、最も簡単な方法は Windows の「hosts」ファイルを編集して参照先を追加するのが一般的かと思います。
しかし、それだとスマホから確認出来なかったりしてとても不便・・・なので簡易的な DNS サーバを構築してその辺りのストレスを緩和しました。
いつかやろうやろうと思いつつ Bind を設置するのが億劫でスルーしてたのですが、dnsmasq と言うソフトを使って簡易的な DNS サーバを構築出来ると知って飛びつきました。
Dnsmasqは軽量で比較的容易に設定できる DNS サーバのフォワーダと DHCP サーバをもつソフトウェアである。
Wikipedia より引用
これでcomiccafeやsubsonic等の自宅サーバにアクセスするアプリを使用する時にローカルと外出時で設定を切り替えなくても単一の設定で使用できます。
dnsmasq のインストールと各種設定
早速、インストールと設定を行います。
今回構築する環境は自宅のサーバで Ubuntu16.04 になります。
設定については色々と調べて見て結果思い通りに動いた設定ですが、いらない部分等あるかも知れません。
前提としてルーター(PR-400NE)の静的ルーティングで指定したドメインのみこの DNS サーバに問い合わせられる形で構築します。
- ルーター:PR-400NE(192.168.1.1)
- サーバ:Ubuntu(192.168.1.100 local.testserver.net)
- クライアント PC
- スマホ
まずはインストール
sudo apt-get install dnsmasq
インストールが完了したら設定。
sudo vi /etc/dnsmasq.conf
# ドメイン付与されていない名前解決は上位DNSに転送しない
domain-needed
# プライベートIPの逆引きは上位DNSに転送しない
bogus-priv
# localなドメインを指定。このドメインは/etc/hostsかDHCPでのみ解決する。
local=/local.testserver.net/
# domain= で指定されたドメインで補完する
expand-hosts
# 補完するドメイン
domain=local.testserver.net
「local.testserver.net」という部分がローカルドメイン。
今回の様な使い方であればもしかしたら local=の設定とかいらないのかも知れないけど・・・ひとまずはこれで。
dnsmasq の自動実行設定
sudo systemctl enable dnsmasq
ufw 使っているのでポートを開放
sudo ufw allow 53
/etc/hosts に設定を追加
sudo vi /etc/hosts
127.0.0.1 localhost
192.168.1.100 local.testserver.net
ルーター(PR-400NE)側の設定
さて、今回の肝がこのルーター側の設定です。
NTT のルーターである PR-400NE の場合って感じなのでちょっと幅が狭い話になりますが、参考までに。
私てっきり静的ルーティングの設定さえすれば動くだろうと思っていたのですが、DNS 設定の LAN 側 DNS サーバアドレスにあるプライマリ DNS に IP 設定してあげないと駄目でした。
これに気づくのに少々時間が掛かってしまいました。
よく考えてみれば DNS の指定してないのに名前解決出来るわけ無いじゃんって話なのですが・・・w
結果的には下記の画像のようになりました。
静的ルーティングの設定を行ったらしっかり項目のチェックボックスにチェックを付けて保存しましょう。結構うっかり忘れますw
その後、左上の保存を押しせば反映されます。
後はスマホなり PC なりでローカル内の端末で設定したローカルドメインにアクセスしてしっかり表示されている事が確認できれば完了です。
とりとめのないまとめ
今回、簡易的とは言えローカルでの DNS サーバを導入してみて思いましたが色々捗りますね・・・。
もっと早くにやっておくべきでした。
特にスマホでの確認作業等、ストレスが無くなりましたヽ( ´∀`)ノ
あとはやはり今まで外向き用と内向き用で設定を切り替えて使っていたアプリが同じ設定で使えるようになったのが大きいですね。