ルーティングテーブルエントリには属性がありますscope
。global
から(またはその逆)変更がlink
ネットワークシステムにどのような影響を与えるかを知りたいです。
答え1
NIC設定に3つの異なるIP範囲があるとします。
14: ens160: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 36:ee:4c:d0:90:3a brd ff:ff:ff:ff:ff:ff
inet 172.22.0.1/24 scope host ens160
inet 172.21.0.1/24 scope link ens160
inet 172.20.0.1/24 scope global ens160
ルーティングテーブルに ens160 パスがあるとします。
172.20.0.0/24 dev ens160 proto kernel scope link src 172.20.0.1
ご覧のとおり、NICとルーティングに範囲設定があります。
パスがsrcを指定した場合、この場合、LinuxはパスとNIC設定の範囲設定を完全に無視します。それは完全に無視されます。そして、LinuxはNICから発信するパケットにsrc ip = 172.20.0.1を使用します。
別のルートがあるとしましょう。
4.4.4.4 scope link
src ipがパスに指定されていない場合、Linuxはパスの範囲を確認します。私たちの場合、範囲=リンクです。その後、LinuxはNIC設定に移動し、同じ範囲のIPを検索します。この例では、IP range = link = 172.21.0.1/24です。
したがって、dst ip = 4.4.4.4の場合、Linuxはsrc ip = 172.21.0.1を使用します。
パスに範囲が指定されていない場合は、範囲 = グローバルを意味します。
はい
35.35.35.35 dev ens160
次へ。基本パスを見てみましょう。
default via 172.16.102.1 dev ens160 onlink
範囲を指定しません。これは範囲=グローバルを意味します。
デフォルトパスはsrcを指定しないため、これはLinuxがscope = globalでens160 IPを取得してそれをsrc IPとして使用することを意味します。
次へ。ルートに 1 つの範囲があり、NIC IP に異なる範囲があるとします。はい
ネットワークカード
14: vasya2: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 36:ee:4c:d0:90:3a brd ff:ff:ff:ff:ff:ff
inet 172.22.0.1/24 scope host vasya2
パス
14.14.14.14 scope link
14.14.14.14 pingをすると何が起こるのか?
ルートには範囲=リンクがありますが、NICには範囲=ホストのIPのみがあります。重要なのは、範囲=ホストであるIPは、範囲=ホストであるパスのバックエンドとしてのみ機能できることです。それ以外の場合、LinuxはそのようなIPを使用できません。したがって、Linuxはsrc ip = 0.0.0.0をdst ip 14.14.14.14として使用します。
(実際には、ネットワークカードが物理的なものか仮想なのかによって異なります。ネットワークカードが仮想の場合、この場合、Linuxは
範囲=グローバルである他のネットワークカードの異なるIPを使用します)
一般規則:パスがsrcを指定しない場合
- 範囲=ホストインIPは、範囲=ホストインパスのバックエンドとしてのみ機能できます。
- 範囲=リンクインIPは、範囲=ホストまたは範囲=リンクインパスのバックエンドとしてのみ使用できます。
- 範囲=グローバルなIPは、すべての範囲のルートのバックエンドとしてのみ機能できます。
こんな不快な建築物にたくさん驚きました。
これらのすべての「範囲項目」を忘れるには、ルーティングテーブルのパスにあるsrcフィールドを使用してください。
答え2
route scope
次の定義を見てみましょうLinux
。
The scope of a route in Linux is an indicator of the distance to the
destination network.
Host
A route has host scope when it leads to a destination address on the local host.
Link
A route has link scope when it leads to a destination address on the local network.
Universe
A route has universe scope when it leads to addresses more than one hop away.
したがって、ルートの範囲を変更すると、コンピュータがそのルートのネットワークに接続できなくなる可能性があります。ルータは、ローカルネットワークに属する宛先に送信されたパケットを転送しません。
範囲には、ルーティングできない(プライベート)アドレスとルーティングできる(パブリック)アドレスの違いは反映されません。
10.0.0.1(プライベート - ルーティング不可)と8.8.8.8(パブリック - ルーティング可能)の両方にリンクまたはユニバースの範囲を指定できます。システム管理者が設定します。
答え3
範囲はソースアドレスの選択に影響します。
送信元アドレスがまだ固定されていない接続/接続の場合(たとえば、TCP接続は開始されますが受信パケットに応答するときは開始されません)、送信元アドレスはパケットが到達しようとしている経路の範囲に従って選択されます。
これがアドレスにも範囲属性がある理由です。
ソースアドレス選択が発生しない例:着信TCP接続の開始またはpingパケットは、反対のIPアドレス(ソース→宛先、宛先→送信元)で応答されます。それ以外の場合、他のホストはそのパケットを応答として認識しません。
ソースアドレスの選択が発生した例: ping xyz
またはtelnet xyz
。通常のプログラムは、使用するソースアドレスをオペレーティングシステムに知らせません(これは良い習慣です)。オペレーティングシステムは1つを選択し、そうする準備をする必要があります。ルートの潜在的な発信パケットをテストします(通常のルーティングは宛先アドレスのみを使用し、高度なルーティングを使用している場合、パケットにはまだ送信元アドレスがありません!)。 。結果の範囲は、可能であれば発信インターフェイスのその範囲内のアドレスに選択を減らします。