ROUTED(8) FreeBSD システム管理者マニュアル ROUTED(8)
名称
routed, rdisc − ネットワークの RIP と router discovery のルーティングデー モン |
書式
routed [−sqdghmpAtv] [−T tracefile] [ |
−F net[/mask[,metric]]] [−P parms]
解説 |
routed ユーティリティはネットワークのルーティングテーブルを管理するデーモ ンで、システムのブート時に起動されます。デーモンはカーネルのルーティング テーブルを管理するために、ルーティング情報プロトコル (Routing Information Protocol) の RIPv1 (RFC 1058), RIPv2 (RFC 1723) および Internet Router Discovery Protocol (RFC 1256) を用います。 RIPv1 プロトコルは 4.3BSD の デーモンのものをベースとしています。 デーモンはルーティング情報プロトコルのパケットを待つために、 route(8) サービス (services(5) 参照) 用の udp(4) ソケットを listen します。また、 マルチキャストによる Router Discovery の ICMP メッセージの送受信も行いま す。ホストがルータだった場合、 routed は直接接続されている全てのホストと ネットワークに、ルーティングテーブルの複製を定期的に提供します。また、 Router Discovery の ICMP メッセージを用いてデフォルトルートの広告や要求を 行います。 routed が動作し始めると (または、ネットワークインタフェースがオンになる と)、 routed は AF_ROUTE アドレスファミリを用いて、システムに直結されてい てコンフィギュレーションされているインタフェースのうちで "up" とマークさ れているものを探します。そしてそのインタフェースに必要な経路をカーネルの ルーティングテーブルに追加します。スタート直後で、RIP が無効になっていな いインタフェースが少なくとも 1 つある場合、 routed はカーネルのテーブル内 に既に存在する静的でない経路を全て削除します。カーネルのテーブル内にある 静的な経路は保存され、有効な RIP metric を持っているものは RIP レスポンス に含められます (route(8) 参照)。 複数のインタフェース (ループバックインタフェースは含めません) が存在する 場合、そのホストは接続されているネットワーク間でパケットを中継するものと みなされます。RIP リクエストと Router Discovery の広告や要求を新しいイン タフェース上で送信した後、デーモンはループに入り、他のホストからの RIP リ クエスト、RIP レスポンス、 Router Discovery のパケットを listen します。 リクエストパケットを受信すると、 routed は内部テーブルに持っている情報か らリプライを作成します。作成された レスポンスパケットは既知の経路のリスト を含み、各経路に "hop count" metric がつきます (16 以上は "無限大" とみな されます)。広告される経路の metric は、それを送受信するインタフェースに設 定した metric を反映するため (ifconfig(8) 参照)、トラフィックを制御するに はインタフェースの metric を設定するのが良い方法です。下記の adj_inmetric と adj_outmetric パラメータも参照して下さい。 split-horizon をある程度実装しているため、レスポンスはリクエストしてきた ネットワークの 1 hop 先の経路を含みません。 rtquery(8) のような問い合わせ プログラムからのリクエストに対しては、テーブル全体から答を導き出します。 ルータの故障から素早く復旧できるようにするため、デーモンが管理するルー ティングテーブルには各到達先用のゲートウェイをいくつか覚えておくための空 間があります。受けとった RIP レスポンスパケットがルーティングテーブルの更 新に使用されるのは、現在認識しているゲートウェイのうちの 1 つから提供され た場合、もしくは現在あるゲートウェイのうちの少なくとも 1 つよりもよい metric を広告している場合です。 更新を行う時、 routed は自分自身が持つテーブルに変更を記録し、到達先への 最適な経路が変更された場合にはカーネルのルーティングテーブルを更新しま す。カーネルのルーティングテーブルに対するこの変更は、次に送出される レス ポンスパケットに反映されます。次のレスポンスがしばらくの間スケジューリン グされない場合には、最近変更された経路だけを含んだ flash update レスポン スが送られます。 到着パケットの処理に加えて、 routed は定期的にルーティングテーブルのエン トリをチェックします。あるエントリが 3 分間更新されなかった場合、そのエン トリの metric は無限大として設定され、削除のためのマークがつけられます。 この無効化がローカルなインターネット全体に伝搬されるのを保証するために、 削除はその経路が無限大の metric を持つと広告されるまで延期されます。これ が poison reverse 方式です。 カーネルのテーブル内の経路のうちで ICMP Redirect メッセージの結果として追 加や変更されたものは、 black-holes を最小にするために、しばらく経ってから 削除されます。 TCP コネクションのタイムアウトが起こると、カーネルは routed に対し、そのゲートウェイを通る全てのリダイレクトされた経路を削除 し、そのゲートウェイを通る全ての 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 の広告も要求も送信されません。 routed は、 point-to-point リン ク (SLIP や PPP のような、IFF_POINTOPOINT フラグのついたもの) のネットマ スクを使用して、 RIPv1 利用時にリモートシステムで使われているネットマスク を推定します。 以下のオプションを使用可能です: |
−s
routed は強制的にルーティング情報を提供します。これは、RIP や Router Discovery を無効にしていない状態で複数のネットワークインタ フェースが存在し、カーネルが ipforwarding=1 になっている場合には デフォルトです。 −q −d −g −h −m −A −t −T tracefile −v −F net[/mask][,metric] −P parms 提供された他の引数は、 routed の動作を記録するファイルの名前として解釈さ れます。トレースファイルの名前をコマンドに追加するよりは、 −T を使った方 がよいでしょう。 上記の機能に加えて、 routed ユーティリティは "遠隔にある" passive もしく は active なゲートウェイという概念をサポートします。 routed は動作を開始 すると、 /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 エントリの機能は、別の ルーティングプロセスがそのような経路を必要時に追加する可能性があり、 routed がその到達先への他の経路を設定すべきでないことを知らせることです。 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 で定義されているか、 routed の動作開始前 に 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[ この機能を不必要に使ってはいけません。危険です。 ripv1_mask=nname/mask1,mask2 passwd=XXX[|KeyID[start|stop]] md5_passwd=XXX|KeyID[start|stop] no_ag no_super_ag passive no_rip rdisc_adv または −s で明示的に Router Discovery の広告を行うよう に指示せずに RIP を行わないようにすると、 routed は広告を行わない Router Discovery デーモンとして動作することに注意して下さい。 no_rip_mcast no_rip_out no_ripv1_in no_ripv2_in ripv2_out ripv2 no_rdisc no_solicit send_solicit no_rdisc_adv rdisc_adv bcast_rdisc rdisc_pref=N rdisc_interval=N fake_default=metric pm_rdisc adj_inmetric=delta adj_outmetric=delta trust_gateway=rname[|net1/mask1|net2/mask2|...] redirect_ok 関連ファイル |
/etc/gateways
遠隔ゲートウェイについての情報を記述するファイル。 関連項目 |
Internet Transport Protocols, XSIS 028112, Xerox System IntegrationStandard.
バグ
出力方向にのみ失敗するなどの、ネットワークインタフェースの一方向の失敗を 常に検出できるとは限りません。 |
歴史
routed ユーティリティは 4.2BSD から登場しました。 FreeBSD 10.0 June 1, 1996 FreeBSD 10.0 |