Страница 1 из 2

Подключение к WiFi без NetworkManager'a

Добавлено: 19 июн 2017, 20:49
Chocobo
Итак, выпилив сразу после установки системы все следы Networkmanager и networking.service жил спокойно и счастливо, пользуясь systemd-networkd. Ровно до того момнта как потребовалось зацепиться к беспроводной сетке :smile:

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

1. Определим необходимый нам интерфейс

Код: Выделить всё

chocobo@desktop ~ $ ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 78:24:af:89:f7:cc brd ff:ff:ff:ff:ff:ff
3: wlx60e3271846e9: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 60:e3:27:18:46:e9 brd ff:ff:ff:ff:ff:ff
У меня он оказался wlx60e3271846e9 - какой чудесный нейминг :crazy:

2. Активируем его c sudo ifconfig wlx60e3271846e9 up

3. Сканим доступные вокруг точки доступа (текстат там много, я сразу отгрепал по ESSID)

Код: Выделить всё

chocobo@desktop ~ $ sudo iwlist wlx60e3271846e9 scan | grep ESSID
                    ESSID:"Andreiko-smile"
                    ESSID:"homenet_"
                    ESSID:"DIR-300NRAlena"
                    ESSID:"Keenetic-2603"
                    ESSID:"WiFi-DOM.ru-4226"
                    ESSID:"WiFi-DOM.ru-7517"
                    ESSID:"DomRU-242"
                    ESSID:"win32"
Меня тут интересует homenet_

4. Далее - подключаемся к выбранной точке

Код: Выделить всё

sudo iwconfig wlx60e3271846e9 essid homenet_
тут стоит оговориться, что точка используемая в этом примере - открытая, поэтому синтаксис для WPA2 будет чуть другой.

5. На этом почти все, осталось поднять адресацию. В моем случае, при испльзовании systemd-networkd - надо задать описание интерфейсу в /etc/systemd/network/
Завожу конфиг /etc/systemd/network/25-wireless.network с следующим содержимым

Код: Выделить всё

[Match]
Name=wlx60e3271846e9

[Network]
DHCP=ipv4
Тут все прозрачно, имя интерфейса и DHCP-адресация (можно завести и статику при желании)

6. Даем рестарт сетевой службе

Код: Выделить всё

sudo systemctl restart systemd-networkd
7. Проверяем

Код: Выделить всё

chocobo@desktop ~ $ ip a
......
......
.....
3: wlx60e3271846e9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 60:e3:27:18:46:e9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.104/24 brd 192.168.0.255 scope global dynamic wlx60e3271846e9
       valid_lft 7138sec preferred_lft 7138sec
    inet6 fe80::62e3:27ff:fe18:46e9/64 scope link 
       valid_lft forever preferred_lft forever

Код: Выделить всё

chocobo@desktop ~ $ ping -I wlx60e3271846e9 linuxmint.com.ru
PING linuxmint.com.ru (82.146.54.131) from 192.168.0.104 wlx60e3271846e9: 56(84) bytes of data.
64 bytes from linuxmint.com.ru (82.146.54.131): icmp_seq=1 ttl=57 time=52.2 ms
64 bytes from linuxmint.com.ru (82.146.54.131): icmp_seq=2 ttl=57 time=44.9 ms
64 bytes from linuxmint.com.ru (82.146.54.131): icmp_seq=3 ttl=57 time=110 ms
64 bytes from linuxmint.com.ru (82.146.54.131): icmp_seq=4 ttl=57 time=14.9 ms
64 bytes from linuxmint.com.ru (82.146.54.131): icmp_seq=5 ttl=57 time=48.8 ms
64 bytes from linuxmint.com.ru (82.146.54.131): icmp_seq=6 ttl=57 time=237 ms
^C
--- linuxmint.com.ru ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5007ms
rtt min/avg/max/mdev = 14.934/84.802/237.000/73.774 ms
Вуаля, вроде как все на месте :smile:


Но данная заметка была расчитана не на еще одну красноглазую инструкцию :angel: (пусть ничего сложного тут и нет) - а на рассмотрение возможности алгоритмизации описанной выше последовательности для создания мышетыкательной оснастки без помощи NM.
Для начала думаю можно использовать zenity чтоб
  • спарсить и выдать список с выбором интефейса
  • просканить и вывести для выбора доступные точки
  • у выбранной проверить защиту, и при необходимости запросить пароль.
  • спросить адресацию (по умолчанию наверное в 95% случаев будет DHCP, но тем не менее)
  • сгенерить на основе этих данных команды подключения и конфиги
Вот как-то так. И если все пройдет гладко - можно попробовать завернуть все это и в апплет

Подключение к WiFi без NetworkManager'a

Добавлено: 19 июн 2017, 21:20
di_mok
Chocobo писал(а): Для начала думаю можно использовать zenity
И примостырить аплет Создание аплета Cinnamon

