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

IPv6 デーモン

ここでは、次の IPv6 デーモンについて説明します。

in.ndpd デーモン

このデーモンでは、IPv6 用のルーター発見と自動アドレスの設定が実装されます。表 16–4 は、サポートされているオプションを示します。

表 16–2 in.ndpd デーモンのオプション

オプション 

説明 

-d

すべてのイベントのデバッグをオンにする 

-D

特定のイベントのデバッグをオンにする 

-f

設定を読み出す元のファイル (デフォルトファイルのかわり) 

-I

インタフェースごとに関連情報を印刷する 

-n

ルーター通知をループバックしない 

-r

受信パケットを無視する 

-v

冗長モード (さまざまな種類の診断メッセージを報告する) 

-t

パケット追跡をオンにする 

パラメータは、in.ndpd の動作を制御します。これらのパラメータは /etc/inet/ndpd.conf 構成ファイルと /var/inet/ndpd_stateinterface 起動ファイル (存在する場合) に設定されます。

/etc/inet/ndpd.conf が存在すると構文解析され、ノードをルーターとして使用するための設定が行われます。表 16–3 に、このファイルに出現する可能性がある各種キーワードをまとめます。ホストを起動してもルーターがすぐに利用できなかったり、ルーターが通知したパケットがドロップしてホストに届かないことがあります。/var/inet/ndpd_state.interface ファイルは状態ファイルです。このファイルはノードごとに定期的に更新されます。ノードに障害が発生し再起動した場合、ルーターがなくてもノードはインタフェースを設定できます。このファイルにはインタフェースアドレス、更新時間、有効期間などの情報が保存されています。また、先のルーター通知で得られた情報も保存されています。


注 –

状態ファイルの内容を変更する必要はありません。このファイルは、in.ndpd デーモンが自動的に管理します。


表 16–3 /etc/inet/ndpd.conf キーワード

キーワード 

説明 

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) のマニュアルページを参照してください。

例 – /etc/inet/ndpd.conf ファイル

次の例は、コメント行のテンプレートと、キーワードと設定変数の使用方法を示します。


# 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 qe2 AdvSendAdvertisements 1
prefix 2:0:0:54::/64 qe2
prefix fec0:0:0:54::/64 qe2

in.ripngd デーモン

in.ripngd デーモンは、IPv6 ルーターの RIP 次世代ルーティングプロトコルを実装します。このプロトコルは、IPv6 用の RIP に相当する内容を定義します。RIP は、広く使用されている IPv4 ルーティングプロトコルで、Bellman-Ford 距離ベクトルアルゴリズムに基づいています。表 16–4 は、サポートされているオプションを示します。

表 16–4 in.ripngd デーモンのオプション

オプション 

説明 

-p n

n は RIPNG パケットの送受信に使用する代替ポート番号を指定する

-q

ルーティング情報を打ち切る 

-s

デーモンがルーターとして動作しているかどうかのルーティング情報の提供を強制する 

-P

ポイズンリバースを打ち切る 

-S

in.ripngd がルーターとして機能しない場合、各ルーターにはデフォルトのルートだけが指定される

inetd インターネットサービスデーモン

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) を表します。


例 16–3 IPv4 クライアントアプリケーションと IPv6 クライアントアプリケーションの両方と通信するサーバー


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 つは prototcp として、もう1 つは prototcp6 として指定できます。


注 –

AF_INET6 ソケットは、IPv4 プロトコルと IPv6 プロトコルのどちらでも使用できるため、prototcp6 (udp6) を指定すれば充分です。


各種 IPv6 有効化サーバーの記述方法については、プログラミングインタフェースを参照してください。

Solaris ソフトウェアとともに提供されるサーバーはすべて、proto 値を tcp6 または udp6 と指定する inetd エントリが1 つあれば十分です。ただし、リモートシェルサーバー (shell) とリモート実行サーバー (exec) のエントリには、tcptcp6 の両方の proto 値を指定する必要があります。例 16–4 は、rlogintelnetshellexec 用の inetd エントリです。


例 16–4 Solaris ソフトウェアで提供されるサーバー用の inetd.conf エントリ


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 ラッパーで使用するサービスの prototcpudp に指定する必要があります。

また、Solaris ユーティリティを別の実装と入れ替える場合、そのサービスの実装が IPv6 をサポートしていることを確認する必要があります。サポートしていない場合、その実装の prototcpudp に指定する必要があります。


注 –

proto 値を tcpudp のどちらか一方に指定すると、サービスでは IPv4 だけが使用されます。IPv4 接続と IPv6 接続の両方を有効にするには、proto 値を tcp6udp6 に指定する必要があります。サービスで IPv6 をサポートしていない場合、tcp6udp6 は指定しないでください。


ソケットを使用する IPv6 有効化サーバーについては、プログラミングインタフェースのソケット API への IPv6 拡張機能についての説明を参照してください。