Wi-Fi не работает в Linux? Вот как это исправить

Фотография окна с логотипом Wi-Fi на нем.

Одна из больших проблем, с которыми сталкиваются пользователи Linux, — это Wi-Fi. Драйвера Wi-Fi часто не включены в ядро, и в результате возникают множество проблем с работой модулей Wi-Fi, не относящихся к Intel, в Linux. Здесь мы рассматриваем, что делать, если Wi-Fi не работает в Linux, и как это исправить.

Содержание

  • Аппаратные и программные проблемы с Wi-Fi
  • Установка драйверов из образа Ubuntu ISO
  • Проблема первая: устройство не обнаружено
  • Проблема вторая: отсутствует модуль драйвера
  • Проблема третья: DNS
  • Проблема четвертая: нет менеджера сети

Совет: узнайте, как найти сохраненные пароли Wi-Fi в Linux.

Аппаратные и программные проблемы с Wi-Fi

Проблемы с подключением Wi-Fi могут быть либо аппаратными, либо программными. Аппаратные проблемы относительно легко диагностировать — все, что вам нужно сделать, это открыть терминал и ввести следующую команду:

ping localhost

Терминал с тестом обратной связи localhost.

Это простой способ проверить, работает ли ваше физическое оборудование. localhost служит адресом для проверки схемы вашего сетевого интерфейса. Если это не работает, возможно, вам потребуется провести некоторые работы с оборудованием, либо самостоятельно, либо с помощью кого-то другого.

Если ping возвращает ответ, или если вы даже не видите свою Wi-Fi карту, вероятно, у вас есть программная проблема.

Кроме того, вы также можете проверить, обнаруживает ли ваша система активный сетевой интерфейс, выполнив ip addr. Большинство дистрибутивов помечают в настоящее время активные беспроводные карты как “wl”, за которыми следуют номера шины и слота устройства на материнской плате компьютера.

Например, метка “wlp0s1” означает, что это беспроводной сетевой интерфейс на шине 0, слоте 1.

Терминал, выделяющий беспроводное устройство, текущее в системе.

Примечание: если вы не можете просматривать веб, возможно, вам нужно отключить IPv6 на вашем компьютере с Linux.

Установка драйверов из образа Ubuntu ISO

Если ваш дистрибутив совсем не обнаруживает вашу Wi-Fi сеть или вы получаете ошибки, вы можете попробовать установить или переустановить драйверы Wi-Fi из файла образа Ubuntu ISO. Сначала вам нужно загрузить образ Ubuntu ISO, соответствующий вашей версии Ubuntu. (Предположительно, вам нужно загрузить его на другое устройство или загрузить его с помощью Ethernet-соединения на Ubuntu.)

Откройте терминал, затем введите следующую последовательность команд, чтобы смонтировать образ Ubuntu ISO на виртуальный диск:

sudo mkdir /media/cdrom  
sudo mount -o loop ~/Downloads/ubuntu-*.iso /media/cdrom

Перейдите в “Обновление программного обеспечения” из панели управления, затем нажмите кнопку Настройки в нижнем левом углу окна.

Скриншот, подчеркивающий кнопку

Нажмите на вкладку Дополнительные драйверы, затем выберите опцию Беспроводной сетевой адаптер и нажмите Применить изменения.

Проблема первая: устройство не обнаружено

Если беспроводное устройство не обнаруживается Ubuntu (или любым дистрибутивом), откройте сессию терминала и введите следующую команду:

sudo lsusb

Эта команда выведет все USB-устройства, которые в настоящее время подключены к вашему компьютеру. Найдите любую строку, содержащую либо “Беспроводной адаптер”, либо “RTL”.

sudo lsusb | grep "RTL"

Терминал с активным USB Wi-Fi устройством в Linux.

Помимо перечисления всех USB-адаптеров, вы также можете проверить свою систему на наличие любых беспроводных PCI устройств. Для этого выполните следующую команду:

sudo lspci

Так же, как и в команде lsusb, ищите любые строки в выводе lspci, содержащие метку “Контроллер сети” или “Контроллер Ethernet”.

Терминал, выделяющий PCI-устройство Wi-Fi в Ubuntu Linux.

Чтобы найти точный модуль драйвера, который в настоящее время использует ваше беспроводное устройство, выполните следующую команду:

sudo lshw -C network | grep "driver"

Выделите значение переменной “driver” и скопируйте его в буфер обмена.

Терминал, выделяющий активный драйвер для устройства Wi-Fi.

Проблема вторая: отсутствует модуль драйвера

Исходя из успешных команд lsusb и lspci, подтверждающих, что ваш дистрибутив Linux может видеть беспроводную карту, вы можете предположить, что прошивка работает, просто система не знает, что делать с устройством. Здесь требуются драйвера или модули.

Введите следующую команду, затем замените “modulename” содержимым буфера обмена:

sudo modprobe modulename

Например, если ваш беспроводной драйвер называется “iwlwifi”, это будет выглядеть следующим образом:

sudo modprobe iwlwifi

После этого выполните sudo lsmod | grep "modulename", чтобы увидеть, правильно ли загрузило ядро Linux ваше Wi-Fi устройство.

Терминал, показывающий загрузку модуля Wi-Fi в текущее ядро.

Автоматическая загрузка модуля драйвера при загрузке

Это редкий случай, но иногда модуль не сохраняется при загрузке. В этом случае вы можете заставить его загружаться постоянно. Введите команду ниже в терминал:

sudo nano /etc/modules

Добавьте имя вашего модуля в нижней части и сохраните файл.

Терминал, показывающий конфигурационный файл, который может загружать модули ядра при загрузке.

