« 自動マウントしたQNAP NASに外部からアクセスできるようにする | ホーム | QNAP TS-219P II買った(1年前に) »

2013年3月24日

QNAP NASにBINDを入れて内部DNSサーバーにする

QNAP NASにBINDを入れて内部DNSサーバーにする

前回hosts書き換えだと問題が生じたのでDNSサーバーを用意することにした。

QNAP NASにはパッケージ管理ツールのQPKGが用意されているもののパッケージはあまり充実しておらずBINDもないので、QPKGからOptware IPKGをインストール→IPKGからBINDをインストールという流れをとる。

# ipkg update
# ipkg install bind

自分は遭遇しなかったんだけどパスが通ってなくて再起動するとipkgコマンドが使えなくなるとかいう報告もあったので一旦再起動して試したほうがいいかも。

BINDの設定

DNSよくわからないけど内部用だから適当でいいのでは。ってことでこの辺とか見ながら基本的なとこだけ設定する。

強いBIND DNSサーバを構築する 第三回 - 基本的なゾーン設定 -- Eurotec Information Systems K.K. Web Site

/opt/etc/named/named.conf

options {
    directory "/opt/var/named";
    allow-query {
        localhost;
        localnets;
    };
    forwarders {
        192.168.0.1;
    };
    forward first;
};

zone "." {
    type hint;
    file "named.root";
};

include "/opt/etc/named/named.special.zones";

zone "hanpen.mycloudnas.com" {
    type master;
    file "hanpen.mycloudnas.com.zone";
};

forwarders の 192.168.0.1 はISP支給のルーター。ONUにこれ噛まさないとインターネット接続してくれずISPルーター→自前ルーター→PC&NASという構成になっているため。こういう環境じゃなければプロバイダ指定のDNSとかを入れるはず。

hanpen.mycloudnas.com.zone

$TTL    1D
@   IN  SOA @ rname.invalid. (
             1    ; Serial
            3H    ; Refresh
            1H    ; Retry
            1W    ; Expire
            1D )  ; Negative Cache TTL

@   IN  NS  @
@   IN  A   192.168.1.2

動作チェック

ここまで設定したら試しに起こしてみる。

# /opt/etc/init.d/S09named start

クライアント側から名前解決ができるかチェック。

$ dig hanpen.mycloudnas.com @192.168.1.2
...
;; ANSWER SECTION:
hanpen.mycloudnas.com.  86400   IN  A   192.168.1.2
...

できてるっぽいので自前ルーターのプライマリDNSを192.168.1.2、セカンダリDNSを192.168.0.1に設定。@外してもう一回。

$ dig hanpen.mycloudnas.com

同じ結果が返ってくればOK。

BINDの自動起動

Running Your Own Application at Startup - QNAPedia

通常は autorun.sh に書けとあるんだけどどうも /opt は起動時にパスが通ってないらしく普通に書いても動かないのでいろいろ小細工をしないといけないみたい。よくわかんなかったので cron でプロセス監視して起きてなければ起こすことにした。

QNAP_cronを使う | big's memo

# crontab -e
...
* * * * * (ps ax | grep -v grep | grep -c /opt/sbin/named) || /opt/etc/init.d/S09named start

一旦BINDを止めて勝手に起動するかチェックする。

# /opt/etc/init.d/S09named stop

大丈夫そうなら /etc/config/crontab にも同じ内容を書き込んで再起動テスト。

# vim /etc/config/crontab
...
# reboot

再起動後も名前解決に問題がなければ設定完了。

ちなみに、QNAP NASを再起動するとTunnelblickがMacのDNSキャッシュの影響でVPN接続に失敗し続けるので、Terminalからは名前解決できるのにTunnelblickのログを見るとグローバルIPに繋ぎにいってるという場合は、キャッシュを削除してやるといい。

 $ sudo killall -HUP mDNSResponder

その後の運用

hostsの書き換えで問題になっていたうち、スクリプトを手動実行しないといけなかった件は解決。スムーズに切り替えできるようになった。

もう片方のFinderでNASのフォルダを開いたままだとFinderが死ぬ件は、死ななくはなったもののタイムアウトでアンマウントされるまでファイルにアクセスできないのはそのまま

別にそんなこともなかった。常にじゃないっぽい。

そんなに頻繁にアクセスするものでもないので、必要なときは手動でアンマウントしてやればいいということに落ち着いた。

$ umount /Volumes/hanpen

トラックバック(0)

トラックバックURL: http://retlet.net/cgi-bin/mt5/mt-tb.cgi/89