Unbound で一部の名前だけ置き換える DNS cache サーバを立てる

とある特定の名前だけ、本来のとは別の IP アドレスを返したい場面というのが開発中によくあります。
(追記) PCならば hosts を書き換えればいいのですが、iPhoneなどそういう手段が容易にとれない端末に対して行いたい

Unbound を使ってそのような DNS cache サーバを立てるメモ。

homebrew で Unbound をインストール。

$ brew install unbound

local-data で書き換えたいレコードを定義。
/usr/local/etc/unbound/unbound.conf

server:
  interface: "0.0.0.0"
  access-control: 192.168.0.0/24 allow
  username: "nobody"
  local-data: "foo.example.com A 192.168.0.10"

一時的に動かしたいので -d オプションで daemon にならないようにして起動。

$ sudo /usr/local/sbin/unbound -d -c /usr/local/etc/unbound/unbound.conf -v
[1308029375] unbound[40785:0] notice: Start of unbound 1.4.7.
[1308029375] unbound[40785:0] warning: increased limit(open files) from 256 to 1004

これで特定のレコードのみ設定した返答をして、それ以外は通常の名前解決を行う DNS cache サーバができるので、クライアントのリゾルバをそこに向ければいろいろ捗りますね!