Подключение к WiFi без NetworkManager'a

Добавлено: 19 июн 2017, 21:28
Chocobo
di_mok, Да, тоже вспомнил эту тему, разумеется. Но так как JS со мной знаком очень отдаленно - я пока больше склоняюсь к выбору PyGTK.

Но об этом еще рано пока, надо сначала на баше домучать :smile:

Подключение к WiFi без NetworkManager'a

Добавлено: 19 июн 2017, 21:38
di_mok
Да там жавы то будет - одно название.На быдлокодинге можно выехать. :-D Блин, со временем тяжко для поковыряться.

Подключение к WiFi без NetworkManager'a

Добавлено: 20 июн 2017, 09:06
Chocobo
di_mok, ну я пока набрасываю Bash-функции для zenity, оттуда можно выдрать примитивы будет

Код: Выделить всё

iface=$(ifconfig -a | sed 's/[ \t].*//;/^\(lo\|\)$/d');
select_iface ()
{
        iface=`echo $iface | sed 's/ /\n/' | sed 's/^/FALSE\n/g' |\
            zenity --width=350 --height=250  --list --radiolist --separator=' ' \
                    --title="Выбор Интерфейса" \
                    --text="Пожалуйста выберите интерфейс:" --column="" --column="Iface"`
}
Снимок экрана от 2017-06-20 09-01-34.png
Снимок экрана от 2017-06-20 09-01-34.png (15.11 КБ) 4583 просмотра

Код: Выделить всё

select_network ()
{
        sudo iwlist $iface scan | grep ESSID | cut -f2 -d"\"" > /tmp/aplist
        network=`cat /tmp/aplist | sed 's/^/FALSE\n/g' |\
            zenity --width=350 --height=250  --list --radiolist --separator=' ' \
                    --title="Выбор сети" \
                    --text="Пожалуйста выберите сеть:" --column="" --column="сеть"`
}
Снимок экрана от 2017-06-20 09-01-44.png
Снимок экрана от 2017-06-20 09-01-44.png (19.32 КБ) 4583 просмотра

Подключение к WiFi без NetworkManager'a

Добавлено: 20 июн 2017, 10:26
SemenSinchenko
Раньше был такой баг в ноутбуках, что если таким макаром примостить Wi-Fi сеть, добавить ее в systemd, то потом, если попытаться включить ноутбук в том месте, где этой сети нет, то он зависал минуты на три в тщетных попытках подключиться к сети.

Повторюсь, баг был раньше (когда Debian только перешел на systemd, а это было черти когда), был в Debian (за других не скажу), но я очень хорошо помню, что на сайте Debian была написана рекомендация не пользоваться таким способом подключения Wi-Fi, а использовать что-нибудь более современное типо NM или wicd...

Я бы на всякий случай проверил, как компьютер будет включаться когда такой сети (описанной в /etc/systemd/network/) рядом нет.

Подключение к WiFi без NetworkManager'a

Добавлено: 20 июн 2017, 21:21
Chocobo
SemenSinchenko, в /etc/systemd/network описан только сам сетевой интерфейс и адресация, ssid там не фигурирует


А я, как обычно наигравшись в баш-программирование, переписал все на python3+PyQt5 :smile:
никогда раньше толком не имел делов с Qt, поэтому знатно прошелся по всем граблям :grabli:, но в необходимые основы вроде уже въехал

Неказистое окошко пока выглядит так, основные события выделены в функции - можно дальше прорабатывать логику.
Снимок экрана от 2017-06-20 21-13-48.png

Подключение к WiFi без NetworkManager'a

Добавлено: 21 июн 2017, 13:12
Chocobo
Можно уже сказать, что кое-что готово.
набросал остатки функционала для подключений - оно работает :ok: .
Код пока показывать не буду, надо все причесать :sry:
Снимок экрана от 2017-06-21 12-51-36.png
В ходе работы над этой штукой уяснил что можно пойти несколькими путями. В шапке был указан отход от NM, при этом networking.service c одной стороны нафиг не нужен когда есть systemd-networkd, с другой стороны особо против него ничего не имею, ну и по умолчанию в системе он задействован. Так что, возможно тут должен быть выбор.

Использовать iwlist, описанный в первом посте получится только для открытых сеток, с WEP/WPA он не дружит. так что не самая подходящая утилита, хоть к открытым и цепляется на ура в одну незамысловатую строку.

При использовании модуля wifi в питоне - помимо базовых операций с адаптером он умеет конфигруть и сохранять подключения в /etc/network/interfaces. Но весь дебаний networking.serviсe использует ifup/ifdown и dhcpd Т.е решение вполне работоспособно не дергая по коду баш, но без systemd-networkd.

