Вопрос или проблема
Пожалуйста, обратите внимание, что я полный новичок в использовании Ubuntu
Я недавно установил Ubuntu 22.04.2 LTS на свой настольный компьютер с Windows в конфигурации двойной загрузки.
Описание проблемы
После установки Ubuntu все казалось в рабочем состоянии, кроме моего соединения через Ethernet. Вот что мне в данный момент отображается в разделе настроек “Сеть” в графическом интерфейсе:
Другими словами, мой кабель, по-видимому, “неподключен”. Однако, когда я смотрю внутри ifconfig
, Ethernet-устройство enp1s0
, кажется, распознается:
johnny@johnnyb1694-Ubuntu:~$ sudo ifconfig
enp1s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 68:1d:ef:33:00:6f txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 82 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1956 bytes 165100 (165.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1956 bytes 165100 (165.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.178.33 netmask 255.255.255.0 broadcast 192.168.178.255
inet6 2a02:8011:ee20:0:2d7f:835f:2f06:564e prefixlen 64 scopeid 0x0<global>
inet6 fe80::c4f8:ab8f:6cd8:926c prefixlen 64 scopeid 0x20<link>
inet6 2a02:8011:ee20:0:bad5:c122:b248:29f9 prefixlen 64 scopeid 0x0<global>
ether 78:8a:86:26:b7:e4 txqueuelen 1000 (Ethernet)
RX packets 9329 bytes 7275533 (7.2 MB)
RX errors 0 dropped 815 overruns 0 frame 0
TX packets 6100 bytes 1222425 (1.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Еще одно интересное наблюдение: когда я запускаю dmesg
, то то же устройство enp1s0
, похоже, переименовывается из eth0
при запуске, а затем временно отключается:
johnny@johnnyb1694-Ubuntu:~$ sudo dmesg | grep enp1s0
[ 1.453852] r8169 0000:01:00.0 enp1s0: renamed from eth0
[ 6.602587] r8169 0000:01:00.0 enp1s0: rtl_ocp_gphy_cond == 1 (loop: 10, delay: 25).
[ 6.603179] r8169 0000:01:00.0 enp1s0: rtl_ocp_gphy_cond == 1 (loop: 10, delay: 25).
[ 6.603791] r8169 0000:01:00.0 enp1s0: rtl_ocp_gphy_cond == 1 (loop: 10, delay: 25).
[ 6.603802] r8169 0000:01:00.0 enp1s0: Link is Down
[ 6.617385] r8169 0000:01:00.0 enp1s0: rtl_counters_cond == 1 (loop: 1000, delay: 10).
Что я пробовал
Одно решение, которое я нашел в похожем ответе, заключалось в выполнении следующей команды из терминала:
sudo ethtool -s enp1s0 speed 100 duplex full autoneg off
После выполнения этой команды ситуация, кажется, временно улучшается. Например, просмотр журнала dmesg
снова показывает изменение статуса:
johnny@johnnyb1694-Ubuntu:~$ sudo dmesg | grep enp1s0
[ 1.453852] r8169 0000:01:00.0 enp1s0: renamed from eth0
[ 6.602587] r8169 0000:01:00.0 enp1s0: rtl_ocp_gphy_cond == 1 (loop: 10, delay: 25).
[ 6.603179] r8169 0000:01:00.0 enp1s0: rtl_ocp_gphy_cond == 1 (loop: 10, delay: 25).
[ 6.603791] r8169 0000:01:00.0 enp1s0: rtl_ocp_gphy_cond == 1 (loop: 10, delay: 25).
[ 6.603802] r8169 0000:01:00.0 enp1s0: Link is Down
[ 6.617385] r8169 0000:01:00.0 enp1s0: rtl_counters_cond == 1 (loop: 1000, delay: 10).
[ 2132.644712] r8169 0000:01:00.0 enp1s0: Link is Up - 100Mbps/Full - flow control off
[ 2132.644736] IPv6: ADDRCONF(NETDEV_CHANGE): enp1s0: link becomes ready
[ 2137.957219] NETDEV WATCHDOG: enp1s0 (r8169): transmit queue 0 timed out
[ 2137.971670] r8169 0000:01:00.0 enp1s0: rtl_rxtx_empty_cond == 0 (loop: 42, delay: 100).
И вид в графическом интерфейсе тоже обновляется:
Однако это изменение статуса, кажется, кратковременно (т.е. оно снова быстро теряется), и, что более важно, установленное соединение очень плохое (например, запрос к https://www.google.com/
кажется зависает почти бесконечно).
Я почти уверен, что это проблема, специфическая для моего настроенного Ubuntu, так как когда я загружаюсь в Windows и получаю доступ к интернету через проводное Ethernet-соединение, все работает отлично.
Может кто-нибудь помочь мне исправить эту проблему с небольшой поддержкой? Я готов предоставить дополнительную информацию, если это будет полезно.
Спасибо.
Джонни, что касается вашего комментария, если ваш Ethernet-адаптер не получил IP-адрес, это ненормально.
Вероятно, это означает, что есть проблема с конфигурацией DHCP или драйвера адаптера (или с вашим Ethernet-кабелем, его разъемами или Ethernet-портами на обоих концах, хотя вы упомянули, что они работают нормально в Windows).
Попробуйте следующее: когда работает Ubuntu, стойте возле коммутатора/маршрутизатора Ethernet и попросите кого-нибудь подключить другой конец вашего кабеля к компьютеру и посмотрите, загорятся ли ожидаемые индикаторы для этого порта на вашем маршрутизаторе/коммутаторе.
Если они загораются, это означает, что драйвер адаптера и физическая подключаемость в порядке, и вы можете начать искать проблемы конфигурации с DHCP.
В качестве альтернативы вы можете попробовать статически настроить IP-адрес для этого адаптера.
Для отладки DHCP вы можете запустить инструмент, например, Wireshark, на другом компьютере в вашей локальной сети. Wireshark позволит вам просмотреть поток пакетов запроса и ответа DHCP между проблемным ПК и вашим маршрутизатором.
Если вы попробуете это и не увидите никакого трафика DHCP, это указывает на проблему с клиентским программным обеспечением DHCP на системе Ubuntu.
Еще один тест, который вы можете попробовать, заключается в загрузке вашего live-диска/USB Ubuntu 22.04.2 на проблемном компьютере и проверке, получит ли система live IP-адрес на этом Ethernet-адаптере.
Если система live получает IP-адрес, вы будете знать, что физические подключения и драйвер в порядке (и также можно предположить, что в установленной системе, вероятно, нет проблем с драйвером).
Но если система live работает, вероятно, есть проблема с тем, как вы настроили порт Ethernet в установленной системе.
Убедитесь, что DHCP включен в активном профиле Ethernet (или создайте новый профиль для теста) и убедитесь, что вы случайно не настроили статический адрес для адаптера в неправильной подсети и т.д.
.
Ответ или решение
Теория
Ошибка отсутствия подключения по Ethernet на Ubuntu 22.04.2 LTS может возникать по нескольким причинам. Она может быть связана с аппаратными проблемами, такими как неисправный сетевой кабель или порт, неправильной настройкой сетевого адаптера, а также с программными ошибками, например, неправильно установленными или устаревшими драйверами. Важным аспектом диагностики является также проверка работоспособности DHCP или других параметров сети, которые ответственны за автоматическое получение IP-адреса.
Пример
В представленной ситуации, проблема заключается в том, что в Ubuntu адаптер Ethernet отображается как ‘не подключённый’. Однако, утилита ifconfig показывает, что адаптер enp1s0 распознается системой, но не получает пакеты, что может указывать на неправильную конфигурацию сети или аппаратные проблемы. Запуск dmesg сообщает, что адаптер переименовывается из eth0 в enp1s0, и есть сообщения о проблемах с GPHY и счётчиками, что может быть связано с драйвером r8169.
Применение
-
Проверка аппаратных подключений:
Убедитесь, что кабель Ethernet исправен и правильно подключен как к компьютеру, так и к маршрутизатору/коммутатору. Попробуйте заменить кабель или использовать другой порт маршрутизатора. Проверьте, светятся ли индикаторы на сетевых портах. -
Диагностика драйверов:
Проверьте, установлен ли соответствующий драйвер для адаптера. Для Realtek адаптеров, часто используется драйвер r8169, который в редких случаях может быть несовместим с некоторыми модификациями оборудования. Можно попробовать установить драйвер r8168, который зачастую решает проблемы с сетевым подключением:sudo apt update sudo apt install r8168-dkms sudo modprobe -r r8169 sudo modprobe r8168
-
Проверка DHCP:
Проверьте, корректно ли работает DHCP. Для этого можно в редакторе настроек сети убедиться, что адаптер настроен на получение IP-адреса автоматически через DHCP. Можно использовать Wireshark на другом ПК в той же сети, чтобы проверить получение и отправку DHCP-запросов. Если запросы отсутствуют, значит проблема может быть в клиенте DHCP Ubuntu. -
Статическая настройка параметров сети:
Попробуйте временно вручную задать IP-адрес, шлюз и DNS-серверы. Откройте настройки сети с помощьюip
-утилиты:sudo ip addr add 192.168.1.10/24 dev enp1s0 sudo ip route add default via 192.168.1.1
Замените значения на те, которые соответствуют вашей сети.
-
Проверка Live-среды Ubuntu:
Загрузитесь с Live-дистрибутива Ubuntu с помощью USB или DVD, чтобы проверить работу сети в этом режиме. Это поможет исключить аппаратные проблемы и укажет на конфигурационные ошибки в установленной системе. -
Обновление системы и компонентов:
Обратите внимание, что устаревшее программное обеспечение может приводить к проблемам с совместимостью оборудования. Соблюдайте актуальность обновлений:sudo apt update sudo apt upgrade sudo apt dist-upgrade
Если ни один из предложенных шагов не решает проблему, возможно, потребуется более глубокая диагностика, которая может включать логирование сетевого трафика или даже переустановку системы. Однако, приведенные шаги должны охватывать большинство типичных причин, по которым возникает проблема с Ethernet-соединением в Ubuntu 22.04.2 LTS.