Go to main content
マニュアルページ セク ション 1M: シ ステム管理コマン ド

印刷ビューの終了

更新: 2016年12月6日
 
 

route(1M)

名前

route - ルーティングテーブルの手動操作

形式

route [-fnvq] sub-command [ [modifiers] args]
route [-fnvq] [-p [-R root-dir]] add [modifiers] destination gateway 
          [-name route-name] [args]

route [-fnvq] [-p [-R root-dir]] delete [modifiers] 
         {destination gateway | -name route-name} [args] 
 
route [-fnvq] change | get [modifiers] {destination | -name route-name} 
      [gateway [args]]
route [-fn] monitor [modifiers]
route [-fnvq] flush [modifiers]
route -p [-R root-dir] show

説明

route は、ネットワークルーティングテーブルを手動で操作するためのユーティリティーです。これらのテーブルは通常、in.routed(1M)in.ripngd(1M) などのシステムルーティングデーモンによって保守されます。

route でサポートされる一般的なオプションの数は限られていますが、強力なコマンド言語がサポートされます。ユーザーは、route(7P) で説明されているプログラム的なインタフェースによって実現できる任意の要求を指定できます。

route では、ルーティングソケットと、新しいメッセージタイプ RTM_ADDRTM_DELETERTM_GET、および RTM_CHANGE を使用します。ルーティングテーブルを変更できるのはスーパーユーザーのみですが、RTM_GET 操作は非特権ユーザーにも許可されます。

オプション

–f

すべてのゲートウェイエントリのルーティングテーブルをフラッシュします。–f オプションを任意の route サブコマンドと組み合わせて使用した場合、route は、それらのサブコマンドを実行する前にゲートウェイをフラッシュします。フラッシュするテーブルは、–f オプションの直後に inet または inet6 修飾子を置くことによって指定します。指定されていない場合は、デフォルトで IPv4 (inet) 経路がフラッシュされます。

–n

アクションの報告時に、ホスト名やネットワーク名をシンボルで出力できないようにします。このオプションは、ネームサーバーが使用できない場合に有効です。

–p

ネットワークルーティングテーブルへの変更が、システムの再起動後も永続するようにします。この操作は、最初にネットワークルーティングテーブルに適用され、それが成功すると、現在アクティブなネットワーク構成プロファイルに関連付けられた保存済みルートのリストに適用されます (ネットワーク構成プロファイルの詳細は netcfg(1M) を参照)。操作が成功したかどうかの判定では、すでに存在する経路を追加したり、ルーティングテーブルにない経路を削除したりしたときの失敗は無視されます。起動時に経路が追加される時点ではネットワークベースの名前解決サービスを使用できないため、永続的な経路にホスト名またはネットワーク名を使用する場合は特別な注意が必要です。

–q

すべての出力を抑制します。

–R root-dir

route が変更を適用する代替ルートディレクトリを指定します。このオプションは、–p オプションと組み合わせて使用されないかぎり無視されます。–R が指定されている場合、経路の変更は、起動時に使用される保存された経路のリストにのみ適用され、ネットワークルーティングテーブルには適用されません。さらに、–ifp で使用されるネットワークインタフェースの存在などの、特定のチェックもスキップされます。このオプションは、変更されるシステムのルートディレクトリが / 以外の場所にある JumpStart スクリプト内から使用する場合に便利です。

–v

詳細情報を冗長モードで出力します。

サブコマンド

サポートされているサブコマンドは次のとおりです。

add

経路を追加します。

change

経路の各側面 (ゲートウェイなど) を変更します。

delete

特定の経路を削除します。

flush

ルーティングテーブルからすべてのゲートウェイエントリを削除します。

get

宛先の経路を検索および表示します。

monitor

ルーティング情報ベースへの任意の変更、ルーティング検索の失敗、またはネットワークパーティション分割と考えられるものを継続的に報告します。

show

システムの起動時に適用される経路のリストを表示します。–p オプションとの組み合わせでのみ使用できます。

add および delete サブコマンドの構文は次のとおりです。


route [ -fnvq ] cmd destination gateway [metric/netmask]

ここで、cmdadd または deletedestination は宛先のホストまたはネットワーク、gateway はパケットが経路指定されるときに使用される次のホップの中継点です。「オペランド」で説明する修飾子は、コマンド行の任意の位置に指定できます。

get および change サブコマンドの構文は次のとおりです。


route [ -fnvq ] cmd destination [gateway [metric/netmask]]

ここで、cmdget または changedestination は宛先のホストまたはネットワーク、gateway はパケットが経路指定されるときに使用される次のホップの中継点です。「オペランド」で説明する修飾子は、コマンド行の任意の位置に指定できます。

monitor サブコマンドの構文は次のとおりです。


