Linux: настройка WiFi с помощью netctl и wifi-menu на Arch Linux

By | 06/04/2018
 

Настройка WiFi на Arch Linux с помощью netctl.

В примере ниже выполняется настройка подключения к WiFi сети NetName_2.4Ghz, используя iw и netctl профайл на Arch Linux (не специфично для этой ОС, аналогично выполняется настройка на любой Linux-системе).

Помимо ручной настройки способо, описанным ниже – можно использовать wifi-menu, который сгенерирует файл профиля в /etc/netctl.

Устанавливаем iw:

sudo pacman -S iw

Находим интерфейсы, используя iw (или обычным ifconfig):

iw dev
phy#0
Unnamed/non-netdev interface
wdev 0x3
addr 10:f0:05:64:0a:74
type P2P-device
txpower 0.00 dBm
Interface wlp2s0
ifindex 3
wdev 0x1
addr 10:f0:05:64:0a:73
ssid NetName_2.4Ghz
type managed
channel 11 (2462 MHz), width: 20 MHz, center1: 2462 MHz
txpower 22.00 dBm

Находим список WiFi сетей:

sudo iw dev wlp2s0 scan | grep SSID
SSID: VB_Dev_Test_2.4Ghz
SSID: NetName_2.4Ghz
...

Копируем netctl профайл:

sudo cp /etc/netctl/examples/wireless-wpa /etc/netctl/setevoy-gen

Создаём обфусцированный пароль (pre-shared-key):

wpa_passphrase NetName_2.4Ghz
reading passphrase from stdin
pass
network={
ssid="NetName_2.4Ghz"
psk="pass"
psk=d09***9e6
}

Редактируем /etc/netctl/setevoy-gen, в Key задаём ключ:

Description='A simple WPA encrypted wireless connection'
Interface=wlp2s0
Connection=wireless
Security=wpa
IP=dhcp
ESSID='NetName_2.4Ghz'
Key='d09***9e6'

Получаем список профилей:

netctl list
* setevoy-gen

Запускаем созданный профиль (если имеется активное подключение к сети – сначала выключаем его с помощью netctl stop profile-name):

netctl start setevoy-gen
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
Authentication is required to start 'netctl@setevoy\x2dgen.service'.
Authenticating as: setevoy
Password:
==== AUTHENTICATION COMPLETE ====

Попингуем:

ping -c 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=48 time=36.2 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 36.274/36.274/36.274/0.000 ms

Добавляем в автозапуск при старте системы:

sudo netctl enable setevoy-gen
ln -s '/etc/systemd/system/netctl@setevoy\x2dgen.service' '/etc/systemd/system/multi-user.target.wants/netctl@setevoy\x2dgen.service'

Если при старте профиля в логах выдаётся ошибка авторизации:

systemctl status "netctl@setevoy\\x2dhome.service"
● netctl@setevoy\x2dhome.service - Networking for netctl profile setevoy-home
Loaded: loaded (/usr/lib/systemd/system/netctl@.service; static; vendor preset: disabled)
Active: failed (Result: exit-code) since Sat 2018-10-06 09:50:47 EEST; 6min ago
Docs: man:netctl.profile(5)
Main PID: 25465 (code=exited, status=1/FAILURE)
Oct 06 09:50:31 setevoy-arch-home systemd[1]: Starting A simple WPA encrypted wireless connection...
Oct 06 09:50:31 setevoy-arch-home network[25465]: Starting network profile 'setevoy-home'...
Oct 06 09:50:46 setevoy-arch-home network[25465]: WPA association/authentication failed for interface 'wlp13s0'
Oct 06 09:50:47 setevoy-arch-home network[25465]: Failed to bring the network up for profile 'setevoy-home'
Oct 06 09:50:47 setevoy-arch-home systemd[1]: netctl@setevoy\x2dhome.service: Main process exited, code=exited, status=1/FAILURE
Oct 06 09:50:47 setevoy-arch-home systemd[1]: netctl@setevoy\x2dhome.service: Failed with result 'exit-code'.
Oct 06 09:50:47 setevoy-arch-home systemd[1]: Failed to start A simple WPA encrypted wireless connection.

То можно поменять значение Key= в файле профиля на пароль в открытом виде.

WiFi menu

Требует пакета dialog:

sudo pacman -S dialog

Вместо того, что бы создавать файл профиля и редактировать его вручную – можно использовать wifi-menu:

Он сгенерирует файл с именем профиля в виде имя_интерфейса-имя_сети в /etc/ntectl:

ls -l /etc/netctl/
total 24
drwxr-xr-x 2 root root 4096 Oct  3 18:39 examples
drwxr-xr-x 2 root root 4096 Aug  7 21:11 hooks
drwxr-xr-x 2 root root 4096 Aug  7 21:11 interfaces
-rw-r--r-- 1 root root  439 Oct  6 09:48 setevoy-home
-rw------- 1 root root  147 Oct  5 19:00 wlp13s0-HOME397
-rw------- 1 root root  145 Oct  3 18:56 wlp13s0-setevoy

После чего останется только добавить его в автозагрузку через sudo netctl enable profile_name.

Готово.