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_ADD、RTM_DELETE、RTM_GET、および RTM_CHANGE を使用します。ルーティングテーブルを変更できるのはスーパーユーザーのみですが、RTM_GET 操作は非特権ユーザーにも許可されます。
すべてのゲートウェイエントリのルーティングテーブルをフラッシュします。–f オプションを任意の route サブコマンドと組み合わせて使用した場合、route は、それらのサブコマンドを実行する前にゲートウェイをフラッシュします。フラッシュするテーブルは、–f オプションの直後に inet または inet6 修飾子を置くことによって指定します。指定されていない場合は、デフォルトで IPv4 (inet) 経路がフラッシュされます。
アクションの報告時に、ホスト名やネットワーク名をシンボルで出力できないようにします。このオプションは、ネームサーバーが使用できない場合に有効です。
ネットワークルーティングテーブルへの変更が、システムの再起動後も永続するようにします。この操作は、最初にネットワークルーティングテーブルに適用され、それが成功すると、現在アクティブなネットワーク構成プロファイルに関連付けられた保存済みルートのリストに適用されます (ネットワーク構成プロファイルの詳細は netcfg(1M) を参照)。操作が成功したかどうかの判定では、すでに存在する経路を追加したり、ルーティングテーブルにない経路を削除したりしたときの失敗は無視されます。起動時に経路が追加される時点ではネットワークベースの名前解決サービスを使用できないため、永続的な経路にホスト名またはネットワーク名を使用する場合は特別な注意が必要です。
すべての出力を抑制します。
route が変更を適用する代替ルートディレクトリを指定します。このオプションは、–p オプションと組み合わせて使用されないかぎり無視されます。–R が指定されている場合、経路の変更は、起動時に使用される保存された経路のリストにのみ適用され、ネットワークルーティングテーブルには適用されません。さらに、–ifp で使用されるネットワークインタフェースの存在などの、特定のチェックもスキップされます。このオプションは、変更されるシステムのルートディレクトリが / 以外の場所にある JumpStart スクリプト内から使用する場合に便利です。
詳細情報を冗長モードで出力します。
サポートされているサブコマンドは次のとおりです。
経路を追加します。
経路の各側面 (ゲートウェイなど) を変更します。
特定の経路を削除します。
ルーティングテーブルからすべてのゲートウェイエントリを削除します。
宛先の経路を検索および表示します。
ルーティング情報ベースへの任意の変更、ルーティング検索の失敗、またはネットワークパーティション分割と考えられるものを継続的に報告します。
システムの起動時に適用される経路のリストを表示します。–p オプションとの組み合わせでのみ使用できます。
add および delete サブコマンドの構文は次のとおりです。
route [ -fnvq ] cmd destination gateway [metric/netmask]
ここで、cmd は add または delete、destination は宛先のホストまたはネットワーク、gateway はパケットが経路指定されるときに使用される次のホップの中継点です。「オペランド」で説明する修飾子は、コマンド行の任意の位置に指定できます。
get および change サブコマンドの構文は次のとおりです。
route [ -fnvq ] cmd destination [gateway [metric/netmask]]
ここで、cmd は get または change、destination は宛先のホストまたはネットワーク、gateway はパケットが経路指定されるときに使用される次のホップの中継点です。「オペランド」で説明する修飾子は、コマンド行の任意の位置に指定できます。
monitor サブコマンドの構文は次のとおりです。
route monitor [ -inet | -inet6 ]
route は、これらのサブコマンドを、ゲートウェイを経由した宛先までの経路上で実行します。ルートが永続的に作成されている場合は、–name 修飾子でルートの名前を指定することもできます。この名前は、非永続的なルートでは無視されます。このルートに対する以降の操作では、宛先とゲートウェイの代わりに、–name 修飾子付きでこの名前を使用できます。デフォルトルートは default という名前ではありません。作成時に (default 以外の) 任意の名前にでき、その名前はそのデフォルトルートを参照するために使用できます。
デフォルトでは、宛先とゲートウェイアドレスは IPv4 アドレスとして解釈されます。すべてのシンボル名が最初、getipnodebyname(3SOCKET) を使用してホスト名として試行されます。AF_INET の場合にこの検索が失敗すると、getnetbyname(3SOCKET) は、この名前をネットワークの名前として解釈します。
コマンド行のアドレスの前にオプションの修飾子を指定すると、route サブコマンドでのアドレスの解釈方法が変更されます。
次の修飾子がサポートされています。
アドレスが強制的に IPv4 アドレスとして、つまり、AF_INET アドレスファミリの下で解釈されるようにします。
アドレスが強制的に IPv6 アドレスとして、つまり、AF_INET6 アドレスファミリの下で解釈されるようにします。
IPv4 アドレスの場合は、宛先として指定されたインターネットアドレスを解釈することによって、特定のホストへの経路がネットワークへの経路とデフォルトで区別されます。宛先に 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 で見られるようなパケットの並び替えを防止します。分配のアルゴリズムの詳細はドキュメント化されておらず、随時変更される可能性があります。
経路には、各経路に一致する宛先に送信するときのプロトコルの動作に影響を与えるフラグが関連付けられています。これらのフラグは、コマンド行で次の修飾子を指定することによって設定 (場合によっては、~ で示すことによって消去) できます。
|
–setsrc オプションを使用した発信元アドレス選択の方が ipadm(1M) の usesrc に基づいた発信元アドレス選択より優先されることに注意してください。つまり、発信元アドレス選択はルートに対して実行されたあと、インタフェースに対して実行されます。それは、前者の方がきめ細かいためです。
任意指定の –indirect 修飾子は、ゲートウェイに直接到達できない場所への経路の追加を許可します。間接的な経路がパケットの送信または転送に最適である場合、IP はそのゲートウェイを検索して、直接到達可能な経路を探します。–indirect 修飾子は、ゲートウェイに直接到達可能な場合でも使用できます。
オプションの修飾子 –rtt、–rttvar、–sendpipe、–recvpipe、–mtu、–hopcount、–expire、および –ssthresh は、TCP などのトランスポートレベルのプロトコルによってルーティングエントリ内に保持される数量に初期値を提供します。これらの修飾子を個別にロックするには、ロックする各修飾子の前に –lock メタ修飾子を指定するか、またはあとに続くすべてのメトリックスを –lockrest メタ修飾子でロックすることを指定します。
一部のトランスポートレイヤープロトコルは、これらのメトリックスの一部のみをサポートできます。次のオプションの修飾子がサポートされています。
エントリの寿命。このオプションの修飾子は、現在サポートされていません。
最大ホップ数。このオプションの修飾子は、現在サポートされていません。
最大 MTU (バイト単位)。
受信パイプのサイズ (バイト単位)。
往復時間 (マイクロ秒単位)。
往復時間の分散 (マイクロ秒単位)。
送信パイプのサイズ (バイト単位)。
送信パイプのサイズのしきい値 (バイト単位)。
経路のセキュリティー属性。この修飾子を使用できるのは、システムに Solaris Trusted Extensions 機能が構成されている場合だけです。
–secattr 修飾子の形式は次のとおりです。
min_sl=val,max_sl=val,doi=val,cipso
または
sl=VAL,doi=VAL,cipso
上の最初の形式では、min_sl と max_sl の val は、16 進数または文字列のどちらかの形式の機密ラベルです。doi の val は、負でない整数です。経路は、doi 値で定義されているものと同じ解釈のドメインを持ち、かつ min_sl と max_sl の値で定義されている認可範囲内にあるパケットに対してのみ適用されます。cipso キーワードはオプションで、デフォルトで設定されます。有効な min_sl、max_sl、および doi のキーワード/値のペアは必須です。val にスペースが含まれている場合は、二重引用符で保護されている必要があることに注意してください。
上の 2 番目の形式は、min_sl と max_sl に同じ VAL を使用して最初の形式を指定した場合と同等です。get コマンドでは 1 つの機密ラベルだけが使用されるため、2 番目の形式は get コマンドで使用してください。
修飾子 host および net は、–host および –net と同等と見なされます。これらのいずれかの名前に一致する記号アドレスを指定するには、dst または gateway キーワードを使用して区別します。たとえば、–dst host と指定します。
次の 2 つのフラグも、古いシステムとの互換性のために受け入れられますが、何も実行されません。
|
–ifa hostname 修飾子も受け入れられますが、何も実行されません。
デフォルト経路のリスト
ホスト名とネットアドレスのリスト
ネットワークの名前とアドレスのリスト
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
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)
指定された経路がテーブルに追加されます。出力される値は、ioctl(2) の呼び出しで指定されたルーティングテーブルエントリの情報です。使用されたゲートウェイアドレスがゲートウェイのプライマリアドレス (getipnodebyname(3SOCKET) によって返される最初のアドレス) でなかった場合、ゲートウェイアドレスは数値とシンボルで出力されます。
add と同様ですが、エントリを削除または変更する場合に使用されます。
–f フラグが指定されているか、または flush サブコマンドが使用されている場合は、削除された各ルーティングテーブルエントリがこの形式のメッセージで示されます。
指定されたゲートウェイが直接接続されたネットワーク上に存在しなかったため、経路を追加する試みが失敗しました。代わりに、次のホップのゲートウェイを指定します。
テーブルに存在しないエントリに対して delete 操作が試行されました。
カーネル内にすでに存在する経路に対して add 操作が試行されました。
操作が試行されましたが、システムは、新しいエントリを作成するためのメモリーを割り当てることができませんでした。
呼び出し側プロセスが適切な特権を持っていないため、経路を追加、削除、変更、またはフラッシュする試みが失敗しました。
宛先がローカルであることを (–interface 修飾子で) 指定する場合は、ルーターに proxy ARP が実装されていることを前提にしています。つまり、ルーターは、すべての到達可能な宛先への ARP クエリーに応答します。通常は、proxy ARP を使用するよりも、ルーター検索または RIP のどちらかを使用する方が信頼性と拡張性に優れています。RIP に関連する情報については、in.routed(1M) を参照してください。
すべての宛先がローカルである経路とサブネットまたはネットワーク経路を組み合わせると、予期しない結果になることがあります。すべての宛先がローカルである経路に関連して行われる検索の順序は未定義であり、リリースによって変更されることがあります。