ndpd-router デーモン

目的

ルーター用の NDP および RIPng デーモンです。

構文

ndpd-router [ -r] [ -p] [ -M] [ -O] [ -s] [ -q] [ -g] [ -n] [ -R] [ -S] [ -d] [ -t] [ -v] [ -H ] [ -m ] [ -u port] [ -D max[min[/ life]]] [ -P [invlife]/[deplife ]] [ -T [ reachtim]/[retrans]/[hlim]] [ -e [ off | compatible | only ] ]

説明

ndpd-router デーモンは、非カーネル・アクティビティーに関し て隣接ディスカバリー・プロトコル (NDP) を管理します。 これはルーター返信請求 (Router Solicitation) を受信し、 ルーター通知 (Router Advertisement) を送信します。 また、RIPng プロトコルを使用してルーティング情報を交換することもできます。

/etc/gateway6 ファイルには、ndpd-router のオプションが用意されています。 このファイルは、プログラムの実行中に修正できます。これらの変更は、 メッセージの出力または受信前、あるいは、HUP シグナルの受信時に検査されます。このファイルには、 ディレクティブが 1 行に 1 つずつの割合で (コメントとして # が付けられて) 収められています。このファイルでは、 すべての IPv6 アドレスと接頭部を数字フォーマットにする必要があります。シンボル名は使用できません。ゲートウェイ・ディレクティブを除き、 各行はキーワードで始まり、key=argument の形式を持つオプションからなります。

インターフェース

ndpd-router デーモンによって、IEEE および CTI Point-to-Point インターフェースが認識されます。ndpd-router デーモンによって、 既知のインターフェースのすべてのパケットがリンク・ローカル・アドレスと交換されます。インターフェースの状況のどのような変更も検出されます。 インターフェースがダウンしたり、あるいはそのリンク・ローカル・アドレスを失うと、 NDP と RIPng の処理は、そのインターフェース上で停止します。インターフェースが立ち上がると、 NDP と RIPng の処理は開始されます。

ルーター通知または RIPng パケット (またはその両方) を送信するには、 ローカルおよび リモートの両方のリンク・ローカル・アドレスを構成する必要があります。

フラグ

項目 説明
-e [off | compatible | only ] 以下のような SEND モードを指定します。
off
SEND オプションが使用不可であることを意味します。例えば、ルーターは RFC 3971/3972 より以前のままで機能します。
compatible
ルーターは RFC 3971/3972 に準拠しますが、RFC で指定されたオプションは不要です。この環境では、あるノードが SEND 可能であり、他ノードが不可能であるような環境にすることができます。ただし、SEND オプションが着信パケットに組み込まれている場合は、そのオプションは正しい必要があります。
only
すべてのメッセージが RFC 3971/3972 に準拠する必要があり、準拠しない場合はそのメッセージが拒否されることを意味します。
SEND オプションを使用可能にするには、clic.rte ファイルセットと OpenSSL をインストールする必要があります。
-H モバイル IPv6 ホーム・エージェントとして機能するために必要な NDP フィーチャーを、 システムが処理できるようにします。
-m モバイル IPv6 モバイル・ノードの移動検出をシステムが補助できるようにします。
-D max [min[/ life]] 非送信請求ルーター通知を min 秒から max 秒の間隔で送信します。デフォルトの max 値は 600 秒で、 有効範囲は 4 から 1800 秒です。デフォルトの minmax / 3 です。 有効範囲は 1 から 0.75 * max までです。 ルーターのライフタイムは life を使用して設定されます。このデフォルト値は 10 * max です。有効範囲は 0 秒から 65535 秒までです。
-T [reachtim ] / [retrans] / [hlim] reachim がゼロでなければ、 BaseReachableTime フィールドを reachim 秒に設定します。retrans がゼロでなければ、 RetransTime フィールドを retrans 秒に設定します。 hlim がゼロでなければ、ルーター通知のホップ制限フィールドを hlim に設定します。
-M 通知の M フラグ (状態構成) を設定します。
-O 通知の O フラグ (その他の状態情報) を設定します。
-p 接頭部 (インターフェース構成から入手) は提供しません。
-P [invlife]/[deplife] 告知済み接頭部に関して、無効な存続値と使用すべきではない存続値を (秒数で) 設定します。デフォルト値は 0xffffffff (無限) です。
-r ルーター通知でデフォルト・ルーターを提供しません。
-s RIPng プロトコルを使用可能にします (デフォルトの設定は、RIPng の使用不可です)。
-q RIPng プロトコルを使用可能にします。ただし、RIPng パケットは送信しません。
-g RIPng でデフォルト経路指定をブロードキャストします。
-n RIPng で受信した経路指定はインストールしません。
-u port UDP ポートの port を RIPng に使用します。デフォルトは 521 です。
-R split horizon without corrupting reverse を RIPng に使用します。
-S どのような split horizon (スプリット・ホライズン) も RIPng に使用しません。
-d デバッグを可能にします (例外条件およびダンプ)。
-v 関心のあるすべてのイベント (daemon.info およびコンソール) をログに記録します。
-t ログに記録されたメッセージにタイム・スタンプを追加します。

使用可能なディレクティブ

/etc/gateway6 ファイルの主なディレクティブは以下のものです。
option [option-directive ...]
per-interface/default オプションを設定します。
prefix [prefix-directive ...]
per-interface/default プレフィックス処理オプションを設定します。
filter [filter-directive ...]
per-interface/default フィルターを設定します。
ゲートウェイ・ディレクティブ
RIPng パケットまたはカーネルに経路を設定します。
これらのディレクティブについては、以下で詳細に説明します。

オプションのディレクティブ

別の per-interface オプションを設定します。

if オプションの後に続けて option ディレクティブへの 値を設定する場合は、リスト内にコンマで区切って指定する必要があります。
注: 以下の option ディレクティブには、 少なくとも 1 つのオプション (if オプション以外) を指定する必要があります。 if オプションを指定する場合は、 option ディレクティブの後に最初のオプションとして指定する必要があります。 if オプションと、これに続くオプションのリスト (コンマで 区切られたリスト) の間には 1 つのスペースが必要です。

構文:

option [ if=n1,n2 ] ripin=(y|n),ripout=(y|n|S|R),rtadv=(y|n|min[/max]),flag=[M|O],life=Seconds,reach=Seconds,retrans=Seconds

項目 説明
if=list interface=list キーワードがない場合、オプション・ディレクティブがデフォルト・オプションになります。インターフェース・フィールドがある場合、 オプション・パラメーターは、リストされているインターフェースにのみ適用されます。 list は、コンマで区切られます。le* を使用してすべての leX インターフェースを指定できます。デフォルト・オプションは、/etc/gateway6 ファイルの 1 行目に指定する必要があります。
mtu [=mtuval] ルーター通知で mtuval の MTU 値を通知します。mtuval 引数がない場合、 通知される MTU は、インターフェースの MTU になります。mtuval が 0 の場合、MTU の通知は抑止されます。
ripin=(n| y) 着信の RIPng パケットの listen は行いません。 RIPng パケットの送信 (send) は行いません。split horizon (スプリット・ホライズン) を -S フラグでは使用しません。-R フラグの場合は、split horizon without poisoning reverse を使用します。
rtadv=(n| y|min [/ max]) ルーター通知の送信 (send) は行いません。 min[/max] オプションでは、 ルーター通知の間隔 (秒) を指定します。
flag={M| O} ルーター通知で状態モード・フラグを設定します。
M
状態構成を使用します。
O
状態構成を使用します。ただし、アドレスには使用しません。
life=Seconds ルーター通知のルーター存続フィールドの値を (秒単位で) 設定します。
reach=Seconds ルーター通知の到達可能フィールドの値を (秒単位で) 設定します。
retrans=Seconds ルーター通知の再伝送間隔フィールドの値を (秒単位) で設定します。

接頭部ディレクティブ

ルーター通知ディレクティブで告知される接頭部を定義します。インターフェースの prefix-directive がない場合は、 ルーター通知に、インターフェースのアドレス・リストから導出された接頭部のリストが含まれます。prefix-directive がある場合は、 ルーター通知に、さまざまな接頭部指示によって (順番に) 定義された接頭部のリストが含まれます。 カーネルには接頭部はインストールされません。prefix=none という形式の接頭部を持つディレクティブが 1 つあれば、 接頭部リストは通知されません。

構文:

prefix if=n prefix=(none|xxx::/PrefixLength) flag=[ L][A] valid= Seconds deprec=Seconds

項目 説明
if=Interface または interface=Interface ディレクティブを適用するインターフェースを指定します。 prefix ディレクティブには if キーワードが必須です。 これはオプションではありません。
prefix=xxx ::/PrefixLength 通知される接頭部。
flag=[L][A] 接頭部に対して L または A (あるいはその両方の) フラグを設定します (デフォルトは LA です)。
deprec=Seconds 接頭部を使用すべきでない時間を (秒単位で) 指定します。
valid=Seconds 接頭部の妥当な時間を (秒単位で) 指定します。

フィルター・ディレクティブ

着信 (filter=in) または発信 (filter= out) RIPng パケットのフィルター・パターンを定義します。 1 つのインターフェースにつき着信フィルターと発信フィルターが 1 つずつあり、 明示フィルターを使用しないインターフェースに関して、デフォルトの着信フィルターと発信フィルターが 1 つずつあります。

受信した RIPng 情報はすべて、インターフェースの入力フィルターに照らしてテストされ、 入力フィルターがない場合は、デフォルトの入力フィルターに照らしてテストされます。静的インターフェース経路指定は、 インターフェース、ならびにそのインターフェースのリンク・ローカル・アドレスが指定されたゲートウェイから発信される入力情報として示されます。 gateway キーワードを持つゲートウェイ・ディレクティブで設定された経路は、 指定されたインターフェースとゲートウェイから来た入力情報と見なされます。ゲートウェイ・キーワードなしにゲートウェイ・ディレクティブで設定した経路指定とデフォルト経路指定 (-g フラグ) は、 インターフェースからではなく、ゲートウェイ :: から発信される入力情報として示されます (デフォルトの入力フィルターが適用されます)。

送信される RIPng 情報はすべて、インターフェースの出力フィルターに照らしてテストされ、 出力フィルターがない場合は、デフォルトの入力フィルターに照らしてテストされます。

それぞれのフィルターは、突き合わせパターンのシーケンスです。これらのパターンは、順番にテストされます。 それぞれのパターンごとに、接頭部の長さ、ソース・ゲートウェイ (入力フィルターの場合)、ならびに、 その (ゼロで埋め込まれた) 接頭部が固定接頭部と一致しているかどうかをテストすることができます。パターンに複数のテスト記述が入っている場合、 突き合わせは、それらすべてのテストの結合になります。 最初の一致するパターンでは、実行するアクションを定義します。一致したパターンがない場合は、 デフォルトのアクションが受け入れられます。実行される可能性のあるアクションは、accept、 reject、および truncate/NumberOfBits です。 truncate/NumberOfBits アクションは、 パターンが一致し、かつ接頭部の長さが NumberOfBits 以上である場合に、 新しい長さ NumberOfBits を持つ接頭部を受け入れることを意味します。 受け入れられる接頭部はすぐに受け入れられます。つまり、 フィルターに照らして再度検査されることはありません。

例えば、次のディレクティブは、 明示的な発信フィルターを持たないインターフェースにホスト経路を送信することを禁止します。
filter=out length==128 action=reject

構文:

filter=(in|out) [if=n1,n2] prefix=xx::/NumberOfBits gateway=xxx length=(=|>=|<=|<|>)NumberOfBits action=(accept|reject|truncate/xx)

項目 説明
if=list または interface=list interface キーワードがない場合、フィルター・ディレクティブがデフォルト・オプションになります。interface フィールドがある場合、 フィルター・パターンは、指定されたすべてのインターフェースのフィルターの最後に追加されます。 list は、コンマで区切られます。例えば、interface=le* と指定すれば、 すべての leX インターフェースを指定できます。
prefix=xxx ::/NumberOfBits パターンは、xxx::/NumberOfBits が RIPng パケット内の接頭部の接頭部である場合のみ一致します。
gateway=xxx パターンは、RIPng メッセージがソース・アドレス xxx から来て、着信フィルターの中にある場合のみ一致します。
length=(=|>=|<=|<|>)NumberOfBits パターンは、RIPng メッセージ内の接頭部の長さが NumberOfBits に等しい (または、指定された演算子により、 より大、より小などの) 場合にのみ一致します。
action=(accept |reject|truncate/ NumberOfBits) パターンが一致した場合に実行するアクションを指定します。つまり、 メッセージを受け入れること、メッセージをリジェクトすること、あるいは、 受け入れるが接頭部を NumberOfBits ビットに切り捨てることを指定します。

ゲートウェイ・ディレクティブ

ゲートウェイ・ディレクティブを使用すると、 RIPng パケットまたはカーネル (あるいはその両方) に経路を設定できます。 これらのディレクティブは、/etc/gateway6 ファイルの最後に、 その他のディレクティブの後に指定する必要があります。

構文:

xxx::/NumberOfBits metric Value

xxx::/NumberOfBits metric Value gateway IPv6Address ifname

2 番目の構文は、カーネルに経路を追加する場合に使用します。

次に /etc/gateway6 ファイルの例を示します。

すべてのアドレスが 5f06:2200:c001:0200:xxxx の形式を持つサイトで、 次の例は、すべてのサイトを記述する 1 つの経路だけが、 すべての構成済みトンネル・インターフェース (CTI) ctiX インターフェースにエクスポートされることを意味します。 示されているキーワードの省略形は有効です。

filt=out if=cti* pref=5f06:2200:c001:0200::/64 len=>=64 act=trunc/64

デフォルトの発信経路を設定します。

::/0 metric 2 gateway 5f06:2200:c102:0200::1 cti0

RIPng を持つアクティブなすべての CTI インターフェースが、デフォルト経路を定義することを宣言します。

filter=in if=cti* act=trunc/0

次の例は、外部への接続として cti0 を使用するサイトを定義している例です。 このとき、cti0 は ctiX を介して接続される他のサイトを集約しており、また、split horizon without corrupting reverse 方式を使用しています。すべてのフィルターの記述が cti0 に適用するので、行の順序は重要です。

option if=cti* ripout=R
filter=out if=cti0 prefix=5f06:2200::/24 len=>=24 act=trunc/24
filt=out if=cti* pref=5f06:2200:c001:0200::/64 len=>=64 act=trunc/64
filter=in if=cti0 act=trunc/0
filter=in if=cti* prefix=5f06:2200::/24 len=>=24 act=trunc/64
filter=in if=cti* act=reject

診断

すべてのエラーは、デバッグ・オプションが設定されていない場合、daemon.err レベルでログが取られます。 これには、/etc/gateway6 ファイル内のすべての構文エラー、ならびに、異なるルーター相互間の構成の不一致が含まれます。

シグナル

ndpd-router は次のシグナルに応答します。

項目 説明
SIGINT syslog が定義されていれば、その現在の状態を syslog にダンプします。定義されていなければ、stdout にダンプします。
SIGHUP ファイル /etc/gateway6 が再度読み取られます。
SIGUSR1 詳細度を増大します。
SIGUSR2 詳細度をリセットします。
SIGTERM 適切な状態にリセットし、停止します。
SIGQUIT 適切な状態にリセットし、停止します。

ファイル

項目 説明
/etc/gateway6  
/etc/ndpd/sendr_anchor 証明書チェーン用の SEND ルーター・アンカー・ファイル。