Перезагрузите компьютер, чтобы проверить, правильно ли ядро Linux загрузило беспроводное устройство.

Полезно знать: узнайте, как ваш компьютер управляет своим оборудованием, установив собственное ядро Linux в Ubuntu уже сегодня.

Проблема третья: DNS

Редко возникают проблемы с DNS; тем не менее, стоит проверить, если у вас по-прежнему есть проблемы с подключением. В терминале введите следующую команду, чтобы проверить стандартный DNS-резолвер системы:

nmcli device show INTERFACE-NAME | grep IP4.DNS

По умолчанию это будет установлено на IP-адрес вашего маршрутизатора. Если это не работает, вам может понадобиться заменить “wlp0s1” на то, что использует ваше беспроводное устройство. Для получения обозначения можно также использовать следующую команду:

ip addr | grep ": "

Как только у вас есть эта информация, выполните ping на адрес вашего DNS-резолвера. Если это работает, вы также можете выполнить ping на внешний сетевой адрес, такой как DNS-резолверы Google:

ping 8.8.8.8

Если все устройства в вашей сети выдают ошибки загрузки страниц, замените DNS-резолверы на IP-адреса серверов Google или OpenNIC. Вам нужно будет обратиться к производителю вашего маршрутизатора, чтобы узнать, как это сделать, но обычно это сделано путем доступа к административной консоли устройства. Вы можете найти это на большинстве маршрутизаторов, перейдя в браузере на “192.168.0.1” или “192.168.254.254”.

Добавление пользовательского DNS-сервера в NetworkManager

Тем не менее, вы также можете изменить DNS-резолвер на уровне каждого устройства. Чтобы сделать это в Ubuntu, нажмите на Кнопку управления в верхнем правом углу рабочего стола, затем выберите Иконку шестеренки.

Скриншот, подчеркивающий кнопку Настройки в Gnome.

Нажмите на категорию Wi-Fi, затем найдите категорию Видимые сети.

Скриншот, подчеркивающий раздел видимых сетей в категории Wi-Fi.

Выберите Иконку шестеренки на строке, содержащей имя вашей беспроводной точки доступа.

Нажмите на вкладку IPv4 в верхней части маленького окна.

Скриншот, подчеркивающий вкладку IPv4 в меню настроек точки доступа.

Перейдите в раздел DNS, затем переключите переключатель Автоматически в выключенное положение.

Скриншот, подчеркивающий переключатель DNS

Введите “8.8.8.8,8.8.4.4” в текстовое поле DNS, затем нажмите Применить, чтобы подтвердить настройки.

Скриншот, подчеркивающий пользовательские резолверы DNS для текущего Wi-Fi соединения.

Откройте новый терминал, затем выполните следующую команду, чтобы удалить любые предыдущие данные резолвера DNS:

resolvectl flush-caches

Проверьте, использует ли ваша система теперь новые настройки резолвера DNS, выполнив следующее:

resolvectl status | grep "Current DNS Server"

Проверьте, разрешили ли текущие настройки DNS вашу сетевую проблему, загрузив веб-страницу в веб-браузере.

Скриншот сайта MakeTechEasier на машине Ubuntu с пользовательским DNS резолвером.

Полезно знать: узнайте больше о DNS-серверах и резолдерах DNS, используя dig в Linux.

Проблема четвертая: нет менеджера сети

Предположим, вы случайно удалили менеджер сети или деинсталлировали его. Это действительно проблемная ситуация: у вас нет Интернета и нет менеджера сети, но есть вещи, которые вы можете сделать.

Предполагая, что пакет все еще находится в вашем кэше, вы можете открыть терминал и ввести:

# Debian/Ubuntu  
sudo apt install network-manager  
  
# Fedora  
sudo dnf install NetworkManager  
  
# Arch Linux  
sudo pacman -Syu networkmanager

Если это не работает, вы можете заставить вашу систему подключиться к беспроводной точке доступа, используя wpa_supplicant. Это инструмент командной строки, который использует драйвер вашего беспроводного устройства для подключения к точке доступа без использования менеджера сети.

Чтобы начать, создайте конфигурационный файл для wpa_supplicant, используя ваш любимый текстовый редактор:

sudo nano /etc/wpa_supplicant.conf

Вставьте следующий блок кода внутрь конфигурационного файла, затем замените “SSID” и “PASSWORD” на имя точки доступа и пароль вашего маршрутизатора:

network={  
ssid="SSID"  
password="PASSWORD"  
}

Сохраните конфигурационный файл, затем вставьте следующую строку кода в сессию терминала:

sudo wpa_supplicant -B -i INTERFACE-NAME -c /etc/wpa_supplicant.conf -D nl80211

Замените значение флага “-i” на имя вашего беспроводного интерфейса.

Примечание: эта команда будет работать только на новых беспроводных картах. Если вы пытаетесь подключить более старую Wi-Fi карту, замените значение флага “-D” на “wext.”

Запросите новый IP-адрес от вашего маршрутизатора, перезагрузив демона DHCP:

sudo dhclient INTERFACE-NAME

Проверьте, работает ли ваше Wi-Fi соединение, пингируя внешний сайт:

ping -c 5 maketecheasier.com

Переустановите менеджер сети, чтобы восстановить полные Wi-Fi возможности вашей системы Linux:

sudo apt install network-manager

Перезагрузите машину, чтобы загрузить новую установленную версию менеджера сети.

Понимание того, как работают модули Wi-Fi и драйвера ядра, — это только первый шаг к пониманию работы Linux. Исследуйте техническую сторону этой операционной системы, создав скрытую файловую систему с помощью Shufflecake.