我使用静态 IP 来通过网络管理器控制有线连接。
ip link 显示 enp4s0
2: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq state DOWN mode DEFAULT group default qlen 1000
NO-CARRIER 似乎表示存在驱动程序问题,因为我在同一台 PC 上通过在 grub 中选择 4.18.0.17 先前内核发布了此信息。NetworkManager.service 和 avahi-daemon.service 均已加载并处于活动状态。
但是 NetworkManager 并不高兴,如下所示...
NetworkManager[1103]: <info> [1555719488.0396] device (enp4s0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')
NetworkManager[1103]: <info> [1555719488.0402] manager: NetworkManager state is now CONNECTED_LOCAL
NetworkManager[1103]: <info> [1555719488.9594] manager: NetworkManager state is now CONNECTED_SITE
NetworkManager[1103]: <info> [1555719488.9595] policy: set 'LaN' (enp4s0) as default for IPv4 routing and DNS
NetworkManager[1103]: <info> [1555719488.9603] device (enp4s0): Activation: successful, device activated.
NetworkManager[1103]: <info> [1555719488.9609] manager: NetworkManager state is now CONNECTED_GLOBAL
NetworkManager[1103]: <info> [1555719488.9616] manager: startup complete
NetworkManager[1103]: <info> [1555719495.0373] device (enp4s0): state change: activated -> unavailable (reason 'carrier-changed', sys-iface-state: 'managed')
NetworkManager[1103]: <info> [1555719495.0583] manager: NetworkManager state is now DISCONNECTED
NetworkManager[1103]: <info> [1555719505.6899] agent-manager: req[0x55c9724642a0, :1.63/org.freedesktop.nm-applet/1000]: agent registered
可能是选择了错误的 phy 驱动程序或者网络管理器有错误?
“ip link set enp4s0 up” 没有帮助。
答案1
我遇到了类似的问题(升级到 19.10 后没有有线以太网)。我忍受了一段时间,只是习惯了ifup
。.bashrc
但当我深入研究这个问题时,我被 Google 引导到了这个页面。
但是,上述解决方案都无法解决我的问题。显然,当我尝试从 更改为 时,我找到了解决方案ifup
。netplan
那时,我意识到 NetworkManager 配置 ( /etc/NetworkManager/NetworkManager.conf
) 中有一个参数允许 NetworkManager 控制接口。我在managed=false
那里。
只需将其更改为:
[ifupdown]
managed=true
创建一个空文件:
sudo touch /etc/NetworkManager/conf.d/10-globally-managed-devices.conf
并重新启动 NetworkManager:
sudo systemctl restart NetworkManager
解决了我的问题。
答案2
更新:将我的笔记本从 Ubuntu 19.04 升级到 Ubuntu 19.10 后,我不再遇到这个问题。我确实不是18.10 版中也没有。所以,似乎只有 19.04 版才有这个功能。
我只是在这里发布我的观察结果作为答案。我希望最终能找到解决方案,这样我就能适当地更新这个答案。
我遇到了同样的问题:
在通电期间,这个问题不是发生。但是,它发生了总是操作系统重新启动后(软重启)。
到目前为止,唯一的解决方案是:拔下以太网电缆;启动机器;启动完成后再插回电缆。如果在启动过程中插入网线,以太网连接将无法工作!
我遵循了https://ubuntu-mate.community/t/19-04-ethernet-wired-connection-refuses-to-connect-when-plugged-in-before-boot/19333/8和最初的发帖者一样,我没有任何进步。以下是我的观察结果,我请求你(once_a_NoOb_always_a)来验证它们:
此问题始于从 Ubuntu 18.10 升级到 19.04 之后。最初(升级后第一次重启时)问题没有出现。但后来(第二次重启后)问题开始出现坚持不懈。
如果你在断开以太网电缆的情况下启动机器,并在启动后再连接,则问题没有发生。
无论如何,链路级连接都是成功的(即使在您断开并重新连接电缆或执行
ip link set enp3s0f1 down
和之后ip link set enp3s0f1 up
)。我可以从路由器上看到相关的以太网端口已启动,并且数据包在两个方向上传输。但是,发生了一些非常奇怪的事情:我在 Ubuntu 盒子中为有线和无线连接使用静态 IP 地址;这些地址分别以 14 和 15 结尾。当我启用以太网(有线)接口时,我的路由器在两个 Ubuntu 盒子接口中都看到以 14 结尾的相同 IP 地址。
我的临时推断是网络堆栈以某种方式混合了两个接口的 MAC 地址。(请注意,通常在启动和使用计算机时,我的无线接口是硬件禁用的;通常我只使用有线连接。但是,即使在这种情况下,我升级的 Ubuntu 盒子也无法连接到以太网网络。唯一的解决方案似乎是在启动时物理断开以太网电缆并在启动后连接它。)
- 我使用以下方法彻底删除了有线(以太网)连接nm-连接编辑器(和根用户),然后重新创建连接,这次使用 DHCP 而不是静态 IP 地址。当我尝试启动接口时,我的路由器做为我的接口指定一个 IP 地址(enp3s0f1),但 Ubuntu 不显示此 IP。以太网接口的硬件信息如下:
*-network description: Ethernet interface product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller vendor: Realtek Semiconductor Co., Ltd. physical id: 0.1 bus info: pci@0000:03:00.1 logical name: enp3s0f1 version: 12 serial: b0:25:aa:2d:91:22 size: 1Gbit/s capacity: 1Gbit/s width: 64 bits clock: 33MHz capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=r8169 duplex=full firmware=rtl8411-2_0.0.1 07/08/13 latency=0 link=yes multicast=yes port=MII speed=1Gbit/s resources: irq:18 ioport:3000(size=256) memory:a5c14000-a5c14fff memory:a5c10000-a5c13fff
我觉得新内核 5.0.0-13 针对此卡 (RTL8411B) 有一些错误软件 :(
@drblah:你的建议对我来说不起作用。网络计划您提到的命令不起作用,并且/etc/netplan/01-网络管理器-all.yaml文件未更新(文件日期保持在2018年10月18日,内容相同)。
答案3
我遇到了和你一样的问题。我找到的解决方法是让 netplan 重新生成网络配置:
sudo netplan generate
sudo netplan apply
运行这两个命令后,您应该能够使用常用的配置工具来配置网络。
默认情况下,netplan 将有一个名为的配置文件:/etc/netplan/01-网络管理器-all.yaml内容如下:
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
这只会告诉系统让所有接口由网络管理器控制。我不知道为什么这对我来说有效,因为 netplan 已经应该管理网络接口了。
作为参考,我的以太网控制器的 lspci 输出是:
$ lspci | grep -i ether
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
答案4
看来这里也有同样的错误。我认为问题是由 NetworkManager 执行不正确的 dhclient 程序引起的,并在我的网络交换机中触发 IP 冲突,导致连接中断约 30 分钟。另请参阅此错误:https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/1793763
更新:要解决这个问题,你可以使用插件和...一起下拉处理以太网连接,同时仍使用 NetworkManager 处理无线连接。要执行此操作:
安装 ifupdown 和 resolvconf:
apt install ifupdown resolvconf
禁用 systemd-resolved
systemctl stop systemd-resolved
systemctl disable systemd-resolved.service
编辑 /etc/NetworkManager/NetworkManager.conf 以使 ifupdown 设备保持不变,并使用 resolvconf 来更新 /etc/resolv.conf,并使用来自 dhcp 服务器的普通 DNS 服务器,而不是 systemd-resolved 127.0.0.53 服务。
[main]
# don't manage devices configured in /etc/network/interfaces
plugins=ifupdown,keyfile
# pass nameserver dhcp config to resolvconf
rc-manager=resolvconf
# use plain nameservers directly from DHCP server instead of intermediate resolved
dns=default
[ifupdown]
managed=false
接下来将以下行添加到 /etc/network/interfaces 来定义以太网设备(在我的情况下是 enp0s25)
iface enp0s25 inet dhcp
iface enp0s25 inet6 auto
auto enp0s25
确保文件中没有行,因为 ifup 不应在启动时自动执行,而应在插入以太网连接时由 ifplugd 执行。
接下来安装 ifplugd 并进行配置,以便监听 enp0s25 设备以获取正确的连接/断开触发器
apt install ifplugd
另外,将文件/etc/dhcp/dhclient-enter-hooks.d/resolved
清空,因为否则 resolvconf 将永远不会从 ifupdown 中起作用:
echo "" > /etc/dhcp/dhclient-enter-hooks.d/resolved
也不要删除此文件,否则它将在下次系统更新时重新安装。
最后,启动并启用 ifplugd,重新启动 NetworkManager 以获取更新的配置。
systemctl restart NetworkManager
systemctl enable ifplugd
systemctl start ifplugd
和/或重新启动以检查一切是否设置正确。
免责声明1:我还没有在全新安装的 ubuntu 上重放此脚本来验证它是否完全正确(不过我检查了 bash_history ;)。如果出现问题,请回复。
免责声明2这适用于 Ubuntu LTS 18.04
免责声明 3:也许这也可以与 systemd-resolved 甚至 DNSMasq 或 unbound 一起工作,但我不知道具体如何,而且我个人也不想要它。