先日の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サーバを導入してみて思いましたが色々捗りますね・・・。
もっと早くにやっておくべきでした。
特にスマホでの確認作業等、ストレスが無くなりましたヽ( ´∀`)ノ
あとはやはり今まで外向き用と内向き用で設定を切り替えて使っていたアプリが同じ設定で使えるようになったのが大きいですね。