一次只能启动一个接口

一次只能启动一个接口

我查看了最相关的问题,并且又向前迈了一步,但不知道下一步该去哪里。

我目前正在尝试连接两个以太网接口,但无法同时与两个接口建立连接。当我连接第二个接口时,enx000acd2f045eenp0s31f6与互联网的连接断开了。与引用的答案不同,当我运行 时,我的两个网络都没有被禁用sudo lshw -c network

$ sudo lshw -c network
[sudo] password for maxgitt: 
  *-network               
       description: Ethernet interface
       product: Ethernet Connection (5) I219-LM
       vendor: Intel Corporation
       physical id: 1f.6
       bus info: pci@0000:00:1f.6
       logical name: enp0s31f6
       version: 00
       serial: 50:9a:4c:18:ad:9f
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=3.2.6-k duplex=full firmware=0.1-4 ip=130.207.34.53 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
       resources: irq:138 memory:f7100000-f711ffff
  *-network
       description: Ethernet interface
       physical id: 1
       bus info: usb@2:3.1
       logical name: enx000acd2f045e
       serial: 00:0a:cd:2f:04:5e
       size: 1Gbit/s
       capacity: 1Gbit/s
       capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=ax88179_178a duplex=full ip=192.168.3.4 link=yes multicast=yes port=MII speed=1Gbit/s

答案确实提到检查我的路由表,指出我不能拥有多个网关。所以我运行了以下命令:

连接到之前enx000

 $ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         130.207.34.1    0.0.0.0         UG    100    0        0 enp0s31f6
130.207.34.0    0.0.0.0         255.255.255.0   U     100    0        0 enp0s31f6
143.215.251.5   130.207.34.1    255.255.255.255 UGH   100    0        0 enp0s31f6
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp0s31f6

连接到后enx000

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.3.3     0.0.0.0         UG    0      0        0 enx000acd2f045e
0.0.0.0         130.207.34.1    0.0.0.0         UG    100    0        0 enp0s31f6
130.207.34.0    0.0.0.0         255.255.255.0   U     100    0        0 enp0s31f6
143.215.251.5   130.207.34.1    255.255.255.255 UGH   100    0        0 enp0s31f6
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp0s31f6
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 enx000acd2f045e

最后,他说:“如果你有两个网关,你的路由表将有双重目标 0.0.0.0 条目,系统无法处理这种情况。”我对网络还比较陌生,不确定如何解决这个问题。看来我的路由表的前两行可能有冲突。

  • 我应该更新:
    • 在 Ubuntu 的网络菜单中找到默认网关,或者
    • 编辑/etc/network/interfaces,这在 Ubuntu 的最新版本中似乎用处不大,更不用说 16.04 了

答案1

您引用的答案指出了问题所在 - 它位于路由表中。发生的事情是,您创建了两个“默认路由”(0.0.0.0 路由)。这是在未找到其他路由时匹配的路由,因此命名为默认路由。

在您的情况下,一旦第二个接口启动,您就可以看到两个默认路由,并且系统使用第一个匹配的路由,因此使用 enxXXX 适配器。

说您不能有两个默认路由是过于简单了,因为一切皆有可能,您可以在两者之间平衡流量,但就您的目的而言,您似乎实际上只想使用原始 enpXXX 接口来传输互联网流量?并且只有通过另一个接口的 LAN 流量?

这很容易实现 - 您需要禁用 enxXXX 适配器作为默认路由(这将添加到 LAN 的路由而不是世界 0.0.0.0)或设置路由顺序,以便 enpXXX 接口在路由表中位于第一位。

这里有一个关于如何在 Ubuntu 中使用多个 NIC 的很好的描述:https://askubuntu.com/questions/310355/networking-with-multiple-nics

答案2

感谢您的参考。它帮助我解决了问题。我之前一定在路由表中添加了默认网关。您可以检查并确保运行时ip route show只有 1 个默认网关:

$ ip route show
default via 192.168.3.3 dev enx000acd2f045e  proto static 
default via 130.207.34.1 dev enp0s31f6  proto static  metric 100

我所要做的就是删除第二条路线:

sudo route del default gw 192.168.3.3 enx000acd2f045e

$ ip route show
default via 130.207.34.1 dev enp0s31f6  proto static  metric 100

相关内容