この節では、IPv6 関連のデーモンについて説明します。
in.ndpd デーモンは、IPv6 近傍検索プロトコルとルーター発見を実装します。このデーモンは、IPv6 のアドレス自動設定も実装します。次に、in.ndpd でサポートされるオプションを示します。
デバッグを有効にします。
特定のイベントのデバッグを有効にします。
デフォルトの /etc/inet/ndpd.conf ファイル以外で、設定データを読み取るファイルを指定します。
インタフェースごとに関連情報を印刷します。
ルーター広告をループバックしません。
受信パケットを無視します。
冗長モードを指定します (さまざまな種類の診断メッセージを報告する)。
パケット追跡をオンに設定します。
in.ndpd デーモンは、/etc/inet/ndpd.conf 設定ファイルに設定されたパラメータと、/var/inet/ndpd_state.interface 起動ファイルの任意の適用可能なパラメータによって制御されます。
/etc/inet/ndpd.conf が存在すると構文解析され、ノードをルーターとして使用するための設定が行われます。表 11–2 に、このファイルに現れる可能性がある有効なキーワードのリストを示します。ホストを起動しても、ルーターがすぐには使用できない場合があります。ルーターによって通知されたパケットがドロップしたり、また、通知されたパケットがホストに届かない場合もあります。
/var/inet/ndpd_state.interface ファイルは状態ファイルです。このファイルはノードごとに定期的に更新されます。ノードに障害が発生し再起動した場合、ルーターがなくてもノードはインタフェースを設定できます。このファイルにはインタフェースアドレス、最終更新時間、有効期間などの情報が含まれています。また、先のルーター広告で得られた情報も含まれています。
状態ファイルの内容を変更する必要はありません。このファイルは、in.ndpd デーモンが自動的に管理します。
設定変数とそれに指定できる値のリストについては、in.ndpd(1M) のマニュアルページと ndpd.conf(4) のマニュアルページを参照してください。
in.ripngd デーモンは、RIPng (Routing Information Protocol next-generation for IPv6 routers) を実装します。RIPng は IPv6 における RIP 相当機能を定義します。routeadm コマンドで IPv6 ルーターを設定し、IPv6 経路制御を有効にした場合、in.ripngd デーモンはそのルーターに RIPng を実装します。
次に、RIPng のサポートされるオプションを示します。
n は RIPNG パケットの送受信に使用する代替ポート番号を指定します。
経路制御情報を打ち切ります。
デーモンがルーターとして動作しているかどうかの経路制御情報の提供を強制します。
ポイズンリバースを打ち切ります。
in.ripngd がルーターとして機能しない場合、各ルーターにはデフォルトのルートだけが指定されます。
IPv6 が有効なサーバーアプリケーションは、IPv4 要求と IPv6 要求の両方、あるいは、IPv6 要求だけを処理できます。IPv6 が有効なサーバーは常に、IPv6 ソケット経由の要求を処理します。さらに、IPv6 が有効なサーバーは、対応するクライアントで使用しているプロトコルと同じプロトコルを使用します。IPv6 用にサービスを追加または変更するには、Service Management Facility (SMF) から入手できるコマンドを使用します。
SMF コマンドについては、『Solaris のシステム管理 (基本編)』の「SMF コマンド行管理ユーティリティー」を参照してください。
SMF を使用して、SCTP 経由で動作する IPv4 サービスマニフェストを設定する作業の例については、 「SCTP プロトコルを使用するサービスを追加する方法」を参照してください。
IPv6 サービスを設定するには、そのサービスの inetadm プロファイルにある proto フィールド値に、適切な値のリストが含まれていることを確認する必要があります。
IPv4 要求と IPv6 要求の両方を処理するサービスの場合、proto 値として、tcp6、udp6、または sctp を選択します。proto 値として、tcp6、udp6、または sctp6 のいずれかを選択した場合、inetd は IPv6 が有効なサーバーに IPv6 ソケットを渡します。IPv4 クライアントが要求を持っている場合に備えて、IPv6 が有効なサーバーは IPv4 マップ済みアドレスを含んでいます。
IPv6 要求だけを処理するサービスの場合、proto 値として、tcp6only または tcp6only を選択します。これらの値を proto に選択した場合、 inetd は IPv6 が有効なサーバーに IPv6 ソケットを渡します。
Oracle Solaris コマンドを別の実装で置き換えた場合、そのサービスの実装が IPv6 をサポートすることを確認する必要があります。その実装が IPv6 をサポートしない場合、proto 値と して、tcp、udp、または sctp のいずれかを指定する必要があります。
次に、IPv4 とIPv6 の両方をサポートし、SCTP で動作する echo サービスマニフェストに inetadm を実行した結果のプロファイルを示します。
# inetadm -l svc:/network/echo:sctp_stream SCOPE NAME=VALUE name="echo" endpoint_type="stream" proto="sctp6" isrpc=FALSE wait=FALSE exec="/usr/lib/inet/in.echod -s" user="root" default bind_addr="" default bind_fail_max=-1 default bind_fail_interval=-1 default max_con_rate=-1 default max_copies=-1 default con_rate_offline=-1 default failrate_cnt=40 default failrate_interval=60 default inherit_env=TRUE default tcp_trace=FALSE default tcp_wrappers=FALSE |
proto フィールドの値を変更するには、次の構文を使用します。
# inetadm -m FMRI proto="transport-protocols" |
Oracle Solaris ソフトウェアが提供されるサーバーはすべて、proto 値として、tcp6、udp6、または sctp6 のいずれかを指定するプロファイルエントリを 1 つだけ必要とします。しかし、リモートシェルサーバー (shell) とリモート実行サーバー (exec) は、現在、単一のサービスインスタンスで設定されており、proto 値として、tcp と tcp6only の両方を含める必要があります。たとえば、shell の proto 値を設定するには、次のコマンドを発行します。
# inetadm -m network/shell:default proto="tcp,tcp6only" |
ソケットを使用する IPv6 対応サーバーの作成方法の詳細については、『プログラミングインタフェース』のソケット API の IPv6 拡張機能を参照してください。
サービスを IPv6 用に追加または変更するときには、次のことに注意しておく必要があります。
IPv4 接続と IPv6 接続の両方を有効にするには、proto 値として、 tcp6、sctp6、または udp6のいずれかを指定する必要があります。proto 値として、 tcp、 sctp、または udp を指定した場合、そのサービスは IPv4 だけを使用します。
inetd に対して、一対多スタイルの SCTP ソケットを使用するサービスインスタンスも追加できますが、推奨しません。inetd は、一対多スタイルの SCTP ソケットでは機能しません。
wait-status プロパティーまたは exec プロパティーが異なるため、サービスが 2 つのエントリを必要とする場合、オリジナルのサービスから 2 つのインスタンスまたはサービスを作成する必要があります。