Routing

本地路由表是做什麼用的?

  • October 4, 2020

我試圖了解什麼是本地路由表。

如果我使用以下命令在其中添加一個隨機地址:

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

感覺是做loopback的,但是從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

那麼本地表是什麼,在女巫場景中我應該使用它嗎?

我在某處讀到它用於本地電腦託管的廣播和地址,但我不明白為什麼我們需要一個特殊的表,什麼時候應該在這個表中添加任何條目。

謝謝

首先,網際網路上的一些資訊解釋說“本地表是由核心維護的特殊路由表”。

如果您今天真的很勇敢,您甚至可以在本地獲取一些資訊,方法如下:

man ip——因為這是你一直在修改的命令,所以期望它的手冊應該對此事有一些提示是有道理的。你應該清楚地看到現在有所謂的SEE ALSO部分。讓我們仔細研究一下——除此之外,它無恥地提到了 2 個可能的候選人,以供進一步調查:

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

總而言之,我們現在有點:

man 8 ip-route的:

local- 目的地被分配給這個主機。數據包被環回並在本地傳送。

實際上,始終存在另一張表,它是看不見的,但更重要的是。它是local表 ( ID 255)。此表由本地和廣播地址的路由組成。核心自動維護這個表,管理員通常不需要修改它,甚至不需要查看它。

man 8 ip-rule的:

在啟動時,核心配置由三個規則組成的預設 RPDB:

  1. 優先級:0,選擇器:匹配任何東西,動作:查找路由表localID 255)。local表是一個特殊的路由表,包含本地和廣播地址的高優先級控制路由。

我個人對一些作者在引用手冊中提供的資訊感到滿意,但如果你仍然餓,我想現在你知道如何釣魚了。

引用自:https://serverfault.com/questions/851221