MacでDNSサーバ(BIND)を動かす&iOS/Androidの設定
先月書いた記事ではlvh.meを使って参照している、ローカルに設置したnode.jsのアプリケーションをモバイルからアクセスする際に、ApacheのProxyモジュールを利用していましたが、書いた後にDNSサーバ立てれば良いじゃんって事に気が付いていたのですが、重い腰を上げて設定できたのでまとめておきます。
非JailBreak/Rootedな端末だと/etc/hostsをいじれないので、真っ当な方法ですね。
Mac OS X には最初からBINDが入っていますが、動かすまでに少し準備が必要です。
- /etc/rndc.keyファイルの生成
- ルートサーバのゾーンファイルの更新
その後、
- lvh.meのゾーンの設定
- モバイル端末のDNS設定の変更
という流れになります。
/etc/rndc.keyファイルの生成
$ sudo rndc-confgen -a wrote key file "/private/etc/rndc.key"
ルートサーバのゾーンファイルの更新
$ su - Password: # cd /var/named # curl ftp://ftp.rs.internic.net/domain/named.root > named.ca
とりあえず、これで起動ができるようになります。以下のコマンドで試してみます。
# named -g 05-Aug-2013 10:09:42.365 starting BIND 9.7.6-P1 -g
lvh.meのゾーンの設定
lvh.meは全て127.0.0.1を指しているので、アプリケーションを動かしている端末(Mac OSX)からのアクセスなら問題ありませんが、モバイル端末からだとそのモバイル端末に接続してしまうので、Mac OSXのアドレスを指すようにゾーンファイルを作ってあげます。
/etc/named.conf
lvh.meではlvh.me.zoneの設定を読込む設定を追加します。
zone "lvh.me" IN { type master; file "lvh.me.zone"; allow-update { none; }; };
/var/named/lvh.me.zone
正引きの情報だけ。192.168.10.128は自身の環境のMacのIPアドレスに変更してください。
$TTL 86400 $ORIGIN lvh.me. @ IN SOA ns.lvh.me. postmaster.lvh.me. ( 2013080501 ; Serial 7200 ; Refresh 2 hours 1800 ; Retry 30 minutes 1209600 ; Expire 14 days 86400 ) ; Minimum TTL 1day IN NS ns.lvh.me. localhost IN A 192.168.10.128 ns IN A 192.168.10.128 @ IN A 192.168.10.128 * IN A 192.168.10.128
これでlvh.meの情報を上書きしました。
起動と停止は以下。
# named を起動するだけの場合(自動起動しない) $ sudo launchctl load -F /System/Library/LaunchDaemons/org.isc.named.plist # named を起動し、ブート時にも自動起動するようにする。(org.isc.named.plist を書き換えている。) $ sudo launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist # named を停止する $ sudo launchctl unload /System/Library/LaunchDaemons/org.isc.named.plist # named を停止し、ブート時に自動起動しないようにする。(org.isc.named.plist を書き換えている。) $ sudo launchctl unload -w /System/Library/LaunchDaemons/org.isc.named.plist