route monitor [ -inet | -inet6 ]

オペランド

route は、これらのサブコマンドを、ゲートウェイを経由した宛先までの経路上で実行します。ルートが永続的に作成されている場合は、–name 修飾子でルートの名前を指定することもできます。この名前は、非永続的なルートでは無視されます。このルートに対する以降の操作では、宛先とゲートウェイの代わりに、–name 修飾子付きでこの名前を使用できます。デフォルトルートは default という名前ではありません。作成時に (default 以外の) 任意の名前にでき、その名前はそのデフォルトルートを参照するために使用できます。

宛先とゲートウェイ

デフォルトでは、宛先とゲートウェイアドレスは IPv4 アドレスとして解釈されます。すべてのシンボル名が最初、getipnodebyname(3SOCKET) を使用してホスト名として試行されます。AF_INET の場合にこの検索が失敗すると、getnetbyname(3SOCKET) は、この名前をネットワークの名前として解釈します。

コマンド行のアドレスの前にオプションの修飾子を指定すると、route サブコマンドでのアドレスの解釈方法が変更されます。

次の修飾子がサポートされています。

–inet

アドレスが強制的に IPv4 アドレスとして、つまり、AF_INET アドレスファミリの下で解釈されるようにします。

–inet6

アドレスが強制的に IPv6 アドレスとして、つまり、AF_INET6 アドレスファミリの下で解釈されるようにします。

IPv4 アドレスの場合は、宛先として指定されたインターネットアドレスを解釈することによって、特定のホストへの経路がネットワークへの経路とデフォルトで区別されます。宛先に 0 のローカルアドレス部分 (つまり、ネットマスクによってカバーされていない部分) が含まれている場合や、宛先がネットワークのシンボル名として解決された場合は、ネットワークへの経路であると見なされます。それ以外の場合は、ホストへの経路であると見なされます。

次のいずれかの修飾子を使用して、この選択を強制的に行うことができます。

–host

宛先が強制的にホストとして解釈されるようにします。

–net

宛先が強制的にネットワークとして解釈されるようにします。

例:

宛先
同等の宛先
128.32
–host 128.0.0.32
128.32.130
–host 128.32.0.130
–net 128.32
128.32.0.0
–net 128.32.130
128.32.130.0

2 つの修飾子によって、アドレスとキーワードの間の混乱 (たとえば、host がホストのシンボル名として使用されている場合) が回避されます。destination の前に –dst 修飾子を指定することによって、宛先を識別できます。–gateway 修飾子を使用してゲートウェイアドレスを識別できます。ゲートウェイとして機能する中間の IP ルーターを必要としないインタフェースを経由して宛先に直接到達可能な場合は、これを –interface または –iface 修飾子を使用して示すことができます。

次の例では、経路は外部のゲートウェイ (ルーター) ではなく、マシンのいずれかのインタフェースを指しています。このような経路上の宛先とマスクに一致する IP 宛先アドレスを含むパケットが、ゲートウェイアドレスによって識別されたインタフェースから送信されます。 ARP プロトコルを使用するインタフェースの場合は、このタイプの経路を使用して、一致するすべての宛先が物理リンクに対してローカルであることを指定します。つまり、このコマンドを使用してデフォルトの経路を追加することによって、構成されているインタフェースネットマスクには関係なく、すべてのアドレスに対して ARP を使用するようにホストを構成できます。例:


example# route add default hostname -interface

ここで、ゲートウェイアドレス hostname は、一致するすべてのパケットの送信に使用されるネットワークインタフェースに関連付けられた名前または IP アドレスです。1 つのネットワークインタフェースを備えたホストでは、hostname は通常、uname -n コマンドによって返される nodename と同じです。uname(1) を参照してください。

古いシステムとの下位互換性のために、直接到達可能な経路は、ゲートウェイアドレスのあとに 0 を置くことによっても指定できます。


example# route add default hostname 0 

この値は以前はルートメトリックでしたが、このメトリックは使用されなくなりました。この値が 0 として指定されている場合、宛先は直接到達可能です (interface の指定と同等)。 この値が 0 ではないが、サブネットマスクとして解釈できない場合は、ゲートウェイが使用されます (デフォルト)。

AF_INET アドレスファミリまたは IPv4 アドレスでは、個別のサブネットマスクを指定できます。これは、次のいずれかの方法で指定できます。

  • ゲートウェイアドレスのあとの IP アドレス。これは通常、シンボル形式ではなく、inet_addr(3SOCKET) の場合のような 10 進数のドット表記法で指定されます。

  • –netmask 修飾子のあとの IP アドレス。

  • 宛先アドレスに追加されたスラッシュ文字と 10 進数の長さ。

