Подключитесь к 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. Соискателем в беспроводной локальной сети является клиентское программное обеспечение, установленное на компьютере конечного пользователя, которое необходимо пройти аутентификацию для подключения к сети.
Обратите внимание, что перед подключением к Wi-Fi вам необходимо будет установить программное обеспечение wpa_supplicant
, поэтому сначала вам необходимо подключиться к проводному Ethernet, что делается только один раз. Если вам не нравится этот метод, пожалуйста, не сердитесь на меня. Возможно, когда-нибудь Ubuntu выпустит wpa_supplicant
при чистой установке.
Шаг 1. Найдите имя вашего беспроводного интерфейса и беспроводной сети.
Запустите команду iwconfig
, чтобы найти имя вашего беспроводного интерфейса.
iwconfig
wlan0
раньше было общим именем беспроводного сетевого интерфейса в системах Linux без Systemd. Поскольку Ubuntu использует Systemd, вы обнаружите, что ваш интерфейс беспроводной сети называется примерно так: wlp4s0
. Вы также можете видеть, что сейчас он не связан ни с одной точкой доступа.
Если ваш беспроводной интерфейс не отображается, возможно, вам нужно вызвать его с помощью следующей команды.
sudo ifconfig wlp4s0 up
Затем найдите имя своей беспроводной сети, просканировав близлежащие сети с помощью приведенной ниже команды. Замените wlp4s0
собственным именем беспроводного интерфейса. ESSID — идентификатор имени сети.
sudo iwlist wlp4s0 scan | grep ESSID
Шаг 2. Подключитесь к сети Wi-Fi с помощью WPA_Supplicant.
Теперь установите wpa_supplicant
в Ubuntu 22.04/20.04 из репозитория программного обеспечения по умолчанию.
sudo apt install wpasupplicant
Нам нужно создать файл с именем wpa_supplicant.conf
с помощью утилиты wpa_passphrase
. wpa_supplicant.conf
— это файл конфигурации, описывающий все сети, к которым пользователь хочет подключить компьютер. Запустите следующую команду, чтобы создать этот файл. Замените ESSID и парольную фразу Wi-Fi на свои собственные.
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf
Обратите внимание, что на приведенном выше снимке экрана я заключил свой ESSID в двойные кавычки, поскольку мой ESSID содержит пробелы.
Вывод команды wpa_passphrase
будет передан в tee
, а затем записан в файл /etc/wpa_supplicant.conf
. Теперь используйте следующую команду для подключения беспроводной карты к точке беспроводного доступа.
sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0
Следующий вывод показывает, что ваша беспроводная карта успешно подключена к точке доступа.
Successfully initialized wpa_supplicant
wlp4s0: SME: Trying to authenticate with c5:4a:21:53:ac:eb (SSID='.Com Network' freq=2437 MHz)
wlp4s0: Trying to associate with c5:4a:21:53:ac:eb (SSID='.Com Network' freq=2437 MHz)
wlp4s0: Associated with c5:4a:21:53:ac:eb
wlp4s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
wlp4s0: WPA: Key negotiation completed with c5:4a:21:53:ac:eb [PTK=CCMP GTK=CCMP]
wlp4s0: CTRL-EVENT-CONNECTED - Connection to c5:4a:21:53:ac:eb completed [id=0 id_str=]
Обратите внимание: если вы используете настольную версию Ubuntu, вам необходимо остановить Network Manager с помощью следующей команды, иначе это вызовет проблемы с подключением при использовании wpa_supplicant.
sudo systemctl stop NetworkManager
И отключите автозапуск NetworkManager во время загрузки, выполнив следующую команду.
sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager
По умолчанию wpa_supplicant работает на переднем плане. Если соединение установлено, откройте другое окно терминала и запустите
iwconfig
Вы можете видеть, что беспроводной интерфейс теперь связан с точкой доступа.
Вы можете нажать CTRL+C
, чтобы остановить текущий процесс wpa_supplicant и запустить его в фоновом режиме, добавив флаг -B
.
sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0
Хотя мы прошли аутентификацию и подключены к беспроводной сети, у нас пока нет 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={
ssid=".Com Network"
#psk="12345qwert"
psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195
scan_ssid=1
}
Шаг 3. Автоматическое подключение во время загрузки
Чтобы автоматически подключаться к беспроводной сети во время загрузки, нам нужно отредактировать файл 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-сервера. Этого можно добиться, создав сервисный модуль 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 wlp4s0 -r
Restart=always
[Install]
WantedBy=multi-user.target
Сохраните и закройте файл. Затем включите эту услугу.
sudo systemctl enable dhclient.service
Как получить статический IP-адрес
Если вы хотите получить статический IP-адрес, вам необходимо отключить dhclient.service
.
sudo systemctl disable dhclient.service
Нам нужно использовать netplan для настройки статического IP-адреса в Ubuntu 22.04/20.04. Создайте файл конфигурации в /etc/netplan/
.
sudo nano /etc/netplan/10-wifi.yaml
Добавьте в этот файл следующие строки. Замените 192.168.0.102
на предпочитаемый вами IP-адрес. Пожалуйста, будьте осторожны с отступами. Дополнительное пространство сделает конфигурацию недействительной.
network:
ethernets:
wlp4s0:
dhcp4: no
addresses: [192.168.0.102/24]
gateway4: 192.168.0.1
version: 2
Сохраните и закройте файл. Затем примените конфигурации.
sudo netplan apply
Вы также можете включить опцию --debug
, если она не работает должным образом.
sudo netplan --debug apply
Если в каталоге /etc/netplan/
есть другие файлы .yaml
, то netplan
автоматически объединит конфигурации из разных файлов. 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 (многоадресную DNS) для объявления своего имени хоста в локальной сети, и клиенты могут получать доступ к службам на вашем компьютере Ubuntu с этим именем хоста. Это имя хоста всегда можно преобразовать в IP-адрес вашего компьютера с Ubuntu, даже если 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
Чтобы разблокировать его во время загрузки, создайте сервисный модуль systemd.
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 — управление службами, уровнями запуска и журналами
Несколько сетей Wi-Fi
Файл конфигурации /etc/wpa_supplicant.conf
может включать несколько сетей Wi-Fi. wpa_supplicant автоматически выберет лучшую сеть на основе порядка сетевых блоков в файле конфигурации, уровня безопасности сети и уровня сигнала.
Чтобы добавить вторую сеть Wi-Fi, запустите
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant.conf
Обратите внимание, что вам нужно использовать опцию -a
с командой tee
, которая добавит вместо удаления исходного содержимого новую сеть Wi-Fi в файл.
Безопасность Wi-Fi
Не используйте WPA2 TKIP или WPA2 TKIP+AES в качестве метода шифрования на маршрутизаторе Wi-Fi. TKIP больше не считается безопасным. В качестве метода шифрования вы можете использовать WPA2-AES.
Для сетей WPA2 следует использовать очень длинный пароль. Я использую инструмент командной строки pwgen
для генерации случайного пароля из 63 символов.
sudo apt install pwgen
pwgen -sy 63
pwgen
распечатает список случайных паролей. Вам нужно выбрать одну из строк в качестве пароля.
PjF<OUz/W0`t[6!%mcP1?wLo&"y+iCF7_48nJjv.@>/qT:3/F\>4k:_>)1lKf:I
o*S+CEKf]I~\MudHu9}r%cjv@wE&^*7Wpuf5#%6y8"SlsaHlJ9;lCMYO6d"LHzz
093=t.'$g[!#twvgrY[t"d?J0!j9c\|el,;HhieC<gETlT=AK(z^T["w@o*kLsI
h&agCTMcjFQ<6NIk43&QP3'0N]wc;R1Nv=#)7cDlbdIl|or#3SM&nfU><~g;gb/
v`"<U=bkl0WJ\@~W5Gj*r?Khmgc_n@'`'qmRqg;"/Kz$$nP4G_/h%=MU|=ksp1"
Q}p4UcN*4)JNLox?!b(~7znsKARI]j{N5v5s=DcUuVuE,_H}N):/^P@<eFxlqIP
zsX#nkGWX]-GT1&-8g6E8$htcv_sq7V7DWTRg.^r].$w"=>vswoxcV_Yi#Ji=Pw
PVhk7]=kBMO3]S;Bb<`\?]CC5=|Lt/t%Sb>PaLLC3>3u!zguCcd$1P!.a@CR/cB
4Lgi3ZB(pGaM+(X#f."A6HC3lSbJQPUTJ5NWCWlG3q9[nB9#Z##sR(<VPi&IsL|
R]@klw4qRf&=(`/jcC6KcsQ~)*Mz7qJtfv.G7Ha}M@/hM]wv^=`nQAe$T.;{b}b
(M0^bIXjGNHdXwH.\C(b8`f3T}mU?C_v+PCz6>bACEV'<p*7%bagbKbL?UxN$g7
L1]6EI=0}N[LF9OGk)|#fnaCMc@7o;?<5pQp;3nEKp/421Zd=`JZ"3=W{#m%Y>)
"N*#43Nmf~R?i1<}vePGah;TU4_pJdg,tBSx-3T$;>dqYXA@1Hq3nwvAqX{dwgh
;Mhc7`G2ola&5FjoeiO9"$*%uE@i<}QL|";E2vkOY(Y4QNk5-<lI2`.}ZQ?lOXP
eUV=}'h*08owz%?J"r+:j@V)*jDEZQ%:eK(j9w%L$e`T]`d6[\E-kWmLsClqO/c
RY;2[88jqTjgg)gE5g[to8.$6rW45|cob~8i#jZt@Uf;wd0n`V2C#?Q}uL}i@@E
4jEZaxaw?rqFy8jVD@vlC(WE#Wxyu^aE#Y|x:=@yXk>A8utviqctR/D9Qe$VW[x
cZ<yeyj&&h\'09mK}mS1JXV`;#0@c}rI&9`$Oz86Brd^kDmGokQy_pQQGR2gNEJ
2pmK"wLx<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:your_ssid;T:WPA;P:your_password;;'
Затем отсканируйте QR-код своим смартфоном, и вы сможете подключиться к беспроводной сети. Я распечатываю этот QR-код на принтере и помещаю его на маршрутизатор Wi-Fi, чтобы мои гости могли легко подключиться к моей домашней сети.
Подведение итогов
Я надеюсь, что это руководство помогло вам подключить Ubuntu 22.04/20.04 к сети Wi-Fi из командной строки с помощью WPA Supplicant. Как всегда, если этот пост оказался для вас полезным, подпишитесь на нашу бесплатную рассылку, чтобы получать больше советов и подсказок 🙂