ネームサービススイッチは、管理者がネットワーク情報のタイプごとに、どのネーム情報サービスまたはソースを使用するかを指定できるようにする、構成可能な選択サービスです。各ネーム情報サービスは、データベースと呼ばれます。ネームサービススイッチは、次のような getXbyY() インタフェースのいずれかを呼び出すクライアントアプリケーションによって使用されます。
各システムは、SMF リポジトリ内に独自の構成を持っています。ネームサービススイッチで定義された各プロパティーによって、ホスト、パスワード、グループなどの特定のデータベースが識別されます。各プロパティーに割り当てられた値によって、情報をリクエストする先の 1 つまたは複数のソースが一覧表示されます。これらの値にガイダンスまたはオプションが含まれる場合もあります。このガイダンスには、サービスに対して必要な再試行の回数、適用するタイムアウトの種類、サービスが失敗した場合の処理などが含まれている可能性があります。
ネームサービススイッチは、DNS サーバーとクライアントサービスの管理で説明しているように、クライアントの DNS 転送も制御します。DNS 転送によって、クライアントへのインターネットでのアクセスが可能になります。
ネームサービススイッチによってサポートされるデータベースは、SMF サービスを使用して構成します。これらのデータベースのリストを取得するには、svcfg コマンドを次の例に示すように使用します。
# svccfg -s name-service/switch listprop config config application config/default astring files config/password astring "files nis" config/group astring "files nis" config/host astring "files nis" config/network astring "nis [NOTFOUND=return] files" config/protocol astring "nis [NOTFOUND=return] files" config/rpc astring "nis [NOTFOUND=return] files" config/ether astring "nis [NOTFOUND=return] files" config/netmask astring "files nis" config/bootparam astring "nis [NOTFOUND=return] files" config/publickey astring "nis [NOTFOUND=return] files" config/netgroup astring nis config/automount astring "files nis" config/alias astring "files nis" config/service astring "files nis" config/printer astring "user nis" config/auth_attr astring "files nis" config/prof_attr astring "files nis" config/project astring "files nis"
SMF の観点から、これらのデータベースは、サービスの構成可能なプロパティーであると見なされます。各データベースには、次のタイプの情報が格納されます。
alias – 電子メールアドレスと別名
auth_attr – 承認名と説明
automount – ローカルでマウントされる可能性のあるリモートファイルシステムに関する情報
bootparam – ディスクレスクライアントのブート情報
ether – Ethernet アドレスおよび一致するホスト名
group – ファイルへのアクセスを共有するために使用できるグループに関する情報
host – IP アドレスおよび一致するホスト名
netgroup – 共有 NFS ファイルシステムの情報
netmask – IP サブネットを実装するために使用されるネットワークマスク
network – ネットワークごとの名前と番号
password – ユーザーアカウント情報
prof_attr – 実行プロファイルの名前、説明、およびその他の属性
project – プロジェクト名、一意の識別子、および関連付けられたリソース割り当て
protocol – インターネットプロトコルの名前、プロトコル番号、および別名
publickey – 公開鍵情報
rpc – RPC プログラムの名前と番号
service – インターネットサービスの名前、ポート、およびプロトコル
tnrhdb – Oracle Solaris の Trusted Extensions 機能を使用しているホストのセキュリティー属性
tnrhtp – Trusted Extensions によって使用されるテンプレート
さらに、ネームサービススイッチ内の default プロパティーによって、ほかでは定義されないすべてのデータベースのソース文字列が定義されます。すべてのデータベースとその情報が /etc ディレクトリでローカルに検出されたことを示すため、このプロパティーの値は files に設定されます。使用可能なソースに基づいて、default プロパティーの別の構成を設定できます。手順については、すべてのネームデータベースのソースを変更する方法を参照してください。
default プロパティーを使用すると、データベースごとにソースを構成するのではなく、データベースに広く適用されるソースを構成することができます。
データベースのネームサービススイッチで一覧表示できるソースの種類は次のとおりです。
ad – Active Directory サーバー上に格納されているデータベースを識別します。
pam_list – 廃止された compat データベースを置き換えます。パスワードやグループ情報に使用すると、/etc/passwd、/etc/shadow、および /etc/group ファイルで旧形式の「+」または「-」構文をサポートできます。
dns – ホスト情報を DNS から取得する必要があることを指定します。
files – クライアントの /etc ディレクトリ内に格納されているファイルを指定します (たとえば、/etc/passwd)。
ldap – エントリを LDAP ディレクトリから取得する必要があることを指定します。
mdns – mDNS を使用してホスト情報を指定します。
nis – NIS マップを指定します (たとえば、hosts マップ)。
次の検索条件形式を使用すると、1 つまたは複数の情報ソースを選択したり、ソースが使用される順序を指定したりできます。
単一ソース – 情報タイプに 1 つのソースのみが含まれている場合 (files など)、スイッチを使用する検索ルーチンは、そのソース内の情報のみを検索します。情報が見つかった場合、「success」というステータスメッセージが返されます。情報が見つからない場合は、検索が停止され、「success」以外のステータスメッセージが返されます。ステータスメッセージに基づいて何をするかは、ルーチンによって異なります。
複数ソース — データベースに特定の情報タイプの複数のソースが含まれている場合、スイッチは検索ルーチンに、最初に一覧表示されているソース内を検索するよう指示します。情報が見つかった場合、「success」というステータスメッセージが返されます。最初のソースで情報が見つからない場合は、次のソースが検索されます。ルーチンは情報が見つかるか、return 処理によって中止されるまで全ソースを検索します。必要な情報がどのソースにもなかったとき、ルーチンは検索を停止し、non-success というステータスメッセージを返します。
デフォルトでは、Oracle Solaris 11 リリースで 1 番目のソースは files です。この構成によって、一覧表示されている次のソースが使用できない場合でもシステムのフリーズが回避されます。
ルーチンが情報を見つけた場合、そのルーチンは success ステータスメッセージを返します。探している情報が見つからない場合は、3 種類のエラーステータスメッセージのいずれかが返されます。可能性のあるステータスメッセージは次のとおりです。
SUCCESS – 要求されたエントリが指定されたソース内で見つかりました。
UNAVAIL – ソースが応答しないか、または使用できません。つまり、どのデータベースソースも見つからなかったか、またはアクセスできませんでした。
NOTFOUND – ソースが「エントリなし」で応答しました。つまり、データベースにはアクセスしましたが、必要な情報が見つかりませんでした。
TRYAGAIN – ソースはビジー状態にあり、次回は応答する可能性があります。つまり、データベースは見つかりましたが、クエリーに応答できませんでした。
ネームサービススイッチに、次の 2 つのアクションのどちらかでステータスメッセージに応答するよう指示できます。
return – 情報の検索を停止します。
continue – 次のソースを試行します。
さらに、TRYAGAIN ステータスメッセージについては、次のアクションを定義できます。
forever – 現在のソースを無期限に再試行します。
n – 現在のソースをさらに n 回再試行します。
ネームサービススイッチのステータスメッセージとアクションオプションの組み合わせによって、検索ルーチンが各ステップで何を実行するかが決定されます。ステータスメッセージとアクションオプションの組み合わせによって、検索条件が構成されます。
スイッチのデフォルトの検索条件は、どのソースでも同じです。検索条件のいくつかを次に示します。
UNAVAIL=continue – 次のネームサービススイッチソースに進み、検索を続行します。次のソースがなければ、「NOTFOUND」というステータスを返します。
NOTFOUND=continue – 次のネームサービススイッチソースに進み、検索を続行します。次のソースがなければ、「NOTFOUND」というステータスを返します。
TRYAGAIN=3 – 現在のソースを 3 回検索します。TRYAGAIN アクションは、操作を 3 回再試行したあとで continue に遷移し、次のネームサービススイッチソースを検索します。
デフォルトの検索条件は、STATUS=action 構文を使用して別の条件を明示的に指定することによって変更できます。手順については、データベースの検索条件を構成する方法を参照してください。
クライアントのライブラリルーチンには、ネームサービススイッチで特定の SMF プロパティーまたは default の SMF プロパティーが定義されていない場合や、プロパティーが構文的に正しくない場合に使用される、コンパイル時に組み込まれるデフォルトのエントリが含まれています。通常、これらのコンパイル時に組み込まれるデフォルトは files のみです。
keyserv デーモンは、keyserv が起動されている場合にのみ、ネームサービススイッチ内の publickey プロパティーを読み取ります。ネームサービススイッチのプロパティーが変更された場合、keyserv は、svcadm refresh svc:/network/rpc/keyserv:default を使用して keyserv デーモンが再起動されるまでその変更を登録しません。プロパティーの変更が SMF リポジトリにロードされるように、このコマンドはプロパティーが変更され、name-service/switch サービスがリフレッシュされたあとに実行する必要があります。