ROUTED
Section: Maintenance Commands (8)
索引
jman
BSD mandoc
索引
名称
routed
rdisc
- ネットワークの RIP と router discovery のルーティングデーモン
索引
書式
[-sqdghmpAtv
]
[-T tracefile
]
[-F
net [/mask [,metric]
]
]
[-P parms
]
索引
解説
ユーティリティはネットワークのルーティングテーブルを管理するデーモンで、
システムのブート時に起動されます。
デーモンはカーネルのルーティングテーブルを管理するために、
ルーティング情報プロトコル (Routing Information Protocol) の
RIPv1 (RFC 1058), RIPv2 (RFC 1723) および
Internet Router Discovery Protocol (RFC 1256) を用います。
RIPv1 プロトコルは
BSD 4.3
のデーモンのものをベースとしています。
デーモンはルーティング情報プロトコルのパケットを待つために、
route(8)
サービス
( services(5)
参照) 用の
udp(4)
ソケットを listen します。また、マルチキャストによる Router Discovery の
ICMP メッセージの送受信も行います。
ホストがルータだった場合、
は直接接続されている全てのホストとネットワークに、
ルーティングテーブルの複製を定期的に提供します。
また、 Router Discovery の ICMP メッセージを用いて
デフォルトルートの広告や要求を行います。
が動作し始めると (または、ネットワークインタフェースがオンになると)、
は AF_ROUTE アドレスファミリを用いて、システムに直結されていて
コンフィギュレーションされているインタフェースのうちで "up" とマークされて
いるものを探します。そしてそのインタフェースに必要な経路をカーネルの
ルーティングテーブルに追加します。スタート直後で、RIP が無効になっていない
インタフェースが少なくとも 1 つある場合、
はカーネルのテーブル内に既に存在する静的でない経路を全て削除します。
カーネルのテーブル内にある静的な経路は保存され、有効な RIP metric を
持っているものは RIP レスポンスに含められます
( route(8)
参照)。
複数のインタフェース (ループバックインタフェースは含めません) が存在する
場合、そのホストは接続されているネットワーク間でパケットを中継するものと
みなされます。RIP
リクエスト
と Router Discovery の広告や要求を新しいインタフェース上で送信した後、
デーモンはループに入り、他のホストからの
RIP リクエスト、RIP レスポンス、 Router Discovery のパケットを
listen します。
リクエスト
パケットを受信すると、
は内部テーブルに持っている情報からリプライを作成します。
作成された
レスポンス
パケットは既知の経路のリストを含み、各経路に
"hop count" metric がつきます (16 以上は "無限大" とみなされます)。
広告される経路の metric は、それを送受信するインタフェースに設定した
metric を反映するため
( ifconfig(8)
参照)、トラフィックを制御するにはインタフェースの metric を設定するのが
良い方法です。
下記の
adj_inmetric
と
adj_outmetric
パラメータも参照して下さい。
split-horizon
をある程度実装しているため、レスポンスは
リクエストしてきたネットワークの 1 hop 先の経路を含みません。
rtquery(8)
のような問い合わせプログラムからのリクエストに対しては、テーブル全体
から答を導き出します。
ルータの故障から素早く復旧できるようにするため、
デーモンが管理するルーティングテーブルには各到達先用のゲートウェイをいくつか
覚えておくための空間があります。受けとった RIP
レスポンス
パケットがルーティングテーブルの更新に使用されるのは、
現在認識しているゲートウェイのうちの 1 つから提供された場合、
もしくは現在あるゲートウェイのうちの少なくとも 1 つよりも
よい metric を広告している場合です。
更新を行う時、
は自分自身が持つテーブルに変更を記録し、到達先への最適な経路が変更された
場合にはカーネルのルーティングテーブルを更新します。カーネルの
ルーティングテーブルに対するこの変更は、次に送出される
レスポンス
パケットに反映されます。次のレスポンスがしばらくの間スケジューリングされない
場合には、最近変更された経路だけを含んだ
flash update
レスポンスが送られます。
到着パケットの処理に加えて、
は定期的にルーティングテーブルのエントリをチェックします。
あるエントリが 3 分間更新されなかった場合、
そのエントリの metric は無限大として設定され、
削除のためのマークがつけられます。
この無効化がローカルなインターネット全体に伝搬されるのを保証するために、
削除はその経路が無限大の metric を持つと広告されるまで延期されます。これが
poison reverse
方式です。
カーネルのテーブル内の経路のうちで ICMP Redirect メッセージの結果として
追加や変更されたものは、
black-holes
を最小にするために、しばらく経ってから削除されます。
TCP コネクションのタイムアウトが起こると、カーネルは
に対し、そのゲートウェイを通る全てのリダイレクトされた経路を削除し、
そのゲートウェイを通る全ての RIP の経路の年齢を増やすことで他のゲートウェイが
選択されるようにし、関連する全ての Router Discovery Protocol の
デフォルトルートの年齢を増やします。
ネットワーク間ルータとして動作するホスト群は、直接接続されているホストおよび
ネットワークすべてに対し、30 秒ごとにルーティングテーブルを無条件で提供します。
この RIP レスポンスは、ブロードキャストをサポートしているネット上の
ブロードキャストアドレス、point-to-point リンクの到達先アドレス、
ルータ自身の他のネットワークでのアドレスに対して送信されます。
RIPv2 が有効になっている場合は、マルチキャストをサポートしているインタフェース
に対してマルチキャストパケットが送られます。
リモートインタフェース上でレスポンスが受信されない場合や、
レスポンスを送信中にエラーが起こった場合や、
エラーが入力や出力よりも多い場合
( netstat(1)
参照) は、ケーブルやインタフェースの他の部分が接続されていないか壊れている
とみなされ、その経路は適切に変更されます。
Internet Router Discovery Protocol
も同様に扱われます。デーモンが RIP の経路を配っている時は、 Router Discovery
の要求の listen と Router Discovery の広告の送信も行います。
デーモンが静かな状態で他の RIP ルータからのパケットを listen している時には、
Router Discovery の要求を送信して、Router Discovery の広告を listen します。
デーモンは信頼できる広告を受信して、かつ複数のホームを持たない場合に、
RIP レスポンスのブロードキャストやマルチキャストを listen するのをやめます。
現在利用中のルータが死んだ場合に障害のある状態から短時間で修復できるよう、
広告されているルータのいくつかを追跡します。
もし発見しておいたルータが全て見えなくなった場合、デーモンは
RIP レスポンスの listen を再開します。
デーモンは、複数のホームを持つ場合に
すべてのインタフェースが使用されていることを確実にするため、
Router Discovery の使用中は RIP の listen を継続します。
Router Discovery の仕様では、広告の "存続期間" をデフォルトで 30 分とすることを
要求しています。
これは、何かが起こった場合に
クライアントに 30 分間よい経路がなくなる可能性があることを意味しています。
コマンドラインで
-P rdisc_interval=45
と指定したり
/etc/gateways
に
rdisc_interval=45
と書くことでデフォルトを 45 秒にするのは良い考えです。
Router Discovery を利用している場合 (システムが持っている
ネットワークインタフェースが 1 つだけでかつ Router Discovery の広告を
受けた場合にはこれがデフォルトです)、カーネルのテーブル内には
デフォルトルートは 1 つだけで、ホストへの経路は可変個数となります。
複数のネットワークインタフェースを持つホストでは、
このデフォルトルートはそのインタフェースのうちの 1 つだけを経由します。
このため、複数のホームを持つホストで
-q
つきで動作しているものは、
以下に示す
no_rdisc
が必要です。
RIPv2 と Router Discovery のどちらも扱うことができない "遺物の" システムを
サポートするためには、以下に記述してある
pm_rdisc
を参照して下さい。
デフォルトでは、point to point リンク (たとえば PPP) には Router Discovery
の広告も要求も送信されません。
は、
point-to-point リンク (SLIP や PPP のような、IFF_POINTOPOINT フラグ
のついたもの) のネットマスクを使用して、
RIPv1 利用時にリモートシステムで使われているネットマスクを
推定します。
以下のオプションを使用可能です:
- -s
-
は強制的にルーティング情報を提供します。
これは、RIP や Router Discovery を無効にしていない状態で複数の
ネットワークインタフェースが存在し、カーネルが ipforwarding=1 に
なっている場合にはデフォルトです。
- -q
-
-s
オプションとは逆の動作をします。
インタフェースが 1 つだけの場合は、これがデフォルトです。
このオプションを指定すると、デーモンは RIP に対して常に "quiet-mode"
となり、ルーティング情報を他のコンピュータに提供しません。
- -d
-
バックグラウンドでは動作しません。このオプションは対話的に使用するための
ものです。
- -g
-
ネットワーク間ルータにおいて "default" の到達先への経路を設ける
ために使われます。これは
-F
0/0,1
と同じ意味を持ち、主として歴史的理由のために存在します。
これよりは、
-P pm_rdisc
をコマンドラインで指定するか、
pm_rdisc
を
/etc/gateways
で指定するほうがよいでしょう。
大きな metric を使用すれば、
潜在的に危険なデフォルトルートが広まる可能性を減らせます。
これは、典型的にはインターネットへのゲートウェイで用いられるか、
経路を他のローカルルータに対して報告しない、別の
ルーティングプロトコルを利用しているゲートウェイで用いられます。
metric には 1 が使われるため、この機能は危険です。
このオプションは一般に、
問題を解決するよりも、ルーティングのループによる混乱を引き起こしがちです。
- -h
-
ホストルートまたは point-to-point ルートを広告しません。
これらは同一方向へ向かうネットワークルートであると規定されます。これは
特別な性質を持つ集合です。このオプションは、
SLIP のような point-to-point リンクで他のゲートウェイマシンを接続させている
Ethernet へのゲートウェイにおいて有効です。
- -m
-
マシンが、そのプライマリインタフェースへのホストルートや point-to-point ルート
を広告するようになります。
これは NFS サーバのような複数のホームを持つマシンにおいて有効です。
このオプションは、作成したホストルートのコストがサーバの人気で正当化される
場合を除いて、使うべきではありません。
これは、マシンがルーティング情報を供給していて、複数のインタフェースを
持っている場合にのみ効果があります。
-m
オプションは、
-q
オプションを無効にして、
ホストルートの広告を限定した範囲に制限します。
- -A
-
RIPv2 の認証に注意を払わない場合に、RIPv2 の認証を無視しません。
RFC 1723 に準拠するためにはこのオプションが必要です。
しかしながら、これは意味がなく、マシンが認証について注意を払わない場合に
認証を運ぶ全ての RIPv2 パケットを無視する目的で検出プロトコルとして
RIP を使うことの妨げとなります。
- -t
-
デバッグレベルを増やします。
-T
で指定したトレースファイルや標準出力に対し、より詳細な情報を記録するように
なります。デバッグレベルは
SIGUSR1
シグナルや
SIGUSR2
シグナルや
rtquery(8)
で増減できます。
- -T tracefile
-
デバッグレベルを最低でも 1 まで上げ、デバッグ情報をトレースファイルに
書き加えるようにします。セキュリティ上の都合により、
がファイルへのトレースを日常的に行うようにはしないのが賢明です。
- -v
-
デーモンのバージョンを表示して記録します。
- -F net[/mask][,metric]
-
net/mask
にマッチするアドレスを持つインタフェースを介した転送における経路を最小にし、
このマシンへのデフォルトルートを metric 数
metric
で作成します。この目的は、RIP 情報をもつ多数の大きな UDP パケットを "にせ" の
デフォルトルートを含んだ 1 つの小さなパケットに置き換えることで、
遅い、たとえば PPP のような point-to-point リンクでの RIP のトラフィックを
減らすことにあります。
もし
metric
がない場合は、"にせ" のデフォルトルートが広まるのを制限するために 14 が
指定されたものとみなします。
この機能は、不注意に使うとルーティングのループを引き起こすので危険です。
指定したネットワーク番号とマスクに複数のインタフェースがマッチする可能性がある
ことにも注意して下さい。
-g
も参照してください。
- -P parms
-
パラメータ行
parms
を
/etc/gateways
ファイルに書くのと同じです。
提供された他の引数は、
の動作を記録するファイルの名前として解釈されます。
トレースファイルの名前をコマンドに追加するよりは、
-T
を使った方がよいでしょう。
上記の機能に加えて、
ユーティリティは "遠隔にある"
passive
もしくは
active
なゲートウェイという概念をサポートします。
は動作を開始すると、
/etc/gateways
を読み込んで、
ルーティングソケットからの情報だけでは突き止められない可能性を持つ
遠隔のゲートウェイを見つけ、ローカルのゲートウェイが
passive
かどうかを知り、そしてその他のパラメータを取得します。
このようにして指定したゲートウェイには、
ルーティング情報を交換するつもりがない場合には passive、
RIP パケットを交換しても構わない場合には active の
マークを付ける必要があります。
passive
ゲートウェイを通る経路は、起動時に一度だけ
カーネル内の経路表に設定され、送出される RIP レスポンスには
含められません。
遠隔の active ゲートウェイは、ネットワークインタフェースと同様に扱われます。
RIP レスポンスを遠隔の
active
ゲートウェイに送出します。
応答がない場合、
カーネルのテーブルと他のインタフェースから広告される RIP レスポンス
からその経路を削除します。遠隔のゲートウェイが RIP レスポンスの送出を
再開した場合は、その経路を再び追加します。
このようなゲートウェイは、
ブロードキャストやマルチキャストはサポートしないがそれ以外は Ethernet のような
伝統的な共有メディア同様にふるまう、
ATM ネットワークなどのメディアで有効です。
HIPPI や ATM のネットワーク上にある到達可能な全ての RIP ルータを
/etc/gateways
の "host" 行を使って記述することができます。
通常、そのような状況では、
推定されたホスト経路のリスト生成を避けるために
RIPv2 の使用が望ましいことに注意してください。
external
マークをつけたゲートウェイは passive と同様の扱いになりますが、
カーネル内のルーティングテーブルに載ることはなく、
ルーティングの更新時にその情報が含められることもありません。
external エントリの機能は、別のルーティングプロセスがそのような経路を
必要時に追加する可能性があり、
がその到達先への他の経路を設定すべきでないことを知らせることです。
external エントリは、2 つのルータが同じ到達先への経路を覚えてもよい場合にのみ
必要です。
/etc/gateways
ファイルは、各行が以下の 2 つのフォーマットのどれか、
または後述のパラメータからなる行で構成されます。
空行と '#' で始まる行はコメントです。
net
Nname[/mask]
gateway
Gname
metric
value
< passive |
active |
extern >
host
Hname
gateway
Gname
metric
value
< passive |
active |
extern >
キーワード
Nname
や
Hname
は、到達先のネットワークもしくはホストの名前です。
これはネットワークのシンボル名または "ドット" 表記による
インターネットアドレスのどちらでも構いません
( inet(3)
参照)。(もし名前の場合は、
/etc/networks
または
/etc/hosts
で定義されているか、
の動作開始前に
named(8)
が起動されていなければなりません)
mask
は省略可能な数値で、
Nname
のネットマスクを表す 1 から 32 までの値をとります。
Gname
は、RIP レスポンスがフォワードされるべきゲートウェイの名前もしくは
アドレスです。
value
は、到達先ホストもしくはネットワークへの hop 数です。
host hname
は
net nname/32
と同じです。
ゲートウェイが
passive
または
active
として(前述の通り)扱われる必要があるか、
あるいは RIP プロトコルのスコープの範囲外つまり
external
であるかを指示するために、
passive
active
external
のキーワードのうちの 1 つを指定する必要があります。
-t
でデバッグ出力をオンとする時に見受けられる様に、
そのような行は疑似インタフェースを作成します。
remote インタフェースや external インタフェースのパラメータ設定をするには、
その行を
if=alias(Hname)
や
if=remote(Hname)
等で始める必要があります。
パラメータ
"net" と "host" のどちらでも始まらない行は、以下のようなパラメータ設定
でなければなりません。これは 1 つでも複数でもよく、複数の場合はコンマや
空白で区切ります:
- if = ifname
-
その行にある他のパラメータが、名前が
ifname
のインタフェースに適用されることを示します。
- subnet = nname [/ mask [, metric
]
]
-
ネットワーク
nname
への経路をマスク
mask
と指定された metric (デフォルトは 1) で広告します。
これは CIDR の確保において "穴" を埋めるのに有効です。
このパラメータはその行にそれだけで出現しなければなりません。
ネットワーク番号は、例えば 192.0.2 ではなく 192.0.2.0 の様に、
32 ビットの完全な値を指定する必要があります。
この機能を不必要に使ってはいけません。
危険です。
- ripv1_mask = nname / mask1 , mask2
-
nname / mask1
がサブネットであるネットワークのネットマスクを
mask2
とする様に指定します。
例えば
``ripv1_mask=192.0.2.16/28,27
''
は 192.0.2.16/28 を 192.0.2.0/24 ではなく
192.0.2.0/27 のサブネットとしてマークします。
このファシリティを使わずに、
ripv2_out
を用いて RIPv2 を有効にするのが、より望ましい方法です。
- passwd = XXX[|KeyID[start|stop]]
-
RIPv2 の生のパスワードを指定します。
これは、送信される全ての RIPv2 レスポンスに含められ、
受信した全ての RIPv2 レスポンスでチェックされます。
パスワード内の空白、タブ文字、コンマ、'#'、'|'、NULL 文字は、
バックスラッシュ (\) でエスケープしなければなりません。
よく使われる \n, \r, \t, \b, \xxx などのエスケープシーケンスは、
それぞれ通常の意味を持っています。
KeyID
は一意でなければなりませんが、生のパスワードの場合は無視されます。
start
と
stop
がある場合、これはタイムスタンプで、
year/month/day@hour:minute の形式をとります。
これらはパスワードの有効期限を指定します。
出力パケットで使われるパスワードには、期限が最も遠い将来まで設定されている
パスワードが使われます。
ただし、全てのパスワードの期限が切れてしまった場合には、
最も最近期限切れになったパスワードが使われます。
また、パスワードがどれもまだ有効でない場合には、
パスワードは出力されません。
到着パケットは有効なパスワードを運んでくる可能性があります。
ここで有効とは、未来の 24 時間内で有効になるものか、
過去 24 時間内で有効であったものを指します。
秘密を守るため、パスワードの設定は
/etc/gateways
内のものだけが有効であり、かつ、このファイルが UID 0 でのみ読み込み可能
でなければなりません。
- md5_passwd = XXX|KeyID[start|stop]
-
RIPv2 の MD5 パスワードを指定します。
KeyID
が必須であること以外は、このキーワードは
passwd
と同様です。
- no_ag
-
RIPv1 と RIPv2 のレスポンスにおいてサブネットの集約を行いません。
- no_super_ag
-
RIPv2 のレスポンスにおいてネットワークのスーパネットへの集約を行いません。
- passive
-
そのインタフェースが更新時に他のインタフェースを通して広告されないように
マークし、指定したインタフェースでは RIP および router discovery 処理を
全く行わないようにします。
- no_rip
-
指定したインタフェースでの全 RIP 処理を行いません。
RIP パケットを処理するインタフェースがない場合は、
は単に Router Discovery デーモンとして動作します。
rdisc_adv
または
-s
で明示的に Router Discovery の広告を行うように指示せずに RIP を
行わないようにすると、
は広告を行わない Router Discovery デーモンとして動作することに注意して下さい。
- no_rip_mcast
-
RIPv2 パケットをマルチキャストせずにブロードキャストします。
- no_rip_out
-
RIP 更新を送りません。
- no_ripv1_in
-
受信した RIPv1 レスポンスを無視します。
- no_ripv2_in
-
受信した RIPv2 レスポンスを無視します。
- ripv2_out
-
可能な場合にマルチキャストができるよう、
RIPv2 の出力を有効にして RIPv2 による広告を行います。
- ripv2
-
no_ripv1_in
と
no_ripv1_out
を指定した場合と同じです。
RIPv2 を有効にします。
- no_rdisc
-
Internet Router Discovery Protocol を無効にします。
- no_solicit
-
Router Discovery の要求を送信しません。
- send_solicit
-
たとえ point-to-point リンクであっても
Router Discovery の要求を送信します。
デフォルトでは Router Discovery のメッセージを聞くだけです。
- no_rdisc_adv
-
Router Discovery の広告の送信を行いません。
- rdisc_adv
-
たとえ point-to-point リンクであっても
Router Discovery の広告を送信します。
デフォルトでは Router Discovery のメッセージを聞くだけです。
- bcast_rdisc
-
Router Discovery のパケットをマルチキャストせずにブロードキャストします。
- rdisc_pref = N
-
Router Discovery の広告の優先度を整数
N
に設定します。
優先度のデフォルトは 0 です。
クライアントは、
より小さな、あるいはより負の優先度を持つデフォルトルートを選択します。
- rdisc_interval = N
-
Router Discovery の広告を行う上での名目の送信間隔を N 秒に設定し、
その存続期間を 3*N にします。
- fake_default = metric
-
指定したインタフェースのネットワークとネットマスクを用いて
-F net[/mask][=metric]
を指定した場合と同じです。
- pm_rdisc
-
fake_default
に似ています。RIPv2 の経路がマルチキャストの場合、RIPv1 を聞いている
マシンはそれを受信することができないので、この機能を使えば RIPv1 のデフォルト
ルートが RIPv1 を聞いているマシンにブロードキャストされるようになります。
fake_default
で変更しない限り、
デフォルトルートは metric 14 でブロードキャストされます。
これは "安上がりな router discovery" プロトコルを提供することになります。
- adj_inmetric = delta
-
受信した RIP の経路のホップ数やメトリックを
delta
で調整します。
受信した RIP の経路の metric には、
そのインタフェースに関連した 2 つの値の和が加算されます。
1 つは adj_inmetric 値であり、もう 1 つは
ifconfig(8)
で設定されたインタフェース metric です。
- adj_outmetric = delta
-
広告する RIP の経路のホップ数や metric を
delta
で調整します。
受信した RIP の経路の metric を、それを受信したインタフェースに
関連した metric だけ、もしくはインタフェースが 0 でない metric を
持っていない場合には 1 だけ増やします。
さらに、受信した経路の metric をインタフェースに関連した adj_outmetric だけ
増やします。
広告される経路は下記の 4 つの値の合計分増やされます。
経路を受信したインタフェースに
ifconfig(8)
で設定された metric、
受信したインタフェースの
adj_inmetric delta
、経路を送信するインタフェースに
ifconfig(8)
で設定された metric、
送信するインタフェースの
adj_outmetric delta
。
- trust_gateway = rname[|net1/mask1|net2/mask2|...]
-
ルータ
rname
や他の
trust_gateway
キーワードで指定したルータからの RIP パケットを受け付け、
これら以外のルータからのパケットを無視します。
ネットワークを指定した場合、他のネットワークへの経路は
指定したルータからは無視されます。
- redirect_ok
-
システムがルータとして動作してパケットのフォワードを行っている場合に、
カーネルが ICMP Redirect メッセージを受け付けるようになります。
このパラメータが設定されてない時、システムがルータとして動作している場合、
ICMP Redirect メッセージは無効にされ削除されます。
索引
関連ファイル
- /etc/gateways
-
遠隔ゲートウェイについての情報を記述するファイル。
索引
関連項目
icmp(4),
udp(4),
rtquery(8)
-
Internet Transport Protocols
XSIS 028112
Xerox System Integration Standard
索引
バグ
出力方向にのみ失敗するなどの、ネットワークインタフェースの一方向の失敗
を常に検出できるとは限りません。
索引
歴史
ユーティリティは
BSD 4.2
から登場しました。
索引
Index
- 名称
-
- 書式
-
- 解説
-
- パラメータ
-
- 関連ファイル
-
- 関連項目
-
- バグ
-
- 歴史
-
Time: 07:07:44 GMT, January 12, 2009