これらの手順は、マスター KDC とスレーブ KDC の切り替えを容易にします。マスター KDC とスレーブ KDC を切り替えるのは、マスター KDC が何らかの理由で異常終了した場合、あるいはマスター KDC を再インストールしなければならない (たとえば、新しいハードウェアをインストールする) 場合だけです。
この手順は、マスター KDC としても利用したいスレーブ KDC サーバー上で実行します。
インストール時、マスター KDC サーバーと切り替え可能なスレーブ KDC サーバーには別名を使用します。
KDC のホスト名を定義するときは各システムの別名が DNS に含まれていることを確認して、/etc/krb5/krb5.conf にホストを定義するときは別名を使用します。
マスター KDC と切り替え可能なスレーブ KDC の両方で KDC 起動スクリプトを選択して、ホスト名を無効にします。
マスター KDC サーバーと切り替え可能なスレーブ KDC サーバーに別名を使用するのは、現在使用しているノード名が /etc/krb5/krb5.conf に存在していることを KDC サーバーに障害が発生する前に確認するためです。別名を使用して、切り替えをスムーズに行うには、以下に示すように /etc/init.d/kdc の中の 2 行をコメントにする必要があります。
if [ -f $KDC_CONF_DIR/kdc.conf ] then # node=`uname -n` # if grep -i "kdc.*=.*$node" /etc/krb5/krb5.conf > /dev/null 2>&1 ; then $BINDIR/krb5kdc fi fi ;; |
マスター KDC ソフトウェアをインストールします。
マスター KDC ソフトウェアをインストールすると、切り替え中に必要なバイナリなどのファイルが提供されます。これらのファイルには、スレーブ KDC サーバーが必要とするファイルもすべて含まれています。インストールが完了したときには、システムをリブートしないでください。
スレーブ KDC を構成します。
切り替え前に、当該サーバーはレルム内の他のスレーブ KDC とまったく同じように機能している必要があります。この方法については、「スレーブ KDC を構成するには」を参照してください。スレーブソフトウェアはインストールしないでください。必要なファイルはすべて、マスターソフトウェアをインストールするときにインストールされます。
マスター KDC コマンドを移動します。
当該スレーブからマスター KDC コマンドを実行できないようにするには、kprop、kadmind、および kadmin.local を別の場所に移動します。
kdc4 # mv /usr/lib/kprop /usr/lib/kprop.save kdc4 # mv /usr/krb5/lib/kadmind /usr/krb5/lib/kadmind.save kdc4 # mv /usr/krb5/sbin/kadmin.local /usr/krb5/sbin/kadmin.local.save |
/etc/init.d/kdc.master 内で kadmind の起動を無効にします。
当該スレーブが要求を処理できないようにするには、KDC データベースを変更して、スクリプト内で kadmind を起動する行をコメント化します。
kdc4 # cat /etc/init.d/kdc.master . . case "$1" in 'start') if [ -f $KDC_CONF_DIR/kdc.conf ] then # $BINDIR/kadmind fi ;; |
root の crontab ファイル内で kprop 行をコメント化します。
この手順を行うことにより、当該スレーブが KDC データベースのコピーを伝達できないようになります。
kdc4 # crontab -e #ident "@(#)root 1.19 98/07/06 SMI" /* SVr4.0 1.1.3.1 */ # # root の crontab はアカウントデータを収集するために使用される。 # # rtc コマンドは、夏時間が変更されたときに、実時間クロックを調整 # するために実行される。 # 10 3 * * 0,4 /etc/cron.d/logchecker 10 3 * * 0 /usr/lib/newsyslog 15 3 * * 0 /usr/lib/fs/nfs/nfsfind 1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean #10 3 * * * /usr/krb5/lib/kprop_script kdc1.acme.sun.com #SUNWkr5ma |
この手順では、スレーブ KDC サーバーを切り替え可能なスレーブとして設定しておく必要があります (「切り替え可能なスレーブ KDC を構成するには」を参照)。この手順では、切り替えられるマスターサーバーの名前が kdc1 で、新しいマスターとなるスレーブサーバーの名前が kdc4 です。
古いマスター上で kadmind プロセスを強制終了します。
kadmind プロセスを強制終了すると、KDC データベースを変更できなくなります。
kdc1 # /etc/init.d/kdc.master stop |
古いマスター上で root の crontab ファイル内の kprop 行をコメント化します。
この手順を行うことによって、古いマスターが KDC データベースのコピーを伝達できなくなります。
kdc1 # crontab -e #ident "@(#)root 1.19 98/07/06 SMI" /* SVr4.0 1.1.3.1 */ # # root の crontab はアカウントデータを収集するために使用される。 # # rtc コマンドは、夏時間が変更されたときに、実時間クロックを調整 # するために実行される。 # 10 3 * * 0,4 /etc/cron.d/logchecker 10 3 * * 0 /usr/lib/newsyslog 15 3 * * 0 /usr/lib/fs/nfs/nfsfind 1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean #10 3 * * * /usr/krb5/lib/kprop_script kdc2.acme.sun.com #SUNWkr5ma |
古いマスター上で /etc/init.d/kdc.master 内の kadmind の起動を無効にします。
サーバーをリブートするときにマスターが kadmind を再起動できないようにするには、スクリプト内で kadmind を起動する行をコメント化します。
kdc1 # cat /etc/init.d/kdc.master . . case "$1" in 'start') if [ -f $KDC_CONF_DIR/kdc.conf ] then # $BINDIR/kadmind fi ;; |
古いマスター上でデータベースのバックアップと伝達のために kprop_script を実行します。
kdc1 # /usr/krb5/lib/kprop_script kdc4.acme.com Database propagation to kdc4.acme.com: SUCCEEDED |
古いマスター上でマスター KDC コマンドを移動します。
マスター KDC コマンドを実行できないようにするには、kprop、kadmind、および kadmin.local を別の場所に移動します。
kdc4 # mv /usr/lib/kprop /usr/lib/kprop.save kdc4 # mv /usr/krb5/lib/kadmind /usr/krb5/lib/kadmind.save kdc4 # mv /usr/krb5/sbin/kadmin.local /usr/krb5/sbin/kadmin.local.save |
DNS サーバー上でマスターの別名を変更します。
サーバーを変更するには、acme.com ゾーンファイルを編集して、masterkdc のエントリを変更します。
masterkdc IN CNAME kdc4 |
DNS サーバー上でインターネットドメイン名サーバーを再起動します。
次のコマンドを両方のサーバー上で実行して、新しい別名情報を取得します。
# pkill -1 in.named |
新しいマスター上でマスター KDC コマンドを移動します。
kdc4 # mv /usr/lib/kprop.save /usr/lib/kprop kdc4 # mv /usr/krb5/lib/kadmind.save /usr/krb5/lib/kadmind kdc4 # mv /usr/krb5/sbin/kadmin.local.save /usr/krb5/sbin/kadmin.local |
新しいマスター上で kadmin.local を使用して、kadmin 用に keytab ファイルを作成します。
次のコマンドは、admin と changepw のプリンシパルエントリを持つ特別な keytab ファイルを作成します。これらのプリンシパルは kadmind サービスに必要です。
kdc4 # /usr/krb5/sbin/kadmin.local kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc4.acme.com Entry for principal kadmin/kdc4.acme.com with kvno 3, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/kadm5.keytab. kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc4.acme.com Entry for principal changepw/kdc4.acme.com with kvno 3, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/kadm5.keytab. kadmin.local: quit |
新しいマスター上で /etc/init.d/kdc.master 内の kadmind の起動を有効にします。
kdc4 # cat /etc/init.d/kdc.master . . case "$1" in 'start') if [ -f $KDC_CONF_DIR/kdc.conf ] then $BINDIR/kadmind fi ;; |
新しいマスター上で kadmind を起動します。
kdc4 # /etc/init.d/kdc.master start |
root の crontab ファイル内で kprop 行を有効にします。
kdc4 # crontab -e #ident "@(#)root 1.19 98/07/06 SMI" /* SVr4.0 1.1.3.1 */ # # root の crontab はアカウントデータを収集するために使用される。 # # rtc コマンドは、夏時間が変更されたときに、実時間クロックを調整 # するために実行される。 # 10 3 * * 0,4 /etc/cron.d/logchecker 10 3 * * 0 /usr/lib/newsyslog 15 3 * * 0 /usr/lib/fs/nfs/nfsfind 1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean 10 3 * * * /usr/krb5/lib/kprop_script kdc1.acme.sun.com #SUNWkr5ma |