Ну и самый логичный вариант - вызвать wpa_supplicant, который умеет все вышеперечисленное, и не рулит сам адресацией интерфейсов. Он сохраняет у себя в конфиге PSK-пароли в явном и хешированном виде и монопольно держит интерфейс когда задействован, за что тоже можно зацепиться при разнообразных проверках.


В общем это мысли вслух, чтоб не чересчур не костылировать (пока писал еще кое-что домыслил :joke:)

Подключение к WiFi без NetworkManager'a

Добавлено: 21 июн 2017, 13:38
SemenSinchenko
Chocobo писал(а): описан только сам сетевой интерфейс и адресация, ssid там не фигурирует
Я вспомнил как все было.
Я ставил Debian "чистым" методом, соответственно после установки настраивал сеть руками через wpa-supplicant. Все отлично работало, пока я не попытался включить ноут в макдаке - он запускался минуты три.
Потом уже прочитал на сайте Debian, что использование wpa-supplicant не рекомендовано пользователям продвинутых DE именно по этой причине...
Не знаю, как это может помочь, но вроде проблема была и не решалась (по другому к сети с WPA2 не подключится). Ну или может флаг auto убирать, но это опять же неудобно - каждый раз после включения ноута подключать сеть...

Подключение к WiFi без NetworkManager'a

Добавлено: 21 июн 2017, 14:01
Chocobo
SemenSinchenko, Спасибо за инфу. Все это еще предстоит проверять)

Подключение к WiFi без NetworkManager'a

Добавлено: 26 ноя 2019, 13:28
achilles_85
Жаль тема заглохла. Я нечто такое хотел бы для подключения к openvpn серверам. Не допилили случаем свое творение?

Подключение к WiFi без NetworkManager'a

Добавлено: 26 ноя 2019, 13:34
symon2014
achilles_85 писал(а):
26 ноя 2019, 13:28
Я нечто такое хотел бы для подключения к openvpn серверам.
А как это нечто выглядит?

Подключение к WiFi без NetworkManager'a

Добавлено: 26 ноя 2019, 13:45
achilles_85
etamax писал(а):
26 ноя 2019, 13:34
А как это нечто выглядит?
Как у автора этой темы выглядит инструмент для подключения к wifi сетям

Подключение к WiFi без NetworkManager'a

Добавлено: 26 ноя 2019, 14:56
Chocobo
achilles_85, опенвпн прекрасно оборачивается в сервис-юнит, там в целом есть простор для творчества.

Подключение к WiFi без NetworkManager'a

Добавлено: 03 дек 2019, 14:52
achilles_85
Chocobo писал(а):
26 ноя 2019, 14:56
achilles_85, опенвпн прекрасно оборачивается в сервис-юнит, там в целом есть простор для творчества.
Это понятно. Мне интересно было вы допилили свою задумку или нет

Подключение к WiFi без NetworkManager'a

Добавлено: 03 дек 2019, 21:07
Chocobo
achilles_85, тут к сожалению похвастаться нечем, хотела была заброшена.

Точней, на тот момент оно
было временно отложено до появления поддержки netplan, как единойточки входа к сетевым конфигурашкам, но обратно так пока и не реанимировалось к гуйным идеям )

Подключение к WiFi без NetworkManager'a

Добавлено: 21 янв 2020, 14:27
masterb
Народ, кто-нибудь пробовал подключать wi-fi при живом т.е. без "выпиливания" NM с помощью iwconfig, wpa_supplicant? Проблема в том, что интернет начинает работать только когда залогинишься а надо до. Пробовал назначить essid интерфейсу - устанавливал, проходит несколько секунд и он опять пустой, что за дела? В интернете нашел решение мол надо отключить сервисы NM (networkd-dispat, NetworkManager), что и было сделано, но толку нет, может что-то ещё надо отрубить? Охото разобраться.

Подключение к WiFi без NetworkManager'a

Добавлено: 21 янв 2020, 14:51
rogoznik
masterb писал(а):
21 янв 2020, 14:27
Проблема в том, что интернет начинает работать только когда залогинишься а надо до
Это как? Если сеть имееют ключ доступа, то подключиться к ней, а значит и получить инет, ты можешь только когда ввел верный ключ и прошел процедуру проверки.

Подключение к WiFi без NetworkManager'a

Добавлено: 21 янв 2020, 14:57
symon2014
masterb, пиши себе что хочешь в /etc/network/interfaces , NM даже не дёрнется помогать.

Подключение к WiFi без NetworkManager'a

Добавлено: 21 янв 2020, 15:06
masterb
Да, тип авторизации используется wpa psk/ wpa2 psk и это выполняет программа wpa_supplicant но перед этим надо настроить интерфейс т.е. как минимум присвоить essid а это не получается, что-то его сбрасывает, подозреваю на NM. Раньше был antix дистрибутив и там не было NM - все работало, в mint он - NM по ходу мутит что-то, только как его отрубить без удаления. Удалять не пробовал.