サブネットマスクが指定されていないとき、宛先のクラスフルネットワークがインタフェースのクラスフルネットワークと同じである場合、使用されるマスクはゲートウェイアドレスによって選択された出力インタフェースのサブネットマスクです。それ以外の場合は、宛先アドレスのクラスフルネットワークマスクが使用されます。

次の各例は、255.255.255.224 のサブネットマスクを持つ宛先 192.0.2.32 サブネットへの IPv4 経路を作成します。


example# route add 192.0.2.32/27 somegateway
example# route add 192.0.2.32 -netmask 255.255.255.224 somegateway
example# route add 192.0.2.32 somegateway 255.255.255.224

IPv6 の場合は、スラッシュ形式のみが使用できます。次の例は、16 個のビット 1 のあとに 112 個のビット 0 が続くネットマスクを持つ宛先 33fe:: への IPv6 経路を作成します。


example# route add -inet6 3ffe::/16 somegateway

ゲートウェイによって出力インタフェースが一意に識別されない場合 (たとえば、複数のインタフェースが同じアドレスを持っている場合) は、–ifp ifname 修飾子を使用してインタフェースを名前で指定することができます。たとえば、–ifp lo0 は経路を lo0 インタフェースに関連付けます。指定されたインタフェースが IPMP (IP マルチパス) グループの基本となるインタフェースの場合、経路を追加する要求は対応する IPMP IP インタフェースに自動的に変換され、基本となるインタフェースの経路を削除または変更する要求は失敗します。–ifp 修飾子を使用してルートに関連付けられたインタフェースがカーネルから削除 (つまり、unplumb) された場合、そのルートはルーティングテーブルから削除されます。そのインタフェースがあとでカーネルに再度追加 (つまり、plumb) された場合は、そのルートが永続的なルーティング構成内に存在する場合でも、ユーザーはそのルートをルーティングテーブルに読み取る必要があります。

ルーティングテーブルに複数の同じ経路 (つまり同じ着信先とマスクの経路) が含まれている場合、IP はそれらの経路にトラフィックを分配することを試みます。分配では、個々の転送接続が同じ経路を使用して、たとえば TCP で見られるようなパケットの並び替えを防止します。分配のアルゴリズムの詳細はドキュメント化されておらず、随時変更される可能性があります。

ルーティングフラグ

経路には、各経路に一致する宛先に送信するときのプロトコルの動作に影響を与えるフラグが関連付けられています。これらのフラグは、コマンド行で次の修飾子を指定することによって設定 (場合によっては、~ で示すことによって消去) できます。

修飾子
フラグ
説明
–interface
~RTF_GATEWAY
宛先は直接到達可能です。
–iface
~RTF_GATEWAY
インタフェース修飾子の別名です。
–static
RTF_STATIC
手動で追加された経路です。
–nostatic
~RTF_STATIC
経路がカーネルまたはルーティングデーモンによって追加されたように見せかけます。
–reject
RTF_REJECT
一致した場合に、ICMP 到達不能を発行します。
–blackhole
RTF_BLACKHOLE
パケットを暗黙的に破棄します。
–proto1
RTF_PROTO1
プロトコル固有のルーティングフラグ #1 を設定します。
–proto2
RTF_PROTO2
プロトコル固有のルーティングフラグ #2 を設定します。
–private
RTF_PRIVATE
この経路を通知しません。
–multirt
RTF_MULTIRT
指定された冗長経路を作成します。
–setsrc
RTF_SETSRC
デフォルトの発信元アドレスを割り当てます。
-indirect
RTF_INDIRECT
ゲートウェイがオンリンクではない場所への経路の追加を許可します。

–setsrc オプションを使用した発信元アドレス選択の方が ipadm(1M) の usesrc に基づいた発信元アドレス選択より優先されることに注意してください。つまり、発信元アドレス選択はルートに対して実行されたあと、インタフェースに対して実行されます。それは、前者の方がきめ細かいためです。

任意指定の –indirect 修飾子は、ゲートウェイに直接到達できない場所への経路の追加を許可します。間接的な経路がパケットの送信または転送に最適である場合、IP はそのゲートウェイを検索して、直接到達可能な経路を探します。–indirect 修飾子は、ゲートウェイに直接到達可能な場合でも使用できます。

オプションの修飾子 –rtt–rttvar–sendpipe–recvpipe–mtu–hopcount–expire、および –ssthresh は、TCP などのトランスポートレベルのプロトコルによってルーティングエントリ内に保持される数量に初期値を提供します。これらの修飾子を個別にロックするには、ロックする各修飾子の前に –lock メタ修飾子を指定するか、またはあとに続くすべてのメトリックスを –lockrest メタ修飾子でロックすることを指定します。

一部のトランスポートレイヤープロトコルは、これらのメトリックスの一部のみをサポートできます。次のオプションの修飾子がサポートされています。

