DNS の設定を触るとき、ローカルのキャッシュが変わっていないためにハマることが多々あります。Mac の場合、ターミナルで dig して変更を確認してもブラウザで開けなかったりするわけで。
これは、MacOSX 内部で DNS 解決の結果をキャッシュする機能が働いているためです。 キャッシュをコントロールするためには dscacheutil コマンドを使います。
dscacheutil1
2
3
4
5
6
| Usage: dscacheutil -h
dscacheutil -q category [-a key value]
dscacheutil -cachedump [-buckets] [-entries [category]]
dscacheutil -configuration
dscacheutil -flushcache
dscacheutil -statistics
|
キャッシュをクリアするのは "-flushcache" オプションをつけます。
1
| $ dscacheutil -flushcache
|
sudo しなくてもユーザ権限でできるので安心。
実際にキャッシュされてるデータを調べるにはこんな感じ。
dscacheutil -q host -a name blog.hatak.net1
2
3
| name: vps02.sakura.dwmp.jp
alias: blog.hatak.net
ip_address: 49.212.41.49
|
dig blog.hatak.net1
2
3
| ;; ANSWER SECTION:
blog.hatak.net. 600 IN CNAME vps02.sakura.dwmp.jp.
vps02.sakura.dwmp.jp. 600 IN A 49.212.41.49
|
ちゃんと dig の結果と同じものがキャッシュされてました。CNAME の場合は alias として表示されるようですね。 IP からの逆引きも調べてみました。
dscacheutil -q host -a ip_address 49.212.41.491
2
3
| name: www30255u.sakura.ne.jp
alias: 49.41.212.49.in-addr.arpa
ip_address: 49.212.41.49
|
dig -x 49.212.41.491
2
| ;; ANSWER SECTION:
49.41.212.49.in-addr.arpa. 3600 IN PTR www30255u.sakura.ne.jp.
|
逆引きの委譲をしていないので管理用のドメインが返ってきてしまいますが、これも dig の結果と同じものになってます。 “ds” というコマンド名のとおり、もともと DirectoryService のキャッシュを操作するためのもののようで、DNS に限ったコマンドではなさそうです。
dscacheutil -q user -a name hatak1
2
3
4
5
6
7
| name: hatak
password: ********
uid: 501
gid: 20
dir: /Users/hatak
shell: /bin/bash
gecos: hatak
|