.\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)routed.8 8.2 (Berkeley) 12/11/93 .\" %FreeBSD: src/sbin/routed/routed.8,v 1.11.2.1 1999/08/29 15:15:31 peter Exp % .\" .\" jpman %Id: routed.8,v 1.2 1997/03/31 14:11:11 horikawa Stab % .\" .Dd June 1, 1996 .Dt ROUTED 8 .Os BSD 4.4 .Sh 名称 .Nm routed .Nd ネットワークの RIP と router discovery のルーティングデーモン .Sh 書式 .Nm .Op Fl sqdghmpAt .Op Fl T Ar tracefile .Oo .Fl F .Ar net Ns Op /mask Ns Op ,metric .Oc .OP Fl P Ar parms .Sh 解説 .Nm はネットワークのルーティングテーブルを管理するデーモンで、 システムのブート時に起動されます。 これは、カーネルのルーティングテーブルを管理するために、 ルーティング情報プロトコル (Routing Information Protocol) の RIPv1 (RFC\ 1058)、RIPv2 (RFC\ 1723)、および Internet Router Discovery Protocol (RFC 1256) を用います。 RIPv1 プロトコルは 4.3BSD のデーモンのものをベースとしています。 .Pp .Nm は、ルーティング情報プロトコルのパケットを待つために、 .Xr route 8 サービス .Ns ( Xr services 5 参照) 用の .Xr udp 4 ソケットを listen() します。また、マルチキャストによる Router Discovery の ICMP メッセージの送受信も行います。 ホストがルータだった場合、 .Nm は直接接続されている全てのホストやネットワークに、 ルーティングテーブルの複製を定期的に提供します。 また、Router Discovery の ICMP メッセージを用いてデフォルトルートを広告したり 要求したりします。 .Pp .Nm が走行し始めると (または、ネットワークインタフェースがオンになると)、 .Nm は AF_ROUTE アドレスファミリを用いて、システムに直結されていて コンフィギュレーションされているインタフェースのうちで "up" とマークされて いるものを探します。そしてそのインタフェースに必要な経路をカーネルの ルーティングテーブルに追加します。スタート直後で、RIP が無効になっていない インタフェースが少なくとも 1 つある場合は、 .Nm はカーネルのテーブル内に既に存在する静的でない経路を全て削除します。 カーネルのテーブル内にある静的な経路は保存され、有効な RIP metric を 持っているものは RIP レスポンスに含められます .Ns ( Xr route 8 参照)。 .Pp 複数のインタフェース (ループバックインタフェースは含めません) が提供されている 場合、そのホストは接続されているネットワーク間でパケットを中継するものと みなされます。新しいインタフェース上で RIP リクエストを送信した後や ルータ発見のための広告や要求を送信した後で、デーモンはループに入り、 他のホストからの RIP リクエストやレスポンスや Router Discovery のパケットを listen します。 .Pp リクエストパケットを受信すると、 .Nm は内部テーブルに持っている情報からリプライを作成します。 生成された .Em レスポンス パケットには既知の経路のリストが含められ、各経路に "hop count" metric がつきます (16 以上は "無限大" とみなされます)。 広告した metric はインタフェースに設定した metric を反映するため .Ns ( Xr ifconfig 8 参照)、トラフィックを制御するにはインタフェースの metric を設定するのが よい方法です。 .Pp .Em split-horizon をインプリメントしているため、リクエストしてきたネットワークの 1 hop 先の 経路はレスポンスには含められません。 .Xr rtquery 8 のような問い合わせプログラムからのリクエストに対しては、テーブル全体 から答を導き出します。 .Pp ルータの故障から素早く復旧できるようにするため、 デーモンが扱うルーティングテーブルには各到達先用のゲートウェイをいくつか 覚えておくための空間があります。受けとった RIP .Em レスポンス パケットが更新のために使用されるのは、 現在認識しているゲートウェイのうちの 1 つから提供された場合、 もしくは現在あるゲートウェイのうちの少なくとも 1 つよりも よい metric を広告された場合です。 .Pp 更新を行う時、 .Nm は自分自身が持つテーブルの変更を記録し、到達先への最適な経路が変更された 場合にはカーネルのルーティングテーブルを記録します。カーネルの ルーティングテーブルに対するこの変更は、次に送出される .Em レスポンス パケットに反映されます。次のレスポンスがしばらくの間スケジューリングされない 場合には、最近変更された経路だけを含んだ .Em flash update レスポンスが送られます。 .Pp 到着パケットの処理に加えて、 .Nm は定期的にルーティングテーブルのエントリをチェックします。 あるエントリが 3 分間更新されなかった場合、 そのエントリの metric は無限大として設定され、 削除のためのマークがつけられます。 この無効化がローカルなインターネットを通して伝搬するのを保証するために、 削除はその経路が無限大の metric を持つと広告されるまで延期されます。これが .Em poison reverse 方式です。 .Pp カーネルのテーブル内の経路のうちで ICMP Redirect メッセージの結果として 追加や変更されたものは、 .Em black-holes を最小にするために、しばらく経ってから削除されます。 TCP コネクションのタイムアウトが起こると、カーネルは .Nm に対し、そのゲートウェイを通る全てのリダイレクトされた経路を削除し、 そのゲートウェイを通る全ての RIP の経路の年齢を増やすことで他のゲートウェイが 選択されるようにし、関連する全ての Router Discovery Protocol の デフォルトルートの年齢を増やします。 .Pp ネットワーク間ルータとして動作するホスト群は、直接接続されているホストおよび ネットワークすべてに対し、30 秒ごとにルーティングテーブルを無条件で提供します。 この RIP レスポンスは、ブロードキャストをサポートしているネット上の ブロードキャストアドレス、point-to-point リンクの到達先アドレス、 ルータ自身の他のネットワークでのアドレスに対して送信されます。 RIPv2 が有効になっている場合は、マルチキャストをサポートしているインタフェース に対してマルチキャストパケットが送られます。 .Pp リモートインタフェース上でレスポンスが受信されない場合や、 レスポンスを送っている最中にエラーが起こった場合や、 エラーが入力や出力よりも多い場合 .Ns ( Xr netstat 8 参照) は、ケーブルやインタフェースの他の部分が接続されていないか壊れている とみなされ、その経路は適切に変更されます。 .Pp .Em Internet Router Discovery Protocol も同様に扱われます。デーモンが RIP の経路を配っている時は、Router Discovery の要求の listen と Router Discovery の広告の送信も行います。 デーモンが静かな状態で他の RIP ルータからのパケットを listen している時には、 Router Discovery の要求を送信して、Router Discovery の広告を listen します。 受けた広告がよいものであれば、 RIP レスポンスのブロードキャストやマルチキャストを listen するのをやめます。 現在利用中のルータが死んだ場合に障害のある状態から短時間で修復できるよう、 広告されているルータのいくつかを追跡します。 もし発見してあるルータが全て見えなくなった場合は、RIP レスポンスの listen を 再開します。 .Pp Router Discover の仕様では、広告の "生存期間" をデフォルトで 30 分とすることを 要求しています。これは、何かが起こった場合に クライアントに 30 分間よい経路がなくなる可能性があることを意味しています。 コマンドラインで .Fl P Cm rdisc_interval=45 と指定したり .Pa /etc/gateways に .Cm rdisc_interval=45 と書くことでデフォルトを 45 秒にするのはいい考えです。 .Pp Router Discovery を利用している場合 (システムが持っている ネットワークインタフェースが 1 つだけでかつ Router Discovery の広告を 受けた場合にはこれがデフォルトです)、カーネルのテーブル内には デフォルトルートは 1 つだけで、ホストへの経路は可変個数となります。 複数のネットワークインタフェースを持つホストでは、 このデフォルトルートはそのインタフェースのうちの 1 つだけを経由します。 このため、複数のホームを持つホストで .Fl q つきで動作しているものは、 以下に示す .Cm no_rdisc が必要です。 .Pp RIPv2 と Router Discovery のどちらも扱うことができない "遺物の" システムを サポートするためには、以下に記述してある .Cm pm_rdisc を参照して下さい。 .Pp デフォルトでは、point to point リンク (たとえば PPP) には Router Discovery の広告も要求も送信されません。 point-to-point リンク (SLIP や PPP などのような、IFF_POINTOPOINT フラグ のついたもの) のネットマスクは、 RIPv1 利用時にはそのネットマスクがリモートシステムで利用されると .Nm は推測します。 .Pp 以下のオプションを使用可能です: .Bl -tag -width indent .It Fl s .Nm は強制的にルーティング情報を提供します。 これは、RIP や Router Discovery を無効にしていない状態で複数の ネットワークインタフェースが提供されており、カーネルが ipforwarding=1 に なっている場合にはデフォルトです。 .It Fl q .Fl s オプションとは逆の動作をします。 インタフェースが 1 つだけの場合は、これがデフォルトです。 .It Fl d バックグラウンドでは動作しません。このオプションは対話的に使用するための ものです。 .It Fl g ネットワーク間ルータにおいて "default" の到達先への経路を設ける ために使われます。これは .Fl F .Cm 0/0,1 と同じ意味を持ち、主として歴史的理由のために提供されています。 これよりは、 .Fl P Cm pm_rdisc をコマンドラインで指定するか、 .Cm pm_rdisc を .Pa /etc/gateways で指定するほうがよいでしょう。 大きな metric を使用すれば、 デフォルトルートの潜在的な危険が広がる可能性を減らせます。 これは、典型的にはインターネットへのゲートウェイで用いられるか、 経路を他のローカルルータに対して報告しないような他の ルーティングプロトコルを利用しているゲートウェイの場合に用いられます。 metric には 1 が使われるため、この機能は危険です。このオプションは一般に、 問題を解決するよりも、ルーティングのループによる混乱を引き起こしがちです。 .It Fl h ホストルートまたは point-to-point ルートを広告しません。 これらは同一方向へいくネットワークルートであると規定されます。これは 特別な性質を持つ集合です。このオプションは、イーサネットへのゲートウェイ でかつ SLIP のような point-to-point リンクで他のゲートウェイマシンが継っている ゲートウェイにおいて有効です。 .It Fl m マシンが、そのプライマリインタフェースへのホストルートや point-to-point ルート を広告するようになります。 これは NFS サーバなどのような複数のホームを持つマシンにおいて有効です。 このオプションは、作成したホストルートのコストがサーバの人気で正当化される 場合を除いて、使うべきではありません。 これは、マシンがルーティング情報を供給していて、複数のインタフェースを 持っている場合にのみ効果があります。 .Fl m オプションは、 .Fl q オプションの効果を上書きして、 ホストルートの広告を限定した範囲に制限します。 .It Fl A もし RIPv2 の認証に注意を払わない場合は、RIPv2 の認証を無視しません。 RFC 1723 に準拠するためにはこのオプションが必要です。 しかしながら、これは意味がなく、マシンが認証について注意を払わない時に 認証を運ぶ全ての RIPv2 パケットを無視するために検出プロトコルとして RIP を使う場合の妨げとなります。 .It Fl T Ar tracefile デバッグレベルを最低でも 1 まで上げ、デバッグ情報をトレースファイルに 書き加えるようにします。セキュリティ上の都合により、 .Nm がファイルへのトレースを日常的に行うようにはしないのが賢明です。 .It Fl t デバッグレベルを増やします。 .Fl T で指定したトレースファイルや標準出力に対し、より詳細な情報を記録するように なります。デバッグレベルは .Em SIGUSR1 シグナルや .Em SIGUSR2 シグナルや .Xr rtquery で増減できます。 .It Fl F Ar net[/mask][,metric] .Em net/mask にマッチするアドレスを持つインタフェースを介した転送における経路を最小にし、 このマシンへのデフォルトルートを metric 数 .Em metric で作成します。この目的は、RIP 情報をもつ多数の大きな UDP パケットを "にせ" の デフォルトルートを含んだ 1 つの小さなパケットに置き換えることで、 遅い、たとえば PPP のような point-to-point リンクでの RIP のトラフィックを 減らすことにあります。 もし .Em metric がない場合は、"にせ" のデフォルトルートが広まるのを制限するために 14 が 指定されたものとみなします。 この機能は、不注意に使うとルーティングのループを引き起こすので危険です。 指定したネットワーク番号とマスクに複数のインタフェースがマッチする可能性がある ことに注意して下さい。 .Fl g も参照してください。 .It Fl P Ar parms パラメータ行 .Em parms を .Pa /etc/gateways ファイルに書くのと同じです。 .El .Pp 提供された他の引数は、 .Nm の動作を記録するファイルの名前として解釈されます。 トレースファイルの名前をコマンドに追加するよりは、 .Fl T を使った方がよいでしょう。 .Pp 上記の機能に加えて、 .Nm は "遠隔にある" .Em パッシブ もしくは .Em アクティブ なゲートウェイという概念をサポートします。 .Nm は動作を開始すると、実在しないかもしれない遠隔のゲートウェイを検索するために .Pa /etc/gateways を読み込みます。ローカルなゲートウェイがパッシブであるかどうかや、 他のパラメータの取得には、ルーティングソケットからの情報だけをもとにします。 このようにして指定されたゲートウェイは、ルーティング情報を交換しない場合は パッシブマークが付加されます。一方、 RIP パケットを交換するゲートウェイに ついては、アクティブマークが付与されます。 .Em パッシブ ゲートウェイを介す経路については、システムスタートアップ時に一度だけ カーネル内の経路情報テーブルに設定され、送出される RIP レスポンスには 含められません。 .Pp 遠隔のアクティブゲートウェイは、ネットワークインタフェースと同様に扱われます。 RIP レスポンスが遠隔の .Em アクティブ ゲートウェイに送られます。 応答がない場合は、 その経路はカーネルのテーブルと別のインタフェースから広告された RIP レスポンスの ぞれぞれから削除されます。遠隔のゲートウェイが RIP レスポンスの送出を 再開した場合は、その経路は再追加されます。 .Pp このようなゲートウェイは、ATM ネットワークなどのような、 ブロードキャストやマルチキャストはサポートしないがそれ以外は Ethernet のような 伝統的な共有メディア方式のように働くネットワークに有効です。 ATM ネットワーク上にある到達可能な全ての RIP ルータを .Pa /etc/gateways の "host" 行を使って記述することができます。 .Pp .Em external マークのついたゲートウェイはパッシブと同様の扱いになりますが、 カーネル内のルーティングテーブルに載ることはなく、 ルーティングの更新時にその情報が含められることもありません。 external エントリの機能は、他のルーティングプロセスがそのような経路を 必要時に追加する可能性があることを知らせるためにあり、その到達先への別の経路は .Nm で設定されるべきではありません。 external エントリは、両方のルータが同じ到達先への経路を覚えてもよい場合にのみ 必要です。 .Pp .Pa /etc/gateways ファイルは、以下のフォーマットおよびパラメータからなる行の集まりです: .Pp .Bd -ragged .Cm net .Ar Nname[/mask] .Cm gateway .Ar Gname .Cm metric .Ar value .Pf < Cm passive No \&| .Cm active No \&| .Cm extern Ns > .Ed .Bd -ragged .Cm host .Ar Hname .Cm gateway .Ar Gname .Cm metric .Ar value .Pf < Cm passive No \&| .Cm active No \&| .Cm extern Ns > .Ed .Pp キーワード .Ar Nname や .Ar Hname は、到達先のネットワークやホストの名前です。 .Pp .Ar name1 は、到達先のネットワークもしくはホストの名前です。 これはネットワークのシンボル名または "ドット" 表記による インターネットアドレスのどちらでも構いません .Ns ( Xr inet 3 参照)。(もし名前の場合は、 .Pa /etc/networks または .Pa /etc/hosts で定義されているか、 .Nm の動作開始前に .Xr named 8 が起動されていなければなりません。) .Pp .Ar mask は省略可能な数値で .Ar Nname のネットマスクを表し、1 から 32 までの値をとります。 .Pp .Ar Gname は、RIP レスポンスがフォワードされるべきゲートウェイの名前もしくは アドレスです。 .Pp .Ar value は、到達先ホストもしくはネットワークへの hop 数です。 .Ar " host hname " は .Ar " net nname/32 " と同一です。 .Pp .Cm passive , .Cm active , .Cm external のキーワードのうちの 1 つを指定することで、ゲートウェイが .Cm passive または .Cm active (前述の通り) であるか RIP プロトコルのスコープの範囲外つまり .Cm external であるかを指示しなければなりません。 .Pp "net" と "host" のどちらでも始まらない行は、以下のようなパラメータ設定 でなければなりません。これは 1 つでも複数でもよく、複数の場合はコンマや 空白で区切ります: .Bl -tag -width Ds .It Cm if Ns \&= Ns Ar ifname その行にある他のパラメータが、名前が .Ar ifname のインタフェースに適用されることを示します。 .It Cm subnet Ns \&= Ns Ar nname[/mask][,metric] ネットワーク .Ar nname への経路をマスク .Ar mask と指定された metric (デフォルトは 1) で広告します。 これは CIDR の確保において "穴" を埋めるのに有効です。 このパラメータはその行にそれだけで出現しなければなりません。 .Pp この機能は不必要に使ってはいけません。危険です。 .It Cm passwd Ns \&= Ns Ar XXX RIPv2 の password を指定します。これは送信した全ての RIPv2 レスポンスに 含められ、受信した全ての RIPv2 レスポンスでチェックされます。 パスワードは、空白やタブ文字やコンマや '#' を含んではいけません。 .It Cm passwd Ns \&= Ns Ar XXX1[|KeyID[start|stop]] RIPv2 の生のパスワードを指定します。 これは、送信される全ての RIPv2 レスポンスに含められ、 受信した全ての RIPv2 レスポンスでチェックされます。 パスワード内の空白、タブ文字、コンマ、'#'、'|'、NULL 文字は、 バックスラッシュ (\\) でエスケープしなければなりません。 よく使われる \\n, \\r, \\t, \\b, \\xxx などのエスケープシーケンスは、 それぞれ通常の意味を持っています。 .Cm KeyID は一意でなければなりませんが、生のパスワードの場合は無視されます。 .Cm start と .Cm stop がある場合、これはタイムスタンプで、 year/month/day@hour:minute の形式をとります。 これらはパスワードが正しい時に設定されます。 出力パケットで使われるパスワードには、期限が最も遠い将来まで設定されている パスワードが使われます。全てのパスワードが期限切れになった場合には、 最も最近期限切れになったパスワードが使われます。 また、有効なパスワードがまだ設定されていない場合には、 パスワードは出力されません。 到着パケットは有効なパスワードを運んでくる可能性があります。 ここで有効とは、未来の 24 時間内で有効になるものか、 過去 24 時間内で有効であったものを指します。 .It Cm md5_passwd Ns \&= Ns Ar XXX1|KeyID[start|stop] RIPv2 の MD5 パスワードを指定します。 .Cm KeyID が必須であること以外は、このキーワードは .Cm passwd と同じです。 秘密を守るため、パスワードの設定は .Em /etc/gateways 内のものだけが有効であり、かつ、このファイルが UID 0 でのみ読み込み可能 でなければなりません。 .It Cm no_ag RIPv1 と RIPv2 のレスポンス内のサブネットの合成を行いません。 .It Cm no_super_ag RIPv2 のレスポンス内のネットワークのスーパネットへの合成を行いません。 .It Cm passive そのインタフェースが更新時に他のインタフェースを通して広告されないように マークし、指定したインタフェースでは RIP および router discovery 処理を 全く行わないようにします。 .It Cm no_rip 指定したインタフェースでの全 RIP 処理を行いません。 RIP パケットを処理するインタフェースがない場合は、 .Nm は単に Router Discovery デーモンとして働きます。 .Pp .Cm rdisc_adv または .Fl s で明示的に Router Discovery の広告を行うように指示せずに RIP を 行わないようにすると、 .Nm は広告を行わない Router Discovery デーモンとして働くことに注意して下さい。 .It Cm no_ripv1_in 受信した RIPv1 レスポンスが無視されるようになります。 .It Cm no_ripv2_in 受信した RIPv2 レスポンスが無視されるようになります。 .It Cm ripv2_out 可能な場合にマルチキャストができるよう、 RIPv1 の出力は行わず、RIPv2 による広告を行います。 .It Cm ripv2 .Cm no_ripv1_in と .Cm no_ripv1_out を指定した場合と同じです。 .It Cm no_rdisc Internet Router Discovery Protocol を無効にします。 .It Cm no_solicit Router Discovery の要求を送信しません。 .It Cm send_solicit たとえ point-to-point リンクであっても Router Discovery の要求を送信します。 デフォルトでは Router Discovery のメッセージを聞くだけです。 .It Cm no_rdisc_adv Router Discovery の広告の送信を行いません。 .It Cm rdisc_adv たとえ point-to-point リンクであっても Router Discovery の広告を送信します。 デフォルトでは Router Discovery のメッセージを聞くだけです。 .It Cm bcast_rdisc Router Discovery のパケットをマルチキャストする代りにブロードキャストします。 .It Cm rdisc_pref Ns \&= Ns Ar N Router Discovery の広告の優先度を整数 .Ar N にします。 .It Cm rdisc_interval Ns \&= Ns Ar N Router Discovery の広告を行う上での名目の送信間隔を N にし、その生存期間を 3*N にします。 .It Cm fake_default Ns \&= Ns Ar metric 指定したインタフェースのネットワークとネットマスクを使って .Fl F Ar net[/mask][=metric] を指定した場合と同じです。 .It Cm pm_rdisc .Cm fake_default に似ています。RIPv2 の経路がマルチキャストの場合、RIPv1 を聞いている マシンはそれを受信することができないので、この機能を使えば RIPv1 のデフォルト ルートが RIPv1 を聞いているマシンにブロードキャストされるようになります。 .Cm fake_default で変更しない限り、 デフォルトルートは metric 14 でブロードキャストされます。 これは "能力の低い router discovery" プロトコルを提供することになります。 .It Cm trust_gateway Ns \&= Ns Ar rname 指定したルータや他の .Cm trust_gateway キーワードで指定したルータからの RIP パケットを受け付け、 これら以外からのパケットは無視するようになります。 .It Cm redirect_ok システムがルータとして動作してパケットのフォワードを行っている場合に、 RIP が ICMP Redirect メッセージを許可するようになります。 そうでなければ、ICMP Redirect メッセージは上書きされます。 .El .Pp .Sh 関連ファイル .Bl -tag -width /etc/gateways -compact .It Pa /etc/gateways 遠隔ゲートウェイについての情報を記述するファイル。 .El .Sh 関連項目 .Xr icmp 4 , .Xr udp 4 , .Xr gated 8 , .Xr rtquery 8 .Rs .%T Internet Transport Protocols .%R XSIS 028112 .%Q Xerox System Integration Standard .Re .Sh バグ ネットワークインタフェースの一方向の失敗 (例えば、出力方向にのみ失敗するなど) を常に検出できるとは限りません。 .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。