ローカル開発用のワイルドカードなドメインを dnsmasq で設定する(hosts にワイルドカードは書けないので)

2019/05/16   #開発環境  #dns 
このエントリーをはてなブックマークに追加

例えばワイルドカードなサブドメインで提供しているサービスを開発しているとする。
hosts ファイルにサクッと *.test-domein.lcl と書きたいところだが、
hosts ファイルにはワイルドカードは書けない。
なので、

127.0.0.1 foo.test-domein.lcl
127.0.0.1 bar.test-domein.lcl
127.0.0.1 baz.test-domein.lcl
:

みたいに、ローカルでの動作で使用するすべてのドメイン名を書くはめになる。
これはちょっとめんどうなのでどうにかならないか、ということで調べると dnsmasq というツールで解決できそうだったので試してみた。


macOS の場合のやり方。

dnsmasq をインストール。

$ brew install dnsmasq

/etc/resolver ディレクトリを作成。

$ sudo mkdir -p /etc/resolver

/etc/resolver 以下に、ドメイン名でファイルを作成(最終的に *.test-domein.lcl としたければ test-domein.lcl というファイル名で作成)し、

$ sudo vim /etc/resolver/test-domein.lcl

以下のように書いておく。

nameserver 127.0.0.1

対象のドメインの場合のみローカルの DNS を使用するという設定をする。
以下のように書くと、 *.test-domein.lcl の場合にローカルの DNS を参照するようになる。

$ vim /usr/local/etc/dnsmasq.conf
address=/.test-domein.lcl/127.0.0.1

dnsmasq を起動。

$ sudo brew services start dnsmasq

これで、 http://foo.test-domain.lcl:8080 などが localhost を指すようになる。