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