ここでは、次の IPv6 デーモンについて説明します。
in.ndpd – IPv6 自動設定用のデーモン
in.ripngd – IPv6 のネットワークルーティングデーモン
inetd – インターネットサービスデーモン
このデーモンはルータ発見を実装します。 デーモンは、IPv6 の自動アドレス設定も実装します。 表 3–4 は、サポートされているオプションを示します。
表 3–2 in.ndpd デーモンのオプション
オプション |
説明 |
---|---|
-d |
すべてのイベントのデバッグをオンにする |
-D |
特定のイベントのデバッグをオンにする |
-f |
設定を読み出す元のファイル (デフォルトファイルのかわり) |
-I |
インタフェースごとに関連情報を印刷する |
-n |
ルーター通知をループバックしない |
-r |
受信パケットを無視する |
-v |
冗長モード (さまざまな種類の診断メッセージを報告する) |
-t |
パケット追跡をオンにする |
パラメータは、in.ndpd の動作を制御します。これらのパラメータは /etc/inet/ndpd.conf 設定ファイルと /var/inet/ndpd_state.interface 設定ファイル (存在する場合) に設定されます。
/etc/inet/ndpd.conf が存在すると構文解析され、ノードをルーターとして使用するための設定が行われます。表 3–3 に、このファイルに出現する可能性がある各種キーワードをまとめます。ホストを起動しても、ルータがすぐには使用できない場合があります。ルータによって通知されたパケットがドロップしたり、また、通知されたパケットがホストに届かない場合もあります。/var/inet/ndpd_state.interface ファイルは状態ファイルです。このファイルはノードごとに定期的に更新されます。ノードに障害が発生し再起動した場合、ルーターがなくてもノードはインタフェースを設定できます。このファイルにはインタフェースアドレス、更新時間、有効期間などの情報が保存されています。また、先のルーター通知で得られた情報も保存されています。
状態ファイルの内容を変更する必要はありません。このファイルは、in.ndpd デーモンが自動的に管理します。
キーワード |
説明 |
---|---|
ifdefault |
すべてのインタフェースのルーターの動作を指定する。次の構文を使用してルーターパラメータと対応する値を設定する ifdefault [variable value] |
prefixdefault |
プレフィックス通知のデフォルトの動作を指定する。次の構文を使用してルーターパラメータと対応する値を設定する prefixdefault [variable value] |
if |
インタフェース別パラメータを設定する。構文は次のとおり if interface [variable value] |
prefix |
インタフェース別プレフィックス情報を通知する。構文は次のとおり prefix prefix /length interface [variable value] |
ifdefault と prefixdefault エントリは、設定ファイルの if エントリと prefix エントリの前に置く必要があります。
設定変数と設定できる値については、in.ndpd(1M) と ndpd.conf(4) のマニュアルページを参照してください。
次の例は、コメント行のテンプレートと、キーワードと設定変数の使用方法を示します。
# ifdefault [variable value]* # prefixdefault [variable value]* # if ifname [variable value]* # prefix prefix/length ifname # # Per interface configuration variables # #DupAddrDetectTransmits #AdvSendAdvertisements #MaxRtrAdvInterval #MinRtrAdvInterval #AdvManagedFlag #AdvOtherConfigFlag #AdvLinkMTU #AdvReachableTime #AdvRetransTimer #AdvCurHopLimit #AdvDefaultLifetime # # Per Prefix: AdvPrefixList configuration variables # # #AdvValidLifetime #AdvOnLinkFlag #AdvPreferredLifetime #AdvAutonomousFlag #AdvValidExpiration #AdvPreferredExpiration ifdefault AdvReachableTime 30000 AdvRetransTimer 2000 prefixdefault AdvValidLifetime 240m AdvPreferredLifetime 120m if qe0 AdvSendAdvertisements 1 prefix 2:0:0:56::/64 qe0 prefix fec0:0:0:56::/64 qe0 if qe1 AdvSendAdvertisements 1 prefix 2:0:0:55::/64 qe1 prefix fec0:0:0:56::/64 qe1 if hme1 AdvSendAdvertisements 1 prefix 2002:8192:56bb:1::/64 qfe0 if hme1 AdvSendAdvertisements 1 prefix 2002:8192:56bb:2::/64 hme1 |
in.ripngd デーモンは、IPv6 ルーターの RIP 次世代ルーティングプロトコルを実装します。このプロトコルは、IPv6 用の RIP に相当する内容を定義します。RIP は、広く使用されている IPv4 ルーティングプロトコルで、Bellman-Ford 距離ベクトルアルゴリズムに基づいています。表 3–4 は、サポートされているオプションを示します。
表 3–4 in.ripngd デーモンのオプション
オプション |
説明 |
-p n |
n は RIPNG パケットの送受信に使用する代替ポート番号を指定する |
-q |
ルーティング情報を打ち切る |
-s |
デーモンがルーターとして動作している場合でもルーティング情報の提供を強制する |
-P |
ポイズンリバースを打ち切る |
-S |
in.ripngd がルーターとして機能しない場合、各ルーターにはデフォルトのルートだけが指定される |
IPv6 有効化サーバーは、IPv4 アドレスか IPv6 アドレスを処理できるサーバーです。IPv6 有効化サーバーは、対応するクライアントで使用しているプロトコルと同じプロトコルを使用します。/etc/inet/inetd.conf ファイルには、inetd(1M) がソケット経由でインターネット要求を受信したときに呼び出すサーバーリストが保存されています。ソケットベースのインターネットサーバーエントリはそれぞれ、次の構文を使用する 1 行です。
service_name socket_type proto flags user server_pathname args |
各フィールドに指定できる値については、inetd.conf(4) のマニュアルページを参照してください。Solaris オペレーティング環境の場合、IPv6 有効化としてサービスを /etc/inet/inetd.conf ファイルに指定するには、proto フィールドに tcp6 または udp6 を指定します。サービスが IPv4 専用の場合、proto フィールドは tcp または udp として指定します。サービスの proto 値に tcp6 または udp6 を指定すると、inetd は所定のデーモンに AF_INET6 ソケットを渡します。
inetd.conf ファイルの次のエントリは、IPv4 クライアントアプリケーションと IPv6 クライアントアプリケーションの両方と通信できる udp サーバー (myserver) を表します。
myserver dgram udp6 wait root /usr/sbin/myserver myserver |
IPv6 有効化サーバーは、AF_INET (IPv4 専用) ソケットまたは AF_INET6 (IPv6 と IPv4) ソケットを inetd から継承できます。サービスに対して proto 値は、tcp6、 udp6、tcp または udp として指定されています。この種のサーバーでは、2 つの inetd.conf エントリを指定できます。1 つは proto を tcp として、もう1 つは proto を tcp6 として指定できます。
AF_INET6 ソケットは、IPv4 プロトコルと IPv6 プロトコルのどちらでも使用できるため、proto 値 tcp6 (udp6) を指定すれば充分です。
各種 IPv6 有効化サーバーの記述方法については、『プログラミングインタフェース』を参照してください。
Solaris ソフトウェアとともに提供されるサーバーはすべて、proto 値を tcp6 または udp6 と指定する inetd エントリが1 つあれば十分です。ただし、リモートシェルサーバー (shell) とリモート実行サーバー (exec) のエントリには、tcp と tcp6 の両方の proto 値を指定する必要があります。例 3–6 は、rlogin、telnet、shell、exec 用の inetd エントリです。
login stream tcp6 nowait root /usr/sbin/in.rlogind in.rlogind telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd shell stream tcp nowait root /usr/sbin/in.rshd in.rshd shell stream tcp6 nowait root /usr/sbin/in.rshd in.rshd exec stream tcp nowait root /usr/sbin/in.rexecd in.rexecd exec stream tcp6 nowait root /usr/sbin/in.rexecd in.rexecd |
TCP ラッパーは、telnet などさまざまなネットワークサービスで入力要求を監視、フィルタ処理するためのパブリックドメインユーティリティです。以上のユーティリティの server_pathname として TCP ラッパーを指定する場合、TCP ラッパーが IPv6 対応である必要があります。対応していない場合、TCP ラッパーで使用するサービスの proto を tcp か udp に指定する必要があります。
また、Solaris ユーティリティを別の実装と入れ替える場合、そのサービスの実装が IPv6 をサポートしていることを確認する必要があります。サポートしていない場合、その実装の proto を tcp か udp に指定する必要があります。
proto 値を tcp か udp のどちらか一方に指定すると、サービスでは IPv4 だけが使用されます。IPv4 接続と IPv6 接続の両方を有効にするには、proto 値を tcp6 か udp6 に指定する必要があります。サービスで IPv6 をサポートしていない場合、tcp6 や udp6 は指定しないでください。
ソケットを使用する IPv6 有効化サーバーについては、『プログラミングインタフェース』のソケット API への IPv6 拡張機能についての説明を参照してください。