web-dev-qa-db-ja.com

IPアドレススコープパラメータ

Linuxでは、コマンド

ip address add [...]

scope引数があります。マニュアルページには、スコープは「このアドレスが有効な領域のスコープ」であると記載されています。法的範囲のリストに従います:

  • グローバル
  • 地点
  • リンク
  • ホスト

この「有効性」の「領域」とは何を指しているのですか?

18
rolaf

from http://linux-ip.net/html/tools-ip-address.html

スコープ|説明

グローバル|どこでも有効

サイト|このサイト内でのみ有効(IPv6)

リンク|このデバイスでのみ有効

ホスト|このホスト(マシン)内でのみ有効

スコープは通常、コマンドラインで明示的に使用せずにipユーティリティによって決定されます。 (...)

以下の引用は、O'ReillyのChristian Benvenuti著のLinuxネットワーク内部の理解の本からの引用です。

「Linuxでのルートのスコープは、宛先ネットワークまでの距離の指標です。IPアドレスのスコープは、ローカルホストからのアドレスの既知の距離の指標であり、ある程度、ある程度の距離もわかりますそのアドレスの所有者はローカルホスト(...)からです。

ホスト:ホスト自体内での通信にのみ使用されるアドレスには、ホストスコープがあります。ホスト外では、このアドレスは不明であり、使用できません。例はループバックアドレス127.0.0.1です

リンク:アドレスに意味があり、LAN内でのみ使用できる場合、アドレスにはリンクスコープがあります。例は、サブネットのブロードキャストアドレスです。

グローバル:アドレスは、どこでも使用できる場合、グローバルスコープを持ちます。これは、ほとんどのアドレスのデフォルトのスコープです。 (...)」

スコープを使用する主な理由は、複数のインターフェースとアドレスを持つホストが、いつどのアドレスを使用するかを決定する必要があるためです。自身との通信には、ループバックアドレス(スコープホスト)を使用できます。他の場所での通信では、別のアドレスを選択する必要があります。

22
brengo

スコープの定義を理解するには、まずリンクローカルアドレスとサイトローカルアドレスを理解する必要があります。それらが片付けられると、他の人はその場に落ちます。 IPv6ドキュメントの一部を引用しています。

リンク

リンクローカルアドレスは、単一リンク上のノードのアドレス指定に使用されることになっています。リンクローカルアドレスから発信された、または宛先に向けられたパケットは、ルーターによって転送されません。

この例は、169.254/16の範囲です。これは、デバイスがDHCPから有効なアドレスを取得できないときに以前に見た可能性があります。

サイト

サイトローカルアドレスは、サイト内で使用されることになっています。ルーターは、サイトローカルの送信元または宛先アドレスを持つパケットをサイト外に転送しません。

これはIPv6にのみ適用されます。 IPv4にはサイトローカルアドレスの概念はありません。

ホスト

ホストアドレスは、ホストマシン自体にのみ存在するものです。たとえば、127.0.0.1は、ループバックインターフェイスに通常割り当てられるホストアドレスです。ループバックインターフェイスには外部接続がないため、スコープはホストマシンのスコープ内に限定されます。

グローバル

グローバルアドレスは、現在「通常の」アドレスと見なされているアドレスです。つまり、外部ネットワークで表示され、外部ネットワーク経由でルーティング可能なユニキャストアドレスです。

14
Dan Carley

fib_semantics.c でこれらのコメントを見つけます

 704  * Every prefix is assigned a "scope" value: "Host" is local address,
 705  * "link" is direct route,
 706  * [ ... "site" ... "interior" ... ]
 707  * and "universe" is true gateway route with global meaning.
 708  *
 709  * Every prefix refers to a set of "nexthop"s (gw, oif),
 710  * where gw must have narrower scope. This recursion stops
 711  * when gw has LOCAL scope or if "nexthop" is declared ONLINK,
 712  * which means that gw is forced to be on link.
 ....
 719  * Normally it looks as following.
 720  *
 721  * {universe prefix}  -> (gw, oif) [scope link]
 722  *                |
 723  *                |-> {link prefix} -> (gw, oif) [scope local]
 724  *                                      |
 725  *                                      |-> {local prefix} (terminal node)
 726  */
0
PokerFace