Solaris10 on DNSサーバー (自動起動)
6−1 SMFへの登録
DNSの自動起動はSMFへの登録”/usr/sbin/svcadm enable SVC:/network/server”とかで自動起動するようになるはzだったのですが、自動起動が出来ませんでした。
何故なのかは不明ですが、とりあえず/etc/rc・・・を探してみてもdnsとかbindとかのそれらしい物が見つかりませんでした。
もしかしてnamed.confと管理コンソールの問題で止めているとか?ネームサーバーを頻繁にシャットダウンしたりしないとか何か意味が有るのかもしれませんが不便なのでスクリプトを書く事にします。
6−2 bindのユーザーとグループ
まずはbindを実行するユーザーが必要だろうと言う事で管理コンソールからグループとユーザーを確認しました。nobodyとか使っても良いのかとも思いましたが解らなくなりそうなのでnamedと言うグループとユーザーを追加する事にしました。
GID・UIDは/etc/groupと/etc/passwdを確認して200に決めました。
# groupadd -g 200 named |
# useradd -g named -u 200 -s /bin/false named |
6−3 スクリプトの作成
/etc/init.d/にnamedと言う名前で新規にスクリプトファイルを作成しました。
#!/sbin/sh PID=`/usr/bin/ps -aef | /usr/bin/awk '{print $1" "$2}' | /usr/bin/grep named | /usr/bin/awk '{print $2}'` case "$1" in 'start') if [ -f /usr/sbin/named -a -f /var/named/named.conf ]; then if [ $PID ]; then echo "named has started" else /usr/sbin/named -c /var/named/named.conf -u named echo "Running: named" fi fi ;; 'stop') if [ $PID ]; then kill -TERM $PID echo "Stopping: named" else echo "named has stopped" fi ;; 'restart') $0 stop sleep 3 $0 start ;; 'status') if [ $PID ]; then echo "named starts" else echo "named stopped" fi ;; *) echo "Usage: $0 { start | stop | restart | status }" exit 1 ;; esac exit 0 |
6−4 named.confの修正
”chmod 744 /etc/init.d/named”で実行可能にしたスクリプトの確認をしようと”/etc/init.d/named
status”としてみたら「named stopped」と表示されて動く事が確認でき続いて”/etc/init.d/named
start”としたらエラーで落ちました。
エラーはパーミッションの問題でログやらPIDファイルが作成出来ないと言う物で/var/runや/var/logのアクセス権限を変更するかnamedユーザーに権限を与えるかですが悩んだ結果/var/namedにrunとlogのディレクトリを作成する事にしました。
これによりnamed.confの修正を行いました。
|
6−5 スクリプト実行の環境作り
作成するスクリプトは登録したnamedで実行するので設定ファイル等の実行権限を変える必要があります。
# chmod -R 700 /var/named |
# chown -R named:named /var/named |
# chmod 744 /etc/init.d/named |
各ランレベルにスクリプトのシンボリックリンクを張りました。
# ln /etc/init.d/named /etc/rc2.d/S72named |
# ln /etc/init.d/named /etc/rc3.d/S72named |
# ln /etc/init.d/named /etc/rc0.d/K72named |
再起動後にDNSが正常に起動している事を確認できました。
----------------------
/etc/init.d/named status
/etc/init.d/named start
/etc/init.d/named stop
/etc/init.d/named restart
----------------------