为什么当我添加新的网络接口并尝试使用另一个接口时会超时?

为什么当我添加新的网络接口并尝试使用另一个接口时会超时?

我目前有两个接口:wifi 和有线 在此处输入图片描述

当我插入有线网络时,我无法再使用 wifi(wlp4s0),如果我尝试这样做,curl --interface wlp4s0 (or 192.168.1.2) ifconfig.me它只是挂起,但 curl --interface 192.168.8.100 ifconfig.me工作正常

答案1

您附上的截图已经包含答案:)

default via 192.168.8.1 dev enx001e101f0000 proto dhcp metric 100
default via 192.168.1.1 dev wlp4s0 proto dhcp metric 600

您的系统定义了两个默认网关。在这种情况下,您的系统将主要使用具有较低度量的网关(在这种情况下为 192.168.8.1,其度量为 100),并且只有当第一个网关无法访问时才切换到第二个网关。这就是网络的工作原理。

因此,即使您强制数据包通过 192.168.1.2 发出,它们也将被发送到无法从此接口访问的目的地 192.168.8.1,并且数据包将丢失。

答案2

我终于解决了这个问题。上面有人说你不能同时使用多个设备,这显然是错误的。有 4 个步骤可以做到这一点。

  • 从默认路由表中删除新接口的默认条目ip route delete default default dev <xxx>
  • 在文件中添加具有所选名称的新行/etc/iproute2/rt_tables,例如200 example
  • 将请求从本地接口路由到创建的表ip rule add from <user ip address in that interface> example (we just created this name above nothing magic) - 向该表添加默认路由,以便内核知道将数据发送到哪里ip route add default via <router addr such as 192.168.1.1 or whatever> dev <device such as wlp4s0> table <table name we created example in this case>
  • 刷新缓存ip route flush cache

完成这 4 个步骤后,您就可以使用curl google.com --interface wlp4s0

你可以找到我学到这些的来源这里。我建议你从头开始阅读,而不是只阅读这一节。文档使用了非常令人愉快的语言和大量的例子

相关内容