我将整个桌面设置从 Windows 切换到 GNU/Linux + Debian 10。我能够运行 debian netinstaller 并连接主板进行互联网软件更新。
但每当我完成完整的设置并运行时,Debian 就无法通过以太网连接到网络。登录后界面立即显示网络已断开。更换主板后,我相当确定这是某种软件/驱动程序问题。
我的硬件设置包括:
- 华硕 ROG Crosshair Hero VI
- PCI1 中的 Nvidia GTX 670
- PCI2 中的 Nvidia GTX 970(目的是直通到虚拟机)
- 锐龙 7 2700X
- 三星 EVO SSD 带加密 LVM,无需进一步分区
这个问题类似于https://askubuntu.com/questions/1135412/updated-to-19-04-and-no-ethernet-now,但我的设置不同,对 stackexchange 等的研究没有带来任何帮助。
输出systemctl status NetworkManager
:
device (enp4s0): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
device (enp4s0): state change: config -> ip-config (reason 'none', sys-iface-state:'managed')
dhcp4 (enp4s0): activation: beginning transaction (timeout in 45 seconds)
DHCPrequests
dhcp4 (enp4s0): dhclient started with pid 1334
device (enp4s0): state change: ip-config -> unavailable (reason 'carrier-changed', sys-iface-state: 'managed')
dhcp4 (enp4s0): canceled DHCP transaction, DHCP client pid 1334
dhcp4 (enp4s0): state changed unknown -> done
manager: NetworkManager state is now DISCONNECTED
输出lspci | grep Ethernet
:
Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03)
/etc/network/interfaces 保持不变,将其更改为热插拔或静态 IP 地址没有帮助。与在 nmcli 中设置静态网络设置相同。
输出nmcli device show enp4s0
:
GENERAL.DEVICE: enp4s0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 04:92:26:DA:16:CC
GENERAL.MTU: 1500
GENERAL.STATE: 20 (unavailable)
输出uname -a
:
Linux NAMEOFPC 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5+deb10u1 (2019-07-19) x86_64 GNU/Linux
输出Dmesg | grep enp4s0
:
1.054338] igb 0000:04:00.0 enp4s0: renamed from eth0
[ 56.832109] IPv6: ADDRCONF(NETDEV_UP): enp4s0: link is not ready
[ 56.857033] IPv6: ADDRCONF(NETDEV_UP): enp4s0: link is not ready
[ 59.608583] igb 0000:04:00.0 enp4s0: igb: enp4s0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX
[ 59.608829] IPv6: ADDRCONF(NETDEV_CHANGE): enp4s0: link becomes ready
[ 83.708581] igb 0000:04:00.0 enp4s0: igb: enp4s0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX
[ 147.966461] IPv6: ADDRCONF(NETDEV_UP): enp4s0: link is not ready
[ 320.546500] IPv6: ADDRCONF(NETDEV_UP): enp4s0: link is not ready
[ 323.280590] igb 0000:04:00.0 enp4s0: igb: enp4s0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX
[ 323.280831] IPv6: ADDRCONF(NETDEV_CHANGE): enp4s0: link becomes ready
[ 326.168592] igb 0000:04:00.0 enp4s0: igb: enp4s0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX
物理断开连接不是解决方案,NetworkManager 会立即通知物理连接不会再次断开。唯一的解决方案似乎是ip link set enp4s0 down
紧随其后ip link set enp4s0 up
。这将是 ps
我也添加了非自由存储库 - 但无济于事。我没有尝试的唯一解决方案是专有的英特尔 I211 驱动程序。但我不知道这是否是解决方案,因为提到的 askubuntu-post 使用内核 5.x 和 Realtek 网卡 - 也有同样的问题。
编辑:此外,这个问题似乎很少被提及,我想如果唯一的解决方案是将新的驱动程序编译到内核空间中,您会找到更多有关此问题的帖子。此外,英特尔表示,I211 的 IGP-linux 驱动程序是为内核 2.x 和 3.x 制作的...
cat /sys/class/net/enp4s0/device/power/control 的输出:
“在”
直接连接到路由器即可立即建立网络连接。此外,交换机确实限制在 100mbps。我还没有时间安装 ethtool。当我有时间的时候我会更新。
这个问题有什么解决办法吗?
也许是 NetworkManager 的消息“reason '载体更改',sys-iface-state: '托管'”,这可以给问题带来一些提示?也许事实是,加密的 LVM 在关闭后仍处于某种休眠状态?这就是 CLI 在关闭和启动(例如从休眠状态恢复)时告诉您的信息。
答案1
您的集成英特尔网卡很可能支持节能以太网 (EEE):如果链接一段时间不活动,它将降至较低的速度水平,直到再次出现流量。这对于千兆位链路最为重要,但根据消息,该接口仅协商 100Mbps 链路,因此链路的另一端可能不支持千兆位速度和 EEE。
或者,如果另一端肯定具有千兆位能力,那么仅协商 100Mbps 链路的事实表明远程端可能会因 EEE 导致的 100Mbps 和千兆位模式之间的快速切换而感到困惑。从一种模式到另一种模式的意外或太慢的切换可能会导致 NetworkManager 的carrier-changed
状态。
所以你可以尝试关闭 EEE:
ethtool --set-eee enp4s0 eee off
或者它可能类似于这个错误: 这个命令说什么?
cat /sys/class/net/enp4s0/device/power/control
如果它说auto
,请尝试以下操作:
echo "on" > /sys/class/net/enp4s0/device/power/control
这告诉内核保持网络接口的 PCIe 端通电,而不是在 NIC 似乎未配置使用时可能将其断电。
最坏的情况是,新主板中的 NIC 与网络电缆另一端的任何设备之间可能存在硬件兼容性问题。我曾经有一个 8 端口 DLink 10/100Mbps 交换机,它拒绝与一些新的千兆位 NIC 配合使用。
答案2
我注意到日志中有“运营商更改”的断开连接。
我遇到了“运营商更改”错误,经常断开以太网连接,在尝试了多个论坛中的所有解决方案后,我最终将 CAT5 电缆升级为 CAT7 电缆(10 米长 - eBay 上很便宜),解决了问题。显然,旧的 CAT5 电缆无法处理我的 ISP 的升级速度(Virgin Media,英国)。新的 CAT7 电缆不仅杜绝了丢包现象,而且现在还允许速度从 100Mb/s 自动配置到 1000Mb/s。希望这可以帮助任何想要解决“运营商更改”问题的人。