我的哪些網路設備用於建立/維持連接

我的哪些網路設備用於建立/維持連接

如果我有兩個網路設備,我如何知道哪個網路設備正在用於任何請求的連接輸出。

有了這個 :

ip r
  default via 10.0.0.1 dev wlp3s0 proto static 
  default via 10.0.0.1 dev wlx00e04c221395 proto dhcp src 10.0.0.143 metric 600 
  10.0.0.0/24 dev wlp3s0 proto kernel scope link src 10.0.0.120 
  10.0.0.0/24 dev wlx00e04c221395 proto kernel scope link src 10.0.0.143 
  10.0.0.1 dev wlx00e04c221395 proto dhcp scope link src 10.0.0.143 metric 600 

我有兩條default路線。系統將始終使用命令列出的第一個ip r嗎?

答案1

使用以下命令檢查您的路由表,此處公制列通常決定路由優先權是什麼,

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.2       0.0.0.0         UG    50     0        0 eth1
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0

此優先級取決於重新啟動/啟動後介面出現的順序,您也可以使用以下命令影響優先級

sudo ifmetric <interface> <priority>

答案2

我認為對其他答案的評論中的討論值得有自己的答案:

ip route首先,雖然你可以用或列出路由表route -n並自己計算出可能會發生什麼,但更容易的是讓核心檢查ip route get a.b.c.d路由表(是的,現代 Linux 系統中有更多的表,並且route -n只顯示主表)並告訴您結果。

其次,設計網路的經驗法則是「每個主機只獲得一個單身的網路介面連接到它所連接的每個子網路」。在這裡,虛擬機器、網路命名空間等都算作額外的“主機”,即使它們在相同的硬體上運行。

推論是「不,您不能將多個 IPv4 位址指派給同一個網路介面」(除非您知道自己在做什麼,但這樣做需要您自擔風險)。

原因是透過不同的網路介面存取子網路不會帶來任何好處:它將以一種或另一種方式進入同一子網路。

如果您違反了這些規則,就像上面所做的那樣,您顯然有兩個 WLAN 連接到同一子網路:

10.0.0.0/24 dev wlp3s0 proto kernel scope link src 10.0.0.120 
10.0.0.0/24 dev wlx00e04c221395 proto kernel scope link src 10.0.0.143 

那麼會發生什麼事是沒有定義的。正如您所看到的,Linux 核心很樂意隨機選擇一個網路介面作為目的地10.0.0.*

因此,要么它們實際上連接到兩個不同的 WLAN。在這種情況下,請變更其中一個 WLAN 的 IP 範圍,例如變更為 10.0.1.0/24。或者,它們是同一個 WLAN,在這種情況下擁有兩個 WLAN 適配器就沒有意義。

與預設規則類似。您應該只有一個預設規則;擁有多個規則意味著行為是未定義的,並且規則是隨機選擇的。這意味著一個連接中的資料包是使用不同的參數(例如來源位址)隨機發送的,而另一方面主機將僅識別一組參數(打開連接時使用的參數),將丟棄其他資料包,並且會將遺失的資料包視為遺失的資料包。這是因為標準網際網路協定是「單宿主」的。存在多宿主協定(例如 SCTP 或多宿主 TCP 擴展),但它們目前的使用範圍還不夠廣泛,無法發揮作用。

所以不,您不能使用兩個 ISP 連接到互聯網並使“互聯網更快”(除非您有一些硬方法來決定使用哪個連接,例如通過目標地址)。這是每週左右都會被問到的常見問題。

我希望這能回答您在原始問題中未提出的所有(或至少大部分)問題。

相關內容