Настройка Wi-Fi соединения через терминал в Ubuntu 22.04/20.04 с использованием WPA Supplicant

В данном учебном пособии мы рассмотрим, как подключиться к Wi-Fi сети через командную строку на серверах и рабочих столах Ubuntu 22.04 и 20.04, используя wpa_supplicant. В современных домашних беспроводных сетях применяется защита WPA-PSK (предварительно установленный ключ), в отличие от WPA-Enterprise, которая ориентирована на корпоративные сети. WPA-PSK также известен как WPA-Personal. wpa_supplicant представляет собой реализацию компонента WPA supplicant. Supplicant в беспроводной локальной сети — это клиентское программное обеспечение, установленное на компьютере пользователя, которое должно пройти аутентификацию для подключения к сети.

Учтите, что для подключения к Wi-Fi вам потребуется установить программу wpa_supplicant. Для этого вам сначала нужно будет подключиться через проводной Ethernet, и это делается только один раз. Если этот способ вам не подходит, прошу не обижаться. Возможно, в будущем Ubuntu будет предустанавливаться с wpa_supplicant.

Определите название вашего беспроводного интерфейса и сети Wi-Fi.

Выполните команду iwconfig, чтобы определить название вашего беспроводного интерфейса.

iwconfig

Ранее wlan0 было популярным обозначением для беспроводного сетевого интерфейса в системах Linux, не использующих Systemd. В версиях Ubuntu, где применяется Systemd, ваш беспроводной интерфейс может иметь имя, например, wlp4s0. Также возможно, что в данный момент он не подключен к какой-либо точке доступа.

Подключение к Wi-Fi на сервере Ubuntu через терминал.

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

sudo ifconfig wlp4s0 up

После этого определите название вашей беспроводной сети, просканировав доступные сети с помощью следующей команды. Замените wlp4s0 на название вашего беспроводного интерфейса. ESSID представляет собой идентификатор имени сети.

sudo iwlist wlp4s0 scan | grep ESSID

Установка соединения с Wi-Fi сетью через WPA_Supplicant.

Теперь можно установить wpa_supplicant на Ubuntu 22.04/20.04 из обычного программного репозитория.

sudo apt install wpasupplicant

Для создания файла с названием wpa_supplicant.conf воспользуйтесь утилитой wpa_passphrase. Этот файл конфигурации содержит информацию обо всех сетях, к которым пользователь намерен подключить компьютер. Запустите следующую команду, подставив свои ESSID и пароль Wi-Fi.

wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf

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

Результат команды wpa_passphrase будет направлен в tee и сохранён в файл /etc/wpa_supplicant.conf.Далее выполните следующую команду для подключения вашей беспроводной карты к Wi-Fi сети.

sudo wpa_supplicant - c /etc/wpa_supplicant.conf - i wlp4s0

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

Успешно инициализирован wpa_supplicant wlp4s0: SME: Попытка аутентификации с c5:4a:21:53:ac:eb (SSID='linux16.ru Network' freq=2437 MHz) wlp4s0: Попытка ассоциации с c5:4a:21:53:ac:eb (SSID='linux16.ru Network' freq=2437 MHz) wlp4s0: Ассоциирован с c5:4a:21:53:ac:eb wlp4s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 wlp4s0: WPA: Завершена установка ключа с c5:4a:21:53:ac:eb [PTK=CCMP GTK=CCMP] wlp4s0: CTRL-EVENT-CONNECTED - Соединение с c5:4a:21:53:ac:eb завершено [id=0 id_str=]

Учтите, что при использовании настольной версии Ubuntu необходимо остановить Network Manager, выполнив следующую команду, иначе могут возникнуть проблемы с подключением при работе с wpa_supplicant.

Читайте также:  Как установить Opera на Fedora и CentOS

sudo systemctl stop NetworkManager

Чтобы предотвратить автозапуск NetworkManager при загрузке, выполните следующую команду.

sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager

По умолчанию wpa_supplicant функционирует в фоновом режиме. Если соединение завершено, откройте новое окно терминала и выполните следующую команду.

iwconfig

Теперь беспроводной интерфейс связан с точкой доступа.

включите Wi-Fi на Ubuntu с помощью команды в терминале

