我查看了最相关的问题,并且又向前迈了一步,但不知道下一步该去哪里。
我目前正在尝试连接两个以太网接口,但无法同时与两个接口建立连接。当我连接第二个接口时,enx000acd2f045e
我enp0s31f6
与互联网的连接断开了。与引用的答案不同,当我运行 时,我的两个网络都没有被禁用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