web-dev-qa-db-ja.com

ローカルルーティングテーブルは何に使用されますか?

ローカルルーティングテーブルとは何かを理解しようとしています。

次のコマンドでランダムなアドレスを追加した場合:

Sudo ip route add to local <any-ip-address> dev <network interface>

これで、このアドレスにpingを実行できますが、ifconfigで一覧表示されているインターフェイスがこのアドレスを使用していません。

例:

$ ping 192.168.22.22 -w 1
PING 192.168.22.22 (192.168.22.22) 56(84) bytes of data.

--- 192.168.22.22 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

$ Sudo ip route add to local 192.168.22.22 dev wlp2s0
$ ping 192.168.22.22 -w 1
PING 192.168.22.22 (192.168.22.22) 56(84) bytes of data.
64 bytes from 192.168.22.22: icmp_seq=1 ttl=64 time=0.018 ms
64 bytes from 192.168.22.22: icmp_seq=2 ttl=64 time=0.015 ms

--- 192.168.22.22 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.015/0.016/0.018/0.004 ms

それはループバックとして機能しているように感じますが、ifconfigからは、loインターフェースにはまだ127.0.0.1アドレスしかありません。この表を確認するとip route ls table local以下が表示されます。

$ ip route ls table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1
local 127.0.0.0/8 dev lo  proto kernel  scope Host  src 127.0.0.1
local 127.0.0.1 dev lo  proto kernel  scope Host  src 127.0.0.1
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1
broadcast 192.168.0.0 dev wlp2s0  proto kernel  scope link  src 192.168.0.13
local 192.168.0.13 dev wlp2s0  proto kernel  scope Host  src 192.168.0.13
broadcast 192.168.0.255 dev wlp2s0  proto kernel  scope link  src 192.168.0.13
local 192.168.22.22 dev wlp2s0  scope Host
broadcast 192.168.122.0 dev virbr0  proto kernel  scope link  src 192.168.122.1
local 192.168.122.1 dev virbr0  proto kernel  scope Host  src 192.168.122.1
broadcast 192.168.122.255 dev virbr0  proto kernel  scope link  src 192.168.122.1

ローカルテーブルとは何ですか?魔女のシナリオではそれを使用する必要がありますか?

ローカルマシンでホストされているブロードキャストとアドレス用だとどこかで読んだのですが、なぜそのために特別なテーブルが必要なのか、またいつこのテーブルにエントリを追加する必要があるのか​​わかりません。

ありがとう

5
Lilás

まず最初に、インターネット情報で利用可能ないくつかが「ローカルテーブルはカーネルによって維持される特別なルーティングテーブルです」について説明しています。

今日本当に勇気を感じているなら、少しの情報を得ることができますlocal ly、ここに方法は次のとおりです:

_man ip_-それはあなたがいじくり回してきたコマンドだったので、そのマニュアルが問題についていくつかのヒントを持っていることを期待することは理にかなっています。いわゆるSEE ALSOセクションがあることを確認してください。それを注意深く調べてみましょう-特に、次の点についてさらに調査するために2つの候補者を恥知らずに言及しています:

  1. ip-route(8)
  2. ip-rule(8)

全体として、今やいくらかあります。

_man 8 ip-route_ 's:

local-宛先はこのホストに割り当てられています。パケットはループバックされ、ローカルに配信されます。

実際には、他の1つのテーブルが常に存在します。これは非表示ですが、さらに重要です。 localテーブル(_ID 255_)です。このテーブルは、ローカルアドレスとブロードキャストアドレスのルートで構成されています。カーネルはこのテーブルを自動的に維持し、管理者は通常、テーブルを変更したり、調べたりする必要はありません。

_man 8 ip-rule_ 's:

起動時に、カーネルは3つのルールで構成されるデフォルトのRPDBを構成します。

  1. 優先度:0、セレクター:何でも一致、アクション:ルーティングテーブルを検索local(_ID 255_)。 localテーブルは、ローカルアドレスとブロードキャストアドレスの優先度の高い制御ルートを含む特別なルーティングテーブルです。

引用されたマニュアルにいくつかの著者が入れた情報に個人的に満足していると感じますが、それでもお腹が空いていれば、今では釣り方を知っていると思います。

7
poige

ローカルルーティングテーブルにより、システムは適切なインターフェイスにルーティングしてアドレスに到達できます。ルートは、最も具体的な(最小のサブネット)ルートを使用して選択されます。ただし、ループバックアドレスによって処理されるルートをテストします。

Pingはインターフェースレベルで応答され、リスニングプロセスを必要としません。ホスト上のインターフェースに割り当てられたアドレスにpingを送信すると、ネットワークはループバックインターフェースへのルーティングを短絡させます。ループバックインターフェイスへのルーティングにより、リモートサーバーがトラフィックをスヌーピングできなくなります。ルートをローカルインターフェースに割り当てたので、pingはループバックインターフェイスによって応答されます。

通常、ルーティングテーブルには次のルートがあります。

  • デフォルト(0.0.0.0/0):ルーターを経由するルート。トラフィックは、不明なアドレスにルーティングされます。これは、インターネットへの接続に使用されるルートです。これはルーターに直接ルーティングする必要がありますが、中間ルーターを指定して間接的にルーティングする方法もあります。

  • 192.0.2.0/24:(オプション、複数のインターフェースでのみ有効)192.0.2.0はリモートサブネットのネットワークアドレス、/ 24はネットワークのサイズです。これもルーターにルーティングされます。これは、ルートが外側のサブネットのルーター以外のルーターによってルーティングされる場合にのみ必要です

  • 192.0.2.0/24:(標準)。上記の値)接続されたネットワークへのルートを提供します。インターフェイスのIPアドレスはサブネット内にある必要があります。これにより、サブネットにサービスを提供するルーターにルーティングされます。ただし、サブネット内の他のホストへの接続は、より具体的なルートで上書きされない限り、直接ルーティングされます。

  • 127.0.0.1/8:(標準)。これは、ループバック擬似インターフェースに接続されたループバックアドレスです。これらのアドレスは、実際のインターフェイスでは表示されません。

ポイントツーポイントやブラックホールのような他の特殊なルートがあります。これらはめったに使用されません。

1
BillThor