Linux

網路管理器無法連接到網路(Debian 10 / Kernel 4.19)

  • June 3, 2020

我將整個桌面設置從 Windows 切換到 GNU/Linux + Debian 10。我能夠執行 debian netinstaller 並連接主機板以進行網際網路軟體更新。

但是每當我啟動並執行完整的設置時,Debian 就無法通過乙太網連接到網路。登錄界面後立即顯示網路已斷開連接。更換主機板後,我相當肯定,這是某種軟體/驅動程序問題。

我的硬體設置包括:

  • 華碩 ROG Crosshair Hero VI
  • PCI1 中的 Nvidia GTX 670
  • PCI2 中的 Nvidia GTX 970(目的是通過虛擬機)
  • 銳龍 7 2700X
  • 帶有加密 LVM 的三星 EVO SSD,沒有其他分區

這個問題類似於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 保持不變,將其更改為 hotplug 或靜態 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 downip 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 ‘carrier-changed’, sys-iface-state: ‘managed’”,可以給問題一些提示?也許這是事實,加密的 LVM 在關閉後仍處於某種休眠狀態?這就是 CLI 在關閉和啟動時告訴您的內容(例如從休眠狀態恢復)。

您的集成英特爾 NIC 很可能支持節能乙太網 (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 交換機,它拒絕與一些新的千兆網卡一起工作。

引用自:https://unix.stackexchange.com/questions/532182