Solaris のシステム管理 (IP サービス)

NIS+ クライアントとしての DHCP クライアントの設定

DHCP クライアントである Solaris システム上では NIS+ ネームサービスを使用できます。しかし、このためには NIS+ のセキュリティ拡張機能を部分的に犠牲にする (つまり、DES 資格を作成する) 必要があります。 DHCP を使用しない NIS+ クライアントを設定するときは、新しい NIS+ クライアントシステムごとに一意の DES 資格を NIS+ サーバー上にある cred テーブルに追加します。この方法はいくつかあります (nisclient スクリプトまたは nisaddcred コマンドを使用する方法など)

ただし、これらの方法では、資格を作成および保存するときに静的なホスト名を使用する必要があるので、DHCP を使用する NIS+ クライアントにこの方法は使用できません。NIS+ と DHCP を使用するクライアントを設定するときは、すべての DHCP クライアントのホスト名に使用できる同一の資格を作成する必要があります。この方法では、DHCP クライアントがどのような IP アドレス (および、関連するホスト名) を受け取っても、同じ DES 資格を使用できます。


注 –

この作業を行う前に、NIS+ はセキュリティを考慮して設計されていること、ただしこの手順によってそのセキュリティが低下する (つまり、不特定の DHCP クライアントが NIS+ 資格を受け取ることができるようになる) ことを覚えておいてください。


次に、すべての DHCP ホスト名に使用できる同一の資格を作成する方法を示します。この手順を行うには、たとえば、ホスト名が DHCP サーバーによって生成されるときなどに、DHCP クライアントが使用するホスト名がわかる必要があります。

NIS+ クライアントとして Solaris DHCP クライアントを設定する方法

NIS+ クライアントになる DHCP クライアントワークステーションは、NIS+ ドメイン内にある別の NIS+ クライアントワークステーションからコピーされた資格を使用する必要があります。この手順では、当該ワークステーションのみの資格が生成され、その資格は当該ワークステーションにログインしたスーパーユーザーだけに適用されます。当該ワークステーション (DHCP クライアント) にログインした他のユーザーは、Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)の手順に従って作成された、独自の一意の資格を NIS+ サーバーに持つ必要があります。

  1. NIS+ サーバー上で次のコマンドを入力して、NIS+ クライアント用の cred テーブルエントリを一時ファイルに書き込みます。


    # nisgrep nisplus-client-name cred.org_dir> /tmp/file
    
  2. 一時ファイルの内容を見て、その資格をコピーし、そのコピーを使用して、DHCP クライアント用の資格を作成します。

    公開鍵と非公開鍵をコピーする必要があります。両者とも、コロンで区切られた数字と文字からなる長い文字列です。

  3. 次のコマンドを入力して、DHCP クライアント用の資格を追加します。 一時ファイルから公開鍵と非公開鍵の情報をコピーします。


    # nistbladm -a cname=" dhcp-client-name@nisplus-domain" auth_type=DES \
    auth_name="unix.dhcp-client-name@nisplus-domain" \
    public_data=copied-public-data \ 
    private_data=copied-private-data
    
  4. 各 DHCP クライアントシステム上で次のコマンドを入力して、NIS+ クライアントファイルを DHCP クライアントシステムにリモートコピーします。


    # rcp nisplus-client-name:/var/nis/NIS_COLD_START /var/nis
    # rcp nisplus-client-name:/etc/.rootkey /etc
    # rcp nisplus-client-name:/etc/defaultdomain /etc
    

    「permission denied (アクセスが拒否された)」というメッセージを受信した場合、システムはリモートコピーを許可するように設定されていません。この場合はまず、一般ユーザーとして、中間地点にファイルをコピーします。次に、スーパーユーザーとして、DHCP クライアントシステム上の適切な場所にファイルをコピーします。

  5. DHCP クライアントシステム上で次のコマンドを入力して、NIS+ 用の正しいネームサービス切り替えファイルを使用します。


    # cp /etc/nsswitch.nisplus /etc/nsswitch.conf
    
  6. DHCP クライアントシステムを再起動します。

    これで、DHCP クライアントシステムは NIS+ サービスを使用できます。

例 – NIS+ クライアントとしての Solaris DHCP クライアントの設定

次の例では、nisei というワークステーションが dev.example.net という NIS+ ドメイン内の NIS+ クライアントであり、dhow という DHCP クライアントを NIS+ クライアントにしようとしていると仮定します。


(first log in as root on the NIS+ server)
# nisgrep nisei cred.org_dir> /tmp/nisei-cred
# cat /tmp/nisei-cred
nisei.dev.example.net.:DES:unix.nisei@dev.example.net:46199279911a84045b8e0
c76822179138173a20edbd8eab4:90f2e2bb6ffe7e3547346dda624ec4c7f0fe1d5f37e21cff63830
c05bc1c724b
# nistbladm -a cname="dhow@dev.example.net." \
auth_type=DES auth_name="unix.dhow@dev.example.net" \
public_data=46199279911a84045b8e0c76822179138173a20edbd8eab4 \
private_data=90f2e2bb6ffe7e3547346dda624ec4c7f0fe1d5f37e21cff63830\
c05bc1c724b
# rlogin dhow
(log in as root on dhow)
# rcp nisei:/var/nis/NIS_COLD_START /var/nis
# rcp nisei:/etc/.rootkey /etc
# rcp nisei:/etc/defaultdomain /etc
# cp /etc/nsswitch.nisplus /etc/nsswitch.conf
# reboot

これで、DHCP クライアントシステム dhow は NIS+ サービスを使用できます。

スクリプトによる資格の追加

多数の DHCP クライアントを NIS+ クライアントとして設定したい場合は、これらのエントリを cred テーブルに追加するためのスクリプトを作成します。次に、このようなスクリプトの例を示します。


例 10–2 DHCP クライアントの資格を追加するスクリプトの例

#! /usr/bin/ksh  
# 
# Copyright (c) by Sun Microsystems, Inc. All rights reserved. 
# 
# Sample script for cloning a credential. Hosts file is already populated  
# with entries of the form dhcp-[0-9][0-9][0-9]. The entry we're cloning 
# is dhcp-001. 
#  
#  
PUBLIC_DATA=6e72878d8dc095a8b5aea951733d6ea91b4ec59e136bd3b3 
PRIVATE_DATA=3a86729b685e2b2320cd7e26d4f1519ee070a60620a93e48a8682c5031058df4
HOST="dhcp-" 
DOMAIN="mydomain.example.com"  
 
for 
i in 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019
do         
     print - ${HOST}${i}         
     #nistbladm -r [cname="${HOST}${i}.${DOMAIN}."]cred.org_dir         
     nistbladm -a cname="${HOST}${i}.${DOMAIN}." \
         auth_type=DES auth_name="unix.${HOST}${i}@${DOMAIN}" \
         public_data=${PUBLIC_DATA} private_data=${PRIVATE_DTA} cred.org_Dir
done  
 
exit 0