Инструкция этого типа вызывает процесс подключения к SSID, получения IP адреса и других IP параметров, измерение времени отклика DNS-серверов.
Для подключения (ассоциации) используется wpa_supplicant.
В качестве возможных входных параметров используются:
Параметр | Значение | Комментарий |
---|---|---|
interface | wlan0 | Имя беспроводного интерфейса (wlan0 или wlan1), через который подключаться |
ssid | строка | Указывается имя беспроводной сети, к которой необходимо подключиться. Если указано, будет проведено подключение только к заданному SSID, даже если в параметрах задачи (настройке группы) указано несколько SSID. Если не задано, то WifiConnect будет исполняться циклически для всех сетей, для которых выставлено "тестировать подключение". |
scan_ssid | 0 или 1 | Определяет, будет ли сенсор проводить предварительное сканирование (поиск) сети перед подключением. По умолчанию 0 (нет). |
nslookup_timeout | время в секундах | таймаут nslookup |
mac_per_bssid | False (по умолчанию) True | Определяет метод формирования клиентского МАС адреса, используемого при подключении. Если не параметр не указал или значение не равно True, используется "родной" адрес wlan0 или wlan1 интерфейса сенсора. Если параметр равен True, на каждую попытку подключения сенсор модифицирует МАС адрес своего клиентского интерфейса так, чтобы он был поход на адрес BSSID, куда пойтет подключение, но со сменой первых двух байт на F0:F0. Например, при подключении к b4:6e:08:76:c1:91 адрес интерфейса выставится в f0:f1:08:76:c1:91. Подобное может потребоваться при тестировании DHCP сервера в беспроводной сети, при этом не применяя постоянную полную рандомизацию адреса , которая может привести к исчерпанию пула адресов. Функция доступна с версии 1.1095 ПО сенсора. |
Сенсор поддерживает несколько типов подключения (авторизации) в SSID.
Для варианта "open", т.е. открытой сети, никаких параметров, кроме имени сети (ssid), и имени интерфейса (interface, по умолчанию "wlan0"), не требуется.
Для варианта "psk", т.е. сети, защищенной общим ключом-паролем, и использующий метод аутентификации WPA2-PSK (preshared key), требуется дополнительный параметр password, являющийся ключом доступа к сети.
Для варианта "peap", т.е. сети, защищенной протоколом 802.1Х и использующей метод аутентификации WPA2-Enterprise и авторизацию по идентификатору типа "логин-пароль" (PEAP/MSCHAPv2), например Active Directory, требуется указать (помимо параметра password):
- ca_cert - путь до файла с корневым сертификатом вашей инфраструктуры PKI
- username - идентификатор (имя пользователя), использующегося в процессе авторизации
Для варианта "tls", т.е. сети, защищенной протоколом 802.1Х и использующей метод аутентификации WPA2-Enterprise и авторизацию по клиентскому сертификату, требуется указать (вместо параметра password):
- ca_cert - путь до файла с корневым сертификатом вашей инфраструктуры PKI
- client_cert - путь до файла с сертификатом клиента
- client_key - путь до файла с ключом клиентского сертификата
- key_password - (опционально) пароль на клиентский сертификат (если он установлен)
Формат файлов сертификатов и ключей - PEM (т.е. BASE64, текстовый), кроме, возможно client_key. Файлы сертификатов и ключей должны быть заранее размещены (загружены) на сенсор. Для этого в настройках "Панели управления" сенсора или группы предусмотрен загрузчик файлов (на сенсор, или на все сенсоры группы по очереди). В загрузчике необходимо указать полное имя файла (с путем), и прикрепить сам файл. Внимание: проверки валидности пути и/или наличия существующего файла на целевом месте нет.
Файлы на сенсоре:
Внимание! Файлы, загруженные в /tmp/, не переживают перезагрузку сенсора. Файлы, загруженные не в /etc/, не переживают обновление прошивки (полное, OpenWrt) сенсора. Обновление управляющего Python-кода сенсора безопасно для файлов, кроме каталога /root/qow/.
Для EAP-TLS (encryption=tls) подключения доступны два сценария:
- Сертификат клиента - в формате PEM, ключ к сертификату поставляется отдельно, также в PEM файле. В таком случае вы обязаны указать параметры:
- client_cert - путь до файла с сертификатом клиента
- client_key - путь до файла с ключом клиентского сертификата
- key_password - (опционально) пароль на клиентский сертификат (если он установлен)
- Сертификат клиента - в формате PKCS#12 (в виде двоичного .pfx / .p12 файла). В таком случае вы обязаны указать параметры:
- client_key - путь до файла с клиентским сертификатом
- key_password - (обязательно) пароль на клиентский PFX-сертификат
Укажите ссылки на все эти файлы и ключи в "Параметрах":
Типовой код скрипта инструкции:
import json
import sys
import wnam_wifi_connectiondata = ' '.join(sys.argv[1:])
json_data = json.loads(data)['data']wnam_wifi_connection.change_network(**json_data)
По завершении подключения, если оно было успешным, происходит:
- получение IP адреса, и измерение времени, которое это заняло
- получение IP адреса по DNS запросу к тому серверу (серверам), которые были получены в DHCP-процессе. Измеряется время резолва имен
- для ipv4 ya.ru и google.com.
- для ipv6 ipv6.ya.ru и ipv6.google.com
- эти dns адреса могут быть изменены передачей инструкции параметров ip4_resolv_1, ip4_resolv_2, ip6_resolv_1, ip6_resolv_1
Инструкция возвращает серверу результат следующего вида:
Величины ssid_duration (время ассоциации), dhcp_duration (время получения IP адреса), go_ping и ya_ping (время DNS-резолвинга) выдаются в миллисекундах.
Полученный тайминги отображаются в отчете типа "Подключение к сети".
Параметр "ip" соответствует выданному по DHCP IP адресу DNS-сервера (в примере = 8.8.8.8).