OS X LionをDNSサーバにしてWordPressのマルチサイトの実験をしました(2/2)
WordPressのマルチサイト(サブドメイン形式)を実験しようとすると、サブドメイン名でWordPressサーバ(OS X 10.7.3 Lion)にアクセスできるようにする必要があります。
前回は、そのための設定をしました。
ですが、同じサブネット内にいる他のPCや、iPod touch/iPadからはアクセスできません。
これを解決するために、本格的にMacをDNSサーバにしてしまいます。ただし、家庭内ネットワークで使うためだけに利用します。
例として、次のネットワークを設定します。
IPアドレス | ホスト名 |
---|---|
192.168.0.1 | gw.local.example.com |
192.168.0.2 | mac.local.example.com |
192.168.0.3 | win.local.example.com |
192.168.0.4 | ipod.local.example.com |
192.168.0.5 | ipad.local.example.com |
ドメインは、"example.com"のサブドメイン"local.example.com"として定義します。
example.comは、実際にのホストとしては存在しなく、例の表示やテストで使ってよいとされています(RFC 2606)。
もし、既に独自ドメインをお持ちでしたら、そのサブドメインとして定義するのが良いと思います。
設定は、次の手順となります。
- /etc/named.confの設定
- /var/named/example.local.zoneの作成
- /var/named/example.local.revの作成
- namedの再起動
順を追って説明します。
1. /etc/named.confの設定
/etc/named.confには、アドレス解決のためにlocal.example.comの設定を追加します。
options { directory "/var/named"; /* * If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND 8.1 uses an unprivileged * port by default. */ // query-source address * port 53; forwarders { 8.8.8.8; // GoogleのDNSサーバ 8.8.4.4; // GoogleのDNSサーバ }; };
optionsに、赤字の部分を追加しました。
ローカル(Mac)のnamedでアドレス解決できない時は、forwadersに書かれたDNSサーバに問い合わせに行きます。
この例では、GoogleのDNSサーバを指定しました。
WAN(光回線)とつないでいるルータのアドレス、あるいはプロバイダのDNSサーバを指定しても良いと思います。
// for HOME zone "local.example.com." in { type master; file "example.local.zone"; allow-transfer{ none; }; }; // for HOME (reverse) zone "0.168.192.in-addr.arpa." in { type master; file "example.local.rev"; };
local.example.comを読み込むための設定をします。local.example.comについては、外に問い合わせにいきません。
2. /var/named/example.local.zoneの作成
$ cd /var/named $ sudo vi example.local.zone
次の内容を記載します。
$TTL 86400 @ 1D IN SOA @ local.example.com. ( 2012032701 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS mac.local.example.com. IN A 192.168.0.2 mac IN A 192.168.0.2 www IN CNAME mac win IN A 192.168.0.3 ipod IN A 192.168.0.4 ipad IN A 192.168.0.5 gw IN A 192.168.0.1
シリアル(serial)は、年/月/日/通し番号で書くのが通例らしいです。
設定を変更したら、通し番号を一つ増やさないと、データベースが更新されません。
3. /var/named/example.local.revの作成
$ cd /var/named $ sudo vi example.local.rev
次の内容を記載します。
$TTL 86400 @ IN SOA local.example.com. root.local.example.com. ( 2012032701 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum ; IN NS mac.local.example.com. IN PTR mac.local.example.com. IN A 255.255.255.0 1 IN PTR gw.local.example.com. 2 IN PTR mac.local.example.com. 2 IN PTR win.local.example.com. 4 IN PTR ipod.local.example.com. 5 IN PTR ipad.local.example.com.
4. namedの再起動
既に、named自体は起動している物とします。
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.isc.named.plist $ sudo launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist
この方法でも、namedの設定を再読み込みできますが、次の方法の方がスマートです。
$ sudo rndc -p 54 reload server reload successful
正しく読み込めているかどうか、確認します。
$ nslookup > mac.local.example.com Server: 127.0.0.1 ← ローカルサーバ Address: 127.0.0.1#53 Name: mac.local.example.com Address: 192.168.0.2 ← 設定したアドレスが返ってきた > win.local.example.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: win.local.example.com Address: 192.168.0.3 > local.example.com ← サブドメインとして指定 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: local.example.com Address: 192.168.0.2 ← 設定したアドレスが返ってきた > 192.168.0.4 Server: 127.0.0.1 Address: 127.0.0.1#53 4.0.168.192.in-addr.arpa name = ipod.local.example.com. > example.com ← 外部のホスト Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: ← 外部のDNSサーバに聞きにいって、キャッシュした Name: example.com Address: 192.0.43.10 ← example.comとして設定されているIPアドレス > exit ← 終了
もし、正しい結果が返ってこなかったら、設定を間違えている可能性があります。
そういう場合は、/Library/Logs/named.logにエラーが出ていないかを確認してください。
example.local.zoneやexample.local.revに書き間違いがあっても、rndcはsuccessfulになってしまいますので、注意が必要です。
最初の頃、rndcで、設定をreloadできなくて困っていました。
$ sudo rndc reload rndc: connect failed: 127.0.0.1#953: connection refused
/etc/named.confを確認してみると、port番号が54になっている事に気がつきました。
controls { inet 127.0.0.1 port 54 allow {any;} keys { "rndc-key"; }; };
他、rndcには、次の使い方があります。
$ sudo rndc -p 54 flush
ローカルのネームサーバに溜まっているホスト情報をクリアします。
$ sudo rndc -p 54 dumpdb
ローカルのネームサーバに溜まっているホスト情報をダンプします。ダンプした結果は、/var/named/named_dump.dbとなります。
大昔のnamedは、killで各種シグナルを送って制御していました。今はどうなのかな?
なお、namedの設定にあたり、次のサイトを参考にしました。ありがとうございます。
- 内部向け DNS サーバの構築 – Linux で自宅サーバ [ Home Server Technical. ]
- DNS (Domain Name System) の導入/設定 version 9
- GM’s Log. » Blog Archive » MacOSXでWebサイト開発しやすいようにDNSサーバを動かしてみた
- named.conf の設定
【シリーズ記事】
- OS X LionをDNSサーバにしてWordPressのマルチサイトの実験をしました(1/2): プラスα空間
- OS X LionをDNSサーバにしてWordPressのマルチサイトの実験をしました(2/2): プラスα空間
ディスカッション
コメント一覧
まだ、コメントがありません