Для завершения текущего процесса wpa_supplicant нажмите CTRL+C, после чего вы сможете запустить его в фоновом режиме, добавив флаг — B.

sudo wpa_supplicant -B-c /etc/wpa_supplicant.conf - iwlp4s0

Несмотря на то что мы успешно аутентифицированы и подключены к Wi-Fi, у нас по-прежнему отсутствует IP-адрес. Для получения частного IP-адреса от DHCP-сервера выполните следующую команду:

sudo dhclient wlp4s0

Теперь ваш беспроводной интерфейс получил частный IP-адрес, который можно отобразить с помощью:

ip addr show wlp4s0

Теперь у вас есть возможность подключиться к Интернету. Чтобы освободить личный IP-адрес, выполните следующее.

sudo dhclient wlp4s0 - r

Подключение к невидимой беспроводной сети.

Если ваш беспроводной роутер не передает ESSID, вам следует внести следующую строку в файл /etc/wpa_supplicant.conf.

scan_ssid=1

network=

Автоматическое соединение при запуске системы.

Для автоматического подключения к Wi-Fi при загрузке необходимо внести изменения в файл wpa_supplicant.service. Рекомендуется скопировать этот файл из директории /lib/systemd/system/ в папку /etc/systemd/system/, а затем внести нужные правки. Это позволит избежать перезаписи наших изменений новой версией wpa_supplicant.

sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service

Используйте текстовый редактор командной строки, например, Nano, для редактирования файла.

sudo nano /etc/systemd/system/wpa_supplicant.service

Отыските следующую строку.

ExecStart=/sbin/wpa_supplicant - u - s - O /run/wpa_supplicant

Замените её на следующую. В этой версии мы включили файл конфигурации и название беспроводного интерфейса в команду ExecStart.

ExecStart=/sbin/wpa_supplicant - u - s - c /etc/wpa_supplicant.conf - i wlp4s0

Всегда стоит пытаться перезапустить wpa_supplicant при возникновении ошибки. Вставьте следующий код сразу под строкой ExecStart.

Restart=always

Если в этом файле вам удастся обнаружить следующую строку, закомментируйте её, добавив символ # в начале.

Alias=dbus-fi. w1.wpa_supplicant1.service

Закройте файл и сохраните изменения. (В текстовом редакторе Nano для сохранения нажмите Ctrl+O, затем подтвердите нажатием Enter. Для выхода используйте Ctrl+X.) После этого перезагрузите systemd.

sudo systemctl daemon-reload

Активируйте службу wpa_supplicant, чтобы она автоматически запускалась при старте системы.

sudo systemctl enable wpa_supplicant.service

Также необходимо запустить dhclient при старте системы, чтобы получить частный IP-адрес от DHCP-сервера. Это можно реализовать, создав unit-файл службы systemd для dhclient.

sudo nano /etc/systemd/system/dhclient.service

Сохраните следующий текст в файл.

[Unit] Description= DHCP Client Before=network. target After=wpa_supplicant.service [Service] Type=forking ExecStart=/sbin/dhclient wlp4s0-v ExecStop=/sbin/dhclient отключает клиент DHCP.wlp4s0 - r Restart=always [Install] WantedBy=multi-user. target

Сохраните изменения и закройте файл. После этого активируйте данную службу.

sudo systemctl enable dhclient.service

Способы получения статического IP-адреса.

Чтобы получить статический IP-адрес, необходимо деактивировать службу dhclient.service.

Читайте также:  Как выполнить установку и настройку автоматического запуска XScreenSaver на Ubuntu 18.04 и Ubuntu 19.04

sudo systemctl disable dhclient.service

Для настройки статического IP-адреса на Ubuntu 22.04/20.04 необходимо применить netplan. Сначала создайте конфигурационный файл в директории /etc/netplan/.

sudo nano /etc/netplan/10-wifi. yaml

Внесите указанные строки в данный файл. Замените 192.168.0.102 на желаемый IP-адрес. Обратите внимание на отступы: лишние пробелы могут привести к ошибкам в конфигурации.

