CubicLouve

Spring_MTの技術ブログ

unboundを使って、iPhone、Androidの名前解決をよしなにやる

開発現場において、本来とは違うIPアドレスを返して確認するということをよくやると思います。

PCで確認できるページであれば、ローカルPCの /etc/hostsを書き換えてチェックするという手法が一般的かと思います。

ただし、iPhoneAndroidで同じようなことをするために、 /etc/hosts を書き換えるのはかなり難しいです。(iPhoneは脱獄とかしないと多分できないはず)

そこで、ローカルにDNSキャッシュサーバーを立てて、そこで名前解決させるようにして、iPhoneAndroidでもPCと同じような確認ができるようにするための手順をまとめました。

今回は、DNSキャッシュサーバーに unbound を使います。

Unbound 導入のすすめ — Mobage Developers Blog

1 unboundを立てる

Macであれば、homebrewでインストールできます。

brew install unbound 

2. unboundのconfの設定と起動

homebrewでインストールしたunboundであれば、 だいたい、 /usr/local/etc/unbound/unbound.conf に設定ファイルが用意されていると思います。

で、下記のようにlocal-dataに書き換えたいレコードを書きます。

server:
  verbosity: 5
  # 使用するインターフェース。以下ではデフォルトルートを指定
  interface: 0.0.0.0
  access-control: 172.0.0.1/12 allow
  username: "nobody"
  # ローカルのサーバの名前とIPアドレスの対応を登録
  local-data: "example.com. IN A 10.0.0.1"

で、起動します

sudo /usr/local/sbin/unbound -d -c /usr/local/etc/unbound/unbound.conf 

3. 端末の設定

端末で、DNSを立ち上げunboundに向ける必要があります。

iPhoneの設定

設定 -> Wi-Fi -> iマーク -> DNS を選択して、DNSIPアドレスを書き換えて下さい。 (書き換える前に、元のDNSIPアドレスは控えておくのが良いかと)

Android

設定 -> Wi-Fi -> 接続されているWi-Fiを長押し -> ネットワークを変更 -> DNS1 を書き換えて保存

で 確認できます!