我的哪些网络设备用于建立/维持连接

我的哪些网络设备用于建立/维持连接

如果我有两个网络设备,我如何知道哪个网络设备正在用于任何请求的连接输出。

有了这个 :

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 连接到互联网并使“互联网更快”(除非您有一些硬方法来决定使用哪个连接,例如通过目标地址)。这是每周左右都会被问到的常见问题解答。

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

相关内容