Solaris のシステム管理 (第 3 巻)

IPv6 デーモン

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

in.ndpd デーモン

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

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

オプション 

説明 

-d

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

-D

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

-f

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

-I

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

-n

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

-r

受信パケットを無視する 

-v

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

-t

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

/etc/inet/ndpd.conf 構成ファイルと、/var/inet/ndpd_state.interface 起動ファイル (存在する場合) のパラメータセットは、in.ndpd の動作を制御します。

/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 varialbes
#
#
#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 ルーターの RIPng ルーティングプロトコルを実装します。RIPng は、Bellman-Ford 距離ベクトルアルゴリズムに基づく IPv4 ルーティングプロトコルで広く使用されてきた RIP の IPv6 等価を定義します。表 16-4 は、サポートされているオプションを示します。

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

オプション 

説明 

-p n

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

-q

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

-s

ルーターとしての機能に関係なく、ルーティング情報が強制される 

-P

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

-S

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

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

IPv6 有効化サーバーでは、対応するクライアントで利用している内容に応じて、IPv4 アドレスか 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 として指定します。サービスに tcp6 または udp6proto 値を指定すると、inetd は所定のデーモン AF_INET6 ソケットを渡します。

inetd.conf ファイルの次のエントリは、IPv4 クライアントアプリケーションと IPv6 クライアントアプリケーションの両方と通信できる udp サーバー (myserver) を表します。


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


myserver   dgram   udp6	wait	root	/usr/sbin/myserver	myserver

AF_INET (IPv4 専用) ソケットまたは AF_INET6 (IPv6 と IPv4) ソケットを inetd から継承できるよう IPv6 有効化サーバーを書き込むと、サービスの proto 値が tcp6 (udp6) または tcp (udp) として指定されます。この種のサーバーでは、2 つの inetd.conf エントリを、1 つは prototcp として、もう 1 つは prototcp6 として指定できます。


注 -

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


各種 IPv6 有効化サーバーの記述方法については、『ネットワークインタフェース』を参照してください。

Solaris バンドルサーバーには、いずれも prototcp6 または 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

以上のユーティリティの server_pathname として TCP ラッパー (telnet などさまざまなネットワークサービスで入力要求を監視、フィルタ処理するためのパブリックドメインユーティリティ) を指定するには、TCP ラッパーが IPv6 対応であることが条件です。対応していない場合、TCP ラッパーで使用するサービスの prototcpudp に指定する必要があります。

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


注 -

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


ソケットを使用する IPv6 有効化サーバーの記述については、『ネットワークインタフェース』を参照してください。