簡易DNSサーバ(DNSMASQ)を構築してみる【前編】



とある事情で、ローカルで開発中のWebサイトにスマホからアクセスしたくなったので調査&メモ

スマホから同一ネットワークに接続した後、Webサーバーの立っている、鯖のIPアドレスを打てば、
単純にアクセスできるのだが、iphoneはhostsファイルを書き換えるなんてことは、(脱獄しない限り)できないようなので、
リバースプロキシなんかが入っていて、名前解決をローカルでやっている場合は、DNSを変更するしかないっぽいようだ。
(まぁそうですよね。。)

はじめbindを使うのかなと思ったてたけど、もっと簡易用のものがありました。

macなのでdnsmasqなるのを使うみたいです。
これは/etc/hostsでの名前解決が利用できるので便利みたいですね。

私の場合は、homebrewから入れて設定してみました。

sudo brew install dnsmasq
touch /usr/local/etc/dnsmasq.conf
sudo ln -s /usr/local/etc/dnsmasq.conf /etc/dnsmasq.conf

↑上記のどこかでファアーウォールの穴を開けるか否かのダイアログが出てくる(場合がある)ので53(DNS)に関しては開けておく。

※/etc内にリンクしているのは好みです。

/etc/dnsmasq.conf(/usr/local/etc/dnsmasq.conf) に下記を記載

port=53
domain-needed
bogus-priv
expand-hosts
local=/axtstar.com/
log-queries
log-facility=local0

/etc/hostsを下記のように追加

xx.xxx.xx.xxx   jp.axtstar.mymac

xx.xxx.xx.xxxはmacのIPアドレスですifconfigなどでIPを調べておいてください。
jp.axtstar.mymacは解決すべきドメイン

つまりiphoneのsafariで下記アクセスできるようにする設定(iphone側でDNS変更も必要ですが→後編)
http://jp.axtstar.mymac/index.html

ローカルで開発している場合は大抵hostsファイルが
127.0.0.1   jp.axtstar.local
みたいになっているのではなかろうか?
その場合、
xx.xxx.xx.xxx   jp.axtstar.local
としても、mac/ipodtouchから「.local」↑では接続できなかった。
androidからも、一部表示が変だった。

上記で設定完了
後は起動するのみ

#スタート
sudo brew services start dnsmasq
#ストップ
sudo brew services start dnsmasq
#リスタート
sudo brew services restart dnsmasq

サーバ側設定ここまで。