Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Common Edition 2.12

Введение

В статье описаны основные приемы работы с адаптерами WiFi. При написании статьи использовались виртуальные машины КVM (см. Виртуализация QEMU/KVM в Astra Linux), в качестве устройств WiFi использовались USB-адаптеры TP-Link LT-WDN3200 (чип Ralink RT5572) и адаптер неустановленной модели с чипом Ralink RT5370. При подключении указанные адаптеры регистрируются операционной системой как сетевое устройство wlan0, и далее в примерах используется это имя адаптера. В статье даются базовые настройки, более подробную информацию следует искать в справочной системе man.

В зависимости от требований, предъявляемых к информационной системе, программного отключения модулей может быть недостаточно, а аппаратные модули модули должны быть физически удалены из системы.

Проверка оборудования

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

Установка пакетов для проверки оборудования

Для выполнения простейших проверок дополнительные пакеты не требуются. Для детальной проверки установить пакеты rfkill и iw:

sudo apt install rfkill iw

Проверка и подготовка оборудования

  1. Убедиться, что устройство действительно подключено (дополнительные пакеты не требуются):

    lsusb

    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
    Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Вывод команды показывает наличие подключенного USB-устройства "Ralink Technology, Corp. RT5370 Wireless Adapter"

    При работе с виртуальными машинами QEMU/KVM переназначение USB-устройств через команду меню может работать некорректно, для переназначения устройств следует использовать панель виртуального оборудования и добавлять устройства как "USB-устройство узла"  ("USB Host Device");
  2. Убедиться, что устройство опознано как сетевой адаптер (дополнительные пакеты не требуются):

    ip a

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 52:54:00:0f:e7:bf brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.31/24 brd 192.168.56.255 scope global noprefixroute dynamic eth0
           valid_lft 966sec preferred_lft 966sec
        inet6 fe80::5054:ff:fe0f:e7bf/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
        link/ether 8a:69:8b:6c:25:92 brd ff:ff:ff:ff:ff:ff

    Вывод команды показывает наличие сетевого адаптера wlan0;

  3. Убедиться, что устройство управляется (опознано) службой Network Manager (дополнительные пакеты не требуются):

    sudo nmcli dev status

    DEVICE  TYPE      STATE           CONNECTION         
    eth0    ethernet  подключено      Проводное соединение 1
    wlan0   wifi      отключено       --                    

  4. Убедиться, что использование устройства разрешено (в частности, устройство не отключено аппаратно или настройками BIOS). Требуется пакет rfkill. Команда:

    sudo rfkill list

    0: phy0: Wireless LAN
            Soft blocked: no
            Hard blocked: no
    Вывод команды показывает, что устройство с именем phy0 не заблокировано ("no"). Если устройство заблокировано ('yes"), то:

    1. Если устройство заблокировано программно ("Soft blocked: yes"), то можно попробовать разблокировать его командой:

      sudo rfkill unblock <номер_устройства>
      Если это не помогает, то, возможно, в системе отсутствуют драйверы для устройства;

    2. Если устройство заблокировано аппаратно ("Hard blocked: yes"), то следует искать способ разблокировки в настройках оборудования (например, включить WiFi кнопкой на ноутбуке);

  5. Убедиться, что устройство поддерживает нужные режимы работы (в частности, режим точки доступа - AP (Access Point)). Требуется пакет iw. Команда может выглядеть так:

    sudo iw list | grep "Supported interface modes:" -A 10

            Supported interface modes:
                     * IBSS
                     * managed
                     * AP
                     * AP/VLAN
                     * monitor
                     * mesh point
            Band 1:
                    Capabilities: 0x17e
                            HT20/HT40
                            SM Power Save disabled
    Вывод команды показывает наличие режима работы AP.

Программное отключений WiFi

В зависимости от требований, предъявляемых к информационной системе, программного отключения модулей WiFi может быть недостаточно, и аппаратные модули модули должны быть физически удалены из системы.

При наличии установленного пакета rfkill получить список модулей можно командой:

sudo rfkill list

Программно отключить модуль WiFi можно командой:
sudo rfkill block <номер_устройства>

См. также статью Базы Знаний:
Автоотключение WiFi при подключении по Ethernet.

Настройка адаптера WiFi как точки доступа с выходом во внешнюю сеть

Далее предполагается, что WiFi-адаптер установлен в компьютере с сетевой картой с именем eth0, подключенной к внешней сети (Интернет или сеть предприятия). Для корректного подключения клиентов выполняются следующие настройки:

  1. Настройки сетевого подключения;
  2. Настройка службы DHCP для назначения IPv4-адресов WiFi-клиентам при их подключении;
  3. Настройка правил IPTABLES для разрешения перенаправления сетевых пакетов от WiFi-клиентов (от WiFi адаптера) во внешнюю сеть.

Настройка точки доступа при использовании Network Manager

При использовании Network Manager для включения точки доступа WiFi выполнить следующие операции:

Настройка сетевого подключения

  1. Создать и настроить сетевое подключение. Это можно сделать через графический интерфейс Network Manager или из командной строки следующими командами:
    1. Создание "пустого" соединения с именем соединения alse и с идентификатором сети (SSID) alse-wifi:

      sudo nmcli con add type wifi ifname wlan0 con-name alse autoconnect yes ssid alse-wifi

    2. Назначить параметры WiFi:

      sudo nmcli con mod alse 802-11-wireless.mode ap 802-11-wireless.band bg

    3. Назначить IPv4-адрес:

      sudo nmcli con mod alse ipv4.method shared ipv4.addresses 10.42.0.1/24 gw4 10.42.0.1
      Для примера использован адрес 10.42.0.1. Такой адрес автоматически назначается службой Network Manager при создании подключения через графический интерфейс;

    4. Назначить параметры IPv6:

      sudo nmcli con mod alse ipv6.method shared ipv6.ip6-privacy 0

    5. Назначить параметры безопасности:

      sudo nmcli con mod alse wifi-sec.key-mgmt wpa-psk wifi-sec.psk "<пароль_для_подключения>"

    6. Активировать интерфейс:

      sudo nmcli con up alse


  2. После настройки и активации сетевого подключения убедиться, что служба Network Manager создала путь (route) для пересылки сетевых пакетов от WiFi-адаптера во внешнюю сеть:

    ip route

    default via 192.168.56.1 dev eth0 proto dhcp metric 100
    default via 10.42.0.1 dev wlan0 proto static metric 600
    10.42.0.0/24 dev wlan0 proto kernel scope link src 10.42.0.1 metric 600
    192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.31 metric 100

    Путь для сетевых пакетов WiFi-адаптера: "10.42.0.0/24 dev wlan0 proto kernel scope link src 10.42.0.1 metric 600"

Настройка DHCP

  1. Если на сервере уже используется служба DHCP, то следует выполнить настройку этой службы в соответствии с принятыми правилами эксплуатации. Подробнее про работу с DHCP см. статью DHCP: служба isc-dhcp-server, а также статью Терминальный сервер LTSP (ltsp-server-standalone) на базе Astra Linux. Если службы DHCP нет, то можно использовать пакет dnsmasq — упрощенную службу DHCP. Команда для установки пакета:

    sudo apt install dnsmasq

  2. Внести в конфигурационный файл dnsmasq следующее содержимое:

    log-facility=/var/log/dnsmasq.log
    interface=wlan0
    dhcp-range=10.42.0.10,10.42.0.250,12h
    dhcp-option=3,10.42.0.1
    dhcp-option=6,10.42.0.1
    #no-resolv
    log-queries

    в настройках использована сеть 10.42.0.0/24, соответствующая ранее назначенному IPv4-адресу WiFi-адаптера.

  3. Перезапустить службу dnsmasq:

    sudo systemctl restart dnsmasq

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

    sudo tail /var/log/dnsmasq.log

    Feb 10 11:51:04 dnsmasq[5008]: started, version 2.76 cachesize 150
    Feb 10 11:51:04 dnsmasq[5008]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify
    Feb 10 11:51:04 dnsmasq-dhcp[5008]: DHCP, IP range 10.42.0.10 -- 10.42.0.250, lease time 12h
    Feb 10 11:51:04 dnsmasq[5008]: reading /etc/resolv.conf
    Feb 10 11:51:04 dnsmasq[5008]: using nameserver 77.88.8.8#53
    Feb 10 11:51:04 dnsmasq[5008]: read /etc/hosts - 5 addresses

Включение перенаправления пакетов

Для включения перенаправления (трансляции) пакетов от WiFi-адаптера во внешнюю сеть выполнить указанные ниже команды. Для примера предполагается, что таблицы маршрутизации не содержат важных правил, и первые две команды очищают таблицы маршрутизации. При установленных настройка IPTABLES следует адаптировать команды в соответствии с принятыми правилами эксплуатации. Команды:

sudo iptables -t nat -F
sudo iptables -F
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
echo '1' | sudo tee /proc/sys/net/ipv4/ip_forward
Для сохранения настроек IPTABLES после перезагрузки компьютера см. статью Сохранение и восстановление правил iptables.

Настройка точки доступа без использования Network Manager

Для управления WiFi-адаптером в режиме точки доступа вместо Network Manager можно использовать пакет hostapd. Настройка службы DHCP и включение перенаправления пакетов при этом выполняется так же, как в случае работы с Network Manager (см. выше).

Установить пакет hostapd можно командой:

sudo apt install hostapd
Пакет hostapd можно использовать совместно с Network Manager, если вывести WiFi-адаптер из-под управления Network Manager. Для этого:

  1. В файл конфигурации Network Manager /etc/NetworkManager/NetworkManager.conf в секцию [keyfile] (если секции нет - добавить) добавить список исключенных из управления устройств, содержащий адаптера. В итоге соответствующая часть файла должна иметь вид:

    [keyfile]
    unmanaged-devices=interface-name:wlan0
  2. Перезапустить службу Network Manager:

    sudo systemctl restart NetworkManager

  3. Убедиться, что устройство исключено из управляемых устройств (не отображается в списке):

    sudo nmcli dev status

Настройка адаптера

Если служба Network Manager не используется, то WiFi-адаптеру вручную должен быть назначен сетевой адрес:

 sudo ifconfig wlan0 10.42.0.1/24
Для того, чтобы адрес сохранялся после перезагрузки следует настроить используемую сетевую службу (см. Настройка сетевых подключений в Astra Linux).

Настройка и отладка службы hostapd

Привести конфигурационный файл службы hostapd /etc/hostapd/hostapd.conf к виду:

interface=wlan0
channel=6
ieee80211n=1
hw_mode=g
ssid=alse-wifi
wpa=2
wpa_passphrase=<пароля_для_подключения>
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
auth_algs=1


Обновление конфигурации и включение точки доступа будет выполнено после перезапуска службы.

Для отладки остановить службу:

sudo systemctl stop hostapd

Для запуска службы в режиме отладки выполнить команду:
sudo hostapd -d /etc/hostapd/hostapd.conf
Выйти из режима отладки можно нажав сочетание клавиш Ctrl+C.

Убедившись в корректной работе:

Указать в файле настроек системной службы hostapd /etc/default/hostapd расположение конфигурации:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Запустить службу:

sudo systemctl start hostapd