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の修正を行いました。

key "domainname" {
   algorithm hmac-md5;
      :
    { 略 }
      :
options {
   directory "/var/named";
   pid-file
"/var/named/run/pid-file";
};

logging {
   channnel "log_default" {
      file
"/var/named/log/named.log" versions 7 size 5m;
      severity info;
      print-time yes;
      print-category yes;
   };
   channnel "log_security" {
      file
"/var/named/log/security.log" versions 3 size 5m;
      severity info;
      print-time yes;
      print-category yes;
   };
   category default { "log_default"; };
   category security { "log_security"; };
   category client { "log_security"; };
};
acl localnet {
   XXX.YYY.ZZZ.0/24;
      :
    { 略 }
      :

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
----------------------


[前へ] [目次]