–expire

エントリの寿命。このオプションの修飾子は、現在サポートされていません。

–hopcount

最大ホップ数。このオプションの修飾子は、現在サポートされていません。

–mtu

最大 MTU (バイト単位)。

–recvpipe

受信パイプのサイズ (バイト単位)。

–rtt

往復時間 (マイクロ秒単位)。

–rttvar

往復時間の分散 (マイクロ秒単位)。

–sendpipe

送信パイプのサイズ (バイト単位)。

–ssthresh

送信パイプのサイズのしきい値 (バイト単位)。

–secattr

経路のセキュリティー属性。この修飾子を使用できるのは、システムに Solaris Trusted Extensions 機能が構成されている場合だけです。

–secattr 修飾子の形式は次のとおりです。

min_sl=val,max_sl=val,doi=val,cipso

または

sl=VAL,doi=VAL,cipso

上の最初の形式では、min_slmax_slval は、16 進数または文字列のどちらかの形式の機密ラベルです。doival は、負でない整数です。経路は、doi 値で定義されているものと同じ解釈のドメインを持ち、かつ min_slmax_sl の値で定義されている認可範囲内にあるパケットに対してのみ適用されます。cipso キーワードはオプションで、デフォルトで設定されます。有効な min_slmax_sl、および doi のキーワード/値のペアは必須です。val にスペースが含まれている場合は、二重引用符で保護されている必要があることに注意してください。

上の 2 番目の形式は、min_slmax_sl に同じ VAL を使用して最初の形式を指定した場合と同等です。get コマンドでは 1 つの機密ラベルだけが使用されるため、2 番目の形式は get コマンドで使用してください。

互換性

修飾子 host および net は、host および –net と同等と見なされます。これらのいずれかの名前に一致する記号アドレスを指定するには、dst または gateway キーワードを使用して区別します。たとえば、–dst host と指定します。

次の 2 つのフラグも、古いシステムとの互換性のために受け入れられますが、何も実行されません。

修飾子
フラグ
–cloning
RTF_CLONING
–xresolve
RTF_XRESOLVE

–ifa hostname 修飾子も受け入れられますが、何も実行されません。

ファイル

/etc/defaultrouter

デフォルト経路のリスト

/etc/hosts

ホスト名とネットアドレスのリスト

/etc/networks

ネットワークの名前とアドレスのリスト

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os

関連項目

uname(1)in.ripngd(1M)in.routed(1M)netcfg(1M)netstat(1M)routed(1M)ioctl(2)getipnodebyname(3SOCKET)getnetbyname(3SOCKET)inet_addr(3SOCKET)defaultrouter(4)hosts(4)networks(4)attributes(5)arp(7P)ip(7P)route(7P)routing(7P)

診断

add [ hostnetwork ] destination:gateway flags

指定された経路がテーブルに追加されます。出力される値は、ioctl(2) の呼び出しで指定されたルーティングテーブルエントリの情報です。使用されたゲートウェイアドレスがゲートウェイのプライマリアドレス (getipnodebyname(3SOCKET) によって返される最初のアドレス) でなかった場合、ゲートウェイアドレスは数値とシンボルで出力されます。

delete [ hostnetwork ] destination:gateway flags
change [ host network ] destination:gateway flags

add と同様ですが、エントリを削除または変更する場合に使用されます。

destination done

–f フラグが指定されているか、または flush サブコマンドが使用されている場合は、削除された各ルーティングテーブルエントリがこの形式のメッセージで示されます。

Network is unreachable

指定されたゲートウェイが直接接続されたネットワーク上に存在しなかったため、経路を追加する試みが失敗しました。代わりに、次のホップのゲートウェイを指定します。

not in table

テーブルに存在しないエントリに対して delete 操作が試行されました。

entry exists

カーネル内にすでに存在する経路に対して add 操作が試行されました。

routing table overflow

操作が試行されましたが、システムは、新しいエントリを作成するためのメモリーを割り当てることができませんでした。

insufficient privileges

呼び出し側プロセスが適切な特権を持っていないため、経路を追加、削除、変更、またはフラッシュする試みが失敗しました。

宛先がローカルであることを (–interface 修飾子で) 指定する場合は、ルーターに proxy ARP が実装されていることを前提にしています。つまり、ルーターは、すべての到達可能な宛先への ARP クエリーに応答します。通常は、proxy ARP を使用するよりも、ルーター検索または RIP のどちらかを使用する方が信頼性と拡張性に優れています。RIP に関連する情報については、in.routed(1M) を参照してください。

すべての宛先がローカルである経路とサブネットまたはネットワーク経路を組み合わせると、予期しない結果になることがあります。すべての宛先がローカルである経路に関連して行われる検索の順序は未定義であり、リリースによって変更されることがあります。