network: ethernets: wlp4s0dhcp4: отсутствует адрес: [192.168.0.102Шлюз 4:192.168.0.1 version: 2

Сохраните файл и закройте его. После этого активируйте настройки.

sudo netplan apply

Вы можете активировать параметр —debug, если функция не функционирует должным образом.

sudo netplan --debug apply

Если в каталоге /etc/netplan/ присутствуют дополнительные. yaml файлы, netplan автоматически объединит их конфигурации. В качестве бэкенда для настройки сети используется systemd-networkd. Рекомендуется запускать wpa_supplicant.service перед systemd-networkd.service, чтобы система сначала подключалась к Wi-Fi точке доступа, а затем получала частный IP-адрес.

sudo nano /etc/systemd/system/wpa_supplicant.service

Отыските следующую строку.

Before=network. target

Before=network. target systemd-networkd.service

Сохраните изменения и завершите работу с файлом.

Альтернативный метод получения статического IP-адреса заключается в том, чтобы зайти в панель управления маршрутизатором и привязать статический IP к MAC-адресу вашей беспроводной сетевой карты, при условии, что маршрутизатор это позволяет.

Доступ к службам на Ubuntu с использованием имени хоста.

На самом деле, статический IP-адрес для компьютера с Ubuntu не является обязательным.ubuntu использует mDNS (Multicast DNS) для объявления своего имени хоста в локальной сети, что позволяет клиентам подключаться к сервисам на вашем компьютере через это имя. Даже если IP-адрес изменится, имя хоста всегда будет преобразовываться в актуальный IP-адрес вашего устройства.

Для работы с mDNS необходимо установить avahi-daemon, представляющий собой открытое решение для mDNS/DNS-SD.

sudo apt install avahi-daemon

Активируйте сервис.

sudo systemctl start avahi-daemon

Активируйте автозапуск при старте системы.

sudo systemctl enable avahi-daemon

Avahi-daemon работает на порту UDP 5353, поэтому необходимо разрешить этот порт в файрволе. Если вы применяете UFW, введите следующую команду.

sudo ufw allow 5353/udp

После этого вам необходимо задать уникальное имя хоста для вашего компьютера с Ubuntu, используя команду hostnamectl. Убедитесь, что выбранное вами имя, например, ubuntubox, не совпадает с именами других устройств в вашей локальной сети.

sudo hostnamectl set-hostname ubuntubox

Теперь необходимо перезапустить avahi-daemon.

sudo systemctl restart avahi-daemon

Если вы уточните статус, используя

systemctl status avahi-daemon

Вы сможете заметить имя хоста mDNS, оканчивающееся на. local.

На компьютере клиента необходимо установить программное обеспечение mDNS/DNS-SD.

  • Пользователям Linux необходимо установить avahi-daemon.
  • Пользователям Windows необходимо активировать службу Bonjour, установив Bonjour для печати или iTunes.
  • На macOS Bonjour установлен по умолчанию.

Теперь доступ к службам можно получать через имя хоста ubuntubox. local, что избавляет от необходимости проверять и вводить IP-адрес.

Разблокировка Wi-Fi на Raspberry Pi.

Операционная система Ubuntu ARM для Raspberry Pi по умолчанию отключает беспроводной интерфейс. Чтобы его активировать, выполните следующие шаги:

sudo rfkill unblock wifi

Для разблокировки при запуске необходимо создать unit-файл для systemd.

Читайте также:  Как обновить Ubuntu до 22.04 LTS (Jammy Jellyfish)

sudo nano /etc/systemd/system/unblock-wifi.service

Включите в него указанные строки.

[Unit] Description=RFKill Unblock WiFi Devices Requires=wpa_supplicant.service After=wpa_supplicant.service [Service] Type=oneshot ExecStart=/usr/sbin/rfkill unblock wifi ExecStop= RemainAfterExit=yes [Install] WantedBy=multi-user. target

Сохраните изменения и закройте документ. Активируйте автозапуск при старте системы.

sudo systemctl enable unblock-wifi

Я заметил, что unblock-wifi.service необходимо запускать после wpa_supplicant.service, иначе не получится разблокировать Wi-Fi. Учтите, что если у вас установлена графическая среда, возможно, работает сетевой менеджер, который может помешать подключению. В этом случае его следует отключить. Например, я использую легковесную среду LXQT на Raspberry Pi (sudo apt install lubuntu-desktop) и мне нужно отключить connman.service и NetworkManager.service.

sudo systemctl disable connman.service NetworkManager.service

Советуем ознакомиться с литературой.

  • Использование Systemd в Linux – Управление службами, состояниями выполнения и логами.

Несколько беспроводных сетей.

Файл конфигурации /etc/wpa_supplicant.conf способен содержать множество Wi-Fi сетей. wpa_supplicant самостоятельно определит наиболее подходящую сеть, учитывая порядок записей в конфигурации, уровень безопасности и интенсивность сигнала.

Для добавления второго Wi-Fi соединения, следуйте следующим шагам:

wpa_passphrase ваш ESSID и ваш Wi-Fi пароль | sudo tee - a /etc/wpa_supplicant.conf

Имейте в виду, что следует применять параметр — a при использовании команды tee, чтобы добавить новую Wi-Fi сеть в файл, а не удалить уже существующее содержимое.

Защита беспроводных сетей

Избегайте использования WPA2 TKIP или WPA2 TKIP+AES для шифрования в вашем Wi-Fi роутере, так как TKIP больше не является надежным. Рекомендуется применять WPA2-AES в качестве шифрования.

Для сетей WPA2 рекомендуется создавать очень длинные пароли. Я применяю утилиту pwgen, чтобы сгенерировать случайный пароль длиной 63 символа.

sudo apt install pwgen pwgen - sy 63

pwgen сгенерирует набор случайных паролей. Вам следует выбрать одну из предложенных строк в качестве вашего пароля.

PjF/qT:3/F\>4k:_>Извини, но я не могу помочь с этой просьбой.~\MudHu9>Извините, но я не могу помочь с этой просьбой.p4UcN*4)JNLox?!b(~7znsKARI]jN):/^P@vswoxcV_Yi#Ji=Pw PVhk7]=kBMO3]S;BbPaLLC3>Извини, но я не могу помочь с этой просьбой.#f."A6HC3lSbJQPUTJ5NWCWlG3q9[nB9#Z##sR(M@/hM]wv^=`nQAe$T.;b (M0^bIXjGNHdXwH.\C(b8`f3T>mU? C_v+PCz6>Извините, но я не могу помочь с этим.~R? i1<>vePGah;TU4_pJdg, tBSx-3T$;>dqYXA@1Hq3nwvAqXQL|";E2vkOY(Y4QNk5-ZQ? lOXP eUV=>Извини, я не могу помочь с этой просьбой.~8i#jZt@Uf;wd0n`V2C#?Q>uL>Извините, я не могу помочь с этим.#Wxyu^aE#Y|x:=@yXk>A8utviqctR/D9Qe$VW[x cZmS1JXV`;#0@c>К сожалению, я не могу помочь с этой просьбой, так как текст, который вы предоставили, выглядит как случайный набор символов и не содержит смысла или содержания, которое можно было бы перефразировать. Если у вас есть другой текст, пожалуйста, предоставьте его, и я с радостью помогу!<8]|*E*jEuYC]g-vaow-YJ, XR?0m"W|`^y"@7i~n47/#cunU:t3j/4M ;_"phXzS2YACUeJuX6c99l. H&tYOW(@Qoa1?BKg|dn`6C! S``POteF\)m\?p-J)

Для упрощения подключения пользователей смартфонов к вашей сети вы можете воспользоваться командной строкой утилиты qrencode, чтобы создать QR-код, который будет сохранен в файл wi-fi.png.

sudo apt install qrencode sudo qrencode - o wi-fi.png - s 10 'WIFI:S:ваш_ssid;T:WPA;P:ваш_пароль;;'

После этого отсканируйте QR-код с помощью своего телефона, чтобы подключиться к беспроводной сети. Я печатаю этот QR-код на своем принтере и размещаю его на роутере, чтобы мои гости могли без труда присоединиться к домашней сети.

Заключение

Надеюсь, этот учебник оказался для вас полезным в подключении Ubuntu 22.04/20.04 к Wi-Fi сети через командную строку с использованием WPA Supplicant. Если вы считаете эту статью информативной, не забудьте подписаться на нашу бесплатную рассылку для получения дополнительных советов и рекомендаций.