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

Автор: | 04/06/2018
 

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

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

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

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

[simterm]

$ sudo pacman -S iw

[/simterm]

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

[simterm]

$ 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

[/simterm]

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

[simterm]

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

[/simterm]

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

[simterm]

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

[/simterm]

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

[simterm]

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

[/simterm]

Редактируем /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'

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

[simterm]

$ netctl list
* setevoy-gen

[/simterm]

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

[simterm]

$ 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 ====

[/simterm]

Попингуем:

[simterm]

$ 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

[/simterm]

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

[simterm]

$ 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'

[/simterm]

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

[simterm]

$  systemctl status "netctl@setevoy\\x2dhome.service"
● netctl@setevoy\x2dhome.service - Networking for netctl profile setevoy-home
   Loaded: loaded (/usr/lib/systemd/system/[email protected]; 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.

[/simterm]

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

WiFi menu

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

[simterm]

$ sudo pacman -S dialog

[/simterm]

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

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

[simterm]

$ 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

[/simterm]

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

Готово.