Беспроводной машрутизатор своими руками

в 19:20, , рубрики: 802.11ac, 802.11n, atheros, dd-wrt, diy или сделай сам, firehol, hostapd, Ubuntu, Virtual SSID, виртуальный SSID, маршрутизатор, пассивное сканирование, Сетевое оборудование
Беспроводной машрутизатор своими руками - 1

  1. Выбор комплектующих
  2. Запуск сетевых интерфейсов
  3. Установка точки доступа 802.11ac (5 ГГц)
  4. Настройка виртуального SSID с помощью hostapd

Последние десять лет я покупал дешёвое сетевое оборудование и ставил на него DD-WRT, чтобы вернуть «функции» ценой более $500, удалённые из ядра Linux, на котором основаны стоковые прошивки.

Несмотря на нестабильные сборки, неисправленные ошибки и споры, DD-WRT всё равно предпочтительнее стоковых прошивок. Но сейчас достойные комплектующие дешевле, чем когда-либо, а DIY-сообщество поголовно перешло на Linux (я смотрю на вас, м-р Raspberry), так почему бы не собрать собственный беспроводной маршрутизатор раз и навсегда?

Выбор комплектующих

Первым делом нужно определиться с платформой: x86 или ARM? Не буду подробно обсуждать ключевые различия, но вкратце: у первой лучше производительность, а вторая дешевле и энергоэффективнее. Платы Raspberry Pi (и аналоги) чрезвычайно дёшевы и, вероятно, мощнее большинства беспроводных коммерческих маршрутизаторов, но платформы x86 широко распространены и имеют преимущество за счёт стандартизированных форм-факторов и портов расширения.

Конечно, самая важная деталь — это чипсет. Сегодня стандартами де-факто являются 802.11n (2,4 ГГц) и 802.11ac (5 ГГц), но подобрать драйверы под Linux — та ещё задачка, тем более с поддержкой режима AP (точка доступа). Короче, если не хотите проблем, то выбирайте чипсеты Atheros. Драйверы ath9k и ath10k хорошо поддерживаются, вы легко найдёте их с интерфейсами USB и/или mini-PCIe.

Хотя бы один контроллер сетевого интерфейса (NIC) — необходимый минимум, а RAM и накопитель выбирайте на свой вкус.

Список материалов

Принеся в жертву цену и энергопотребление, я выбрал x86-платформу ради модульной, относительно мощной конфигурации, доступной для апгрейда.

Если вам не нужен ARM, то и вентилятор не обязателен.

Корпус просторный, с двумя подготовленными отверстиями для штепсельной вилки AC/DC. Установка материнской платы, RAM и Pico-PSU прошла гладко:

Беспроводной машрутизатор своими руками - 2
Железячное порно

Самым сложным оказалась установка mini-PCIe WiFi, потому что плата поддерживает только карты половинного размера: здесь на помощь пришёл удлинитель mPCIe. Я взял кабель FFC на 20 см (входит в комплект) для подключения обеих сторон адаптера и закрепил mini-PCIe на шасси с помощью двустороннего скотча.

Беспроводной машрутизатор своими руками - 3Беспроводной машрутизатор своими руками - 4

Беспроводной машрутизатор своими руками - 5
Расширитель mini-PCIe

К счастью, корпус поставляется с тремя предварительно вырезанными отверстиями для антенн. Вот окончательный результат:

Беспроводной машрутизатор своими руками - 6

Беспроводной машрутизатор своими руками - 7

Программное обеспечение

Понятно, что ставим Linux. В зависимости от оборудования, это может быть оптимизированный дистрибутив вроде Raspbian (для Raspberry Pi) или любой другой дистрибутив Linux, который вам нравится. Поскольку я много лет использую Ubuntu, то выбрал Ubuntu Server 18.04 LTS, с которым мне привычнее работать и которому обеспечена долгосрочная поддержки.

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

Если установка прошла нормально и вы зашли в консоль, определим имена интерфейсов:

$ ip -br a | awk '{print $1}'
lo
enp1s0
enp2s0
wlp5s0

На материнской плате два встроенных NIC: это enp1s0 и enp2s0. Беспроводная карта отображается как wlp5s0 и поддерживает режим AP, как и предполагалось:

$ iw list
...
Supported interface modes:
                 * managed
                 * AP
                 * AP/VLAN
                 * monitor
                 * mesh point

Теперь можем обрисовать, что нам нужно: первый NIC поставим как WAN-порт, а второй соединим с беспроводным интерфейсом:

Беспроводной машрутизатор своими руками - 8

Сеть

Если у вас Ubuntu 18.04, то немедленно избавимся от netplan, чтобы вернуться к поддержке /etc/network/interfaces:

$ sudo apt-get install ifupdown bridge-utils
$ sudo systemctl stop networkd-dispatcher
$ sudo systemctl disable networkd-dispatcher
$ sudo systemctl mask networkd-dispatcher
$ sudo apt-get purge nplan netplan.io

В качестве DHCP/DNS-сервера выберем dnsmasq:

$ sudo apt-get install dnsmasq

Так как мы будем запускать и настраивать процесс dnsmasq через хук post-up, не забудьте отключить демон при загрузке:

$ sudo sed -i "s/^ENABLED=1$/ENABLED=0/g" /etc/default/dnsmasq

Напишем предварительную конфигурацию сетевых интерфейсов в соответствии с диаграммой, включая минимальную настройку dnsmasq:

$ cat /etc/network/interfaces
# Loopback
auto lo
iface lo inet loopback
# WAN interface
auto enp1s0
iface enp1s0 inet dhcp
# Bridge (LAN)
auto br0 
iface br0 inet static
    address 192.168.1.1
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255 
    bridge_ports enp2s0
    post-up /usr/sbin/dnsmasq 
              --pid-file=/var/run/dnsmasq.$IFACE.pid 
              --dhcp-leasefile=/var/lib/misc/dnsmasq.$IFACE.leases 
              --conf-file=/dev/null 
              --interface=$IFACE --except-interface=lo  
              --bind-interfaces 
              --dhcp-range=192.168.1.10,192.168.1.150,24h               
    pre-down cat /var/run/dnsmasq.$IFACE.pid | xargs kill

Документация /etc/network/interfaces здесь

Как вы могли заметить по секции post-up, dnsmasq стартует, как только поднимается мост. Его настройка выполняется только аргументами командной строки (--conf-file=/dev/null), и процесс остановится при отключении интерфейса.

В поле bridge_ports специально не указан интерфейс wlp5s0, потому что hostapd добавит его к мосту автоматически (brctl может отказаться делать это, прежде чем запущен hostapd для изменения режима интерфейса).

См. документацию по dnsmasq.

Теперь можно перезапустить сеть (sudo service networking restart) или просто перезагрузиться, чтобы проверить правильность настройки конфигурации сети.

Обратите внимание: хотя мы в данный момент можем получить DHCP от enp2s0, но у нас не будет ни беспроводной связи (позже подробнее об этом), ни доступа в интернет (см. ниже).

Маршрутизация

На этом этапе нужно маршрутизировать пакеты между интерфейсами LAN (enp2s0) и WAN (enp1s0) и включить трансляцию сетевых адресов.

Включить переадресацию пакетов легко:

$ sudo sysctl -w net.ipv4.ip_forward=1
$ echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

Последняя команда гарантирует, что конфигурация сохранится до следующей перезагрузки.

Трансляция сетевых адресов — другое дело, обычно придётся разбираться (или, скорее, бороться) с iptables. К счастью, каменный век давно закончился, и ребята из FireHol приложили немало усилий, добавив необходимый уровень абстракции:

$ sudo apt-get install firehol

FireHOL — это язык для защищённого файрвола с сохранением состояния, его конфигурация легко понятна и доступна. Больше не надо писать операторы iptables: конфигурационный файл сам транслируется в операторы iptables и применяется как надо. Никакого демона в фоновом режиме.

Включение трансляции сетевых адресов для интерфейсов локальной сети с добавлением минимальных правил файрвола делается элементарно:

$ cat /etc/firehol/firehol.conf 
version 6
# Accept all client traffic on WAN
interface enp1s0 wan
    client all accept
# Accept all traffic on LAN
interface br0 lan
    server all accept
    client all accept
# Route packets between LAN and WAN
router lan2wan inface br0 outface enp1s0
    masquerade
    route all accept

FireHOL написан людьми для людей, документация здесь.

Можете проверить настройки, вручную запустив firehol (sudo firehol start) и подключив ноутбук к порту LAN: теперь вы сможете выйти интернет, если подключен порт WAN.

Перед перезагрузкой не забудьте отредактировать /etc/default/firehol, чтобы разрешить запуск FireHol при загрузке:

$ sudo sed -i -E "s/^START_FIREHOL=.+$/START_FIREHOL=YES/g" /etc/default/firehol

Не буду вдаваться в детали всего синтаксиса firehol, конфигурационный файл сам себя объясняет, рекомендую обратиться к документации в случае более сложной настройки. Если вам действительно интересно, что firehol сотворил с iptables, просто введите sudo firehol status в командной строке.

Беспроводная точка доступа

Очевидно, управлять точкой доступа будем с помощью hostapd:

$ sudo apt-get install hostapd

Ниже вы найдёте минимальный и почти не требующий пояснений файл конфигурации 802.11 n/2.4 Ghz/WPA2-AES:

$ cat /etc/hostapd/hostapd-simple.conf 
#### Interface configuration ####
interface=wlp5s0
bridge=br0
driver=nl80211
##### IEEE 802.11 related configuration #####
ssid=iCanHearYouHavingSex
hw_mode=g
channel=1
auth_algs=1
wmm_enabled=1
##### IEEE 802.11n related configuration #####
ieee80211n=1
##### WPA/IEEE 802.11i configuration #####
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=YouCantGuess

Документацию hostpad.conf см. в /usr/share/doc/hostapd/examples/hostapd.conf.

Описанную конфигурацию можно протестировать вручную:

$ sudo hostapd /etc/hostapd/hostapd-simple.conf

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

Вот ваш окончательный /etc/network/interfaces:

$ cat /etc/network/interfaces
# Loopback
auto lo
iface lo inet loopback
# WAN interface
auto enp1s0
iface enp1s0 inet dhcp
# Bridge (LAN)
auto br0 
iface br0 inet static
    address 192.168.1.1
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255 
    bridge_ports enp2s0
    post-up /usr/sbin/hostapd 
              -P /var/run/hostapd.$IFACE.pid 
              -B /etc/hostapd/hostapd-simple.conf
    post-up /usr/sbin/dnsmasq 
              --pid-file=/var/run/dnsmasq.$IFACE.pid 
              --dhcp-leasefile=/var/lib/misc/dnsmasq.$IFACE.leases 
              --conf-file=/dev/null 
              --interface=$IFACE --except-interface=lo  
              --bind-interfaces 
              --dhcp-range=192.168.1.10,192.168.1.150,24h               
    pre-down cat /var/run/dnsmasq.$IFACE.pid | xargs kill
    pre-down cat /var/run/hostapd.$IFACE.pid | xargs kill

Установка точки доступа 802.11ac (5 ГГц)

Пассивное сканирование

Согласно документации Airetos AEX-QCA9880-NX, чипсет поддерживает 802.11ac, так что мы можем уйти из переполненных каналов 2,4 ГГц в райские 5 ГГц.

Посмотрим, какие частоты поддерживаются:

$ iw list
        ...
        Frequencies:
            * 2412 MHz [1] (20.0 dBm)
            * 2417 MHz [2] (20.0 dBm)
            * 2422 MHz [3] (20.0 dBm)
            * 2427 MHz [4] (20.0 dBm)
            * 2432 MHz [5] (20.0 dBm)
            * 2437 MHz [6] (20.0 dBm)
            * 2442 MHz [7] (20.0 dBm)
            * 2447 MHz [8] (20.0 dBm)
            * 2452 MHz [9] (20.0 dBm)
            * 2457 MHz [10] (20.0 dBm)
            * 2462 MHz [11] (20.0 dBm)
            * 2467 MHz [12] (disabled)
            * 2472 MHz [13] (disabled)
            * 2484 MHz [14] (disabled)
        ...
        Frequencies:
            * 5180 MHz [36] (17.0 dBm) (no IR)
            * 5200 MHz [40] (17.0 dBm) (no IR)
            * 5220 MHz [44] (17.0 dBm) (no IR)
            * 5240 MHz [48] (17.0 dBm) (no IR)
            * 5260 MHz [52] (23.0 dBm) (no IR, radar detection)
            * 5280 MHz [56] (23.0 dBm) (no IR, radar detection)
            * 5300 MHz [60] (23.0 dBm) (no IR, radar detection)
            * 5320 MHz [64] (23.0 dBm) (no IR, radar detection)
            * 5500 MHz [100] (23.0 dBm) (no IR, radar detection)
            * 5520 MHz [104] (23.0 dBm) (no IR, radar detection)
            * 5540 MHz [108] (23.0 dBm) (no IR, radar detection)
            * 5560 MHz [112] (23.0 dBm) (no IR, radar detection)
            * 5580 MHz [116] (23.0 dBm) (no IR, radar detection)
            * 5600 MHz [120] (23.0 dBm) (no IR, radar detection)
            * 5620 MHz [124] (23.0 dBm) (no IR, radar detection)
            * 5640 MHz [128] (23.0 dBm) (no IR, radar detection)
            * 5660 MHz [132] (23.0 dBm) (no IR, radar detection)
            * 5680 MHz [136] (23.0 dBm) (no IR, radar detection)
            * 5700 MHz [140] (23.0 dBm) (no IR, radar detection)
            * 5720 MHz [144] (23.0 dBm) (no IR, radar detection)
            * 5745 MHz [149] (30.0 dBm) (no IR)
            * 5765 MHz [153] (30.0 dBm) (no IR)
            * 5785 MHz [157] (30.0 dBm) (no IR)
            * 5805 MHz [161] (30.0 dBm) (no IR)
            * 5825 MHz [165] (30.0 dBm) (no IR)
       ...

В приведённом списке видим, что чипсет поддерживает каналы 1−14 (2,4 ГГц) и каналы 36−165 (5 ГГц), но вы заметили флаг no IR?

Флаг no IR обозначает no-initiating-radiation (то есть пассивное сканирование). Это значит, что данный режим запрещён в случае, когда устройство первым инициирует излучение (включая маяки). Другими словами, нельзя запускать точку доступа на этих каналах!

Беспроводной машрутизатор своими руками - 9

Нормативные требования

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

Но погодите!

Я живу в США, а по ссылке написано, что я имею право инициировать излучение на каналах 36-48, так в чём дело? Посмотрим, какой домен регулирования используется в данный момент:

$ iw reg get
country 00: DFS-UNSET
        (2402 - 2472 @ 40), (N/A, 20), (N/A)
        (2457 - 2482 @ 40), (N/A, 20), (N/A), NO-IR
        (2474 - 2494 @ 20), (N/A, 20), (N/A), NO-OFDM, NO-IR
        (5170 - 5250 @ 80), (N/A, 20), (N/A), NO-IR
        (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, NO-IR
        (5490 - 5730 @ 160), (N/A, 20), (0 ms), DFS, NO-IR
        (5735 - 5835 @ 80), (N/A, 20), (N/A), NO-IR
        (57240 - 63720 @ 2160), (N/A, 0), (N/A)

Выдача показывает, что сейчас активен мировой домен (или не установлен), то есть минимальные значения, разрешённые в каждой стране.

К сожалению, вручную установить домен sudo iw reg set не получится, потому что домен зашит в EEPROM:

$ dmesg | grep EEPROM
[   12.123068] ath: EEPROM regdomain: 0x6c
Беспроводной машрутизатор своими руками - 10

Патч!

К счастью, нормативные требования обрабатываются на уровне драйвера, так что их можно легко изменить: находим патч в исходниках Open-WRT.

Прежде всего, не забудьте подключить репозиторий исходного кода из /etc/apt/sources.list:

$ cat /etc/apt/sources.list
...
deb-src http://us.archive.ubuntu.com/ubuntu/ bionic main restricted 
...

Затем подготовьте окружение, установив необходимые зависимости:

$ sudo apt-get install build-essential fakeroot
$ sudo apt-get build-dep linux

Скачайте источники своего ядра:

$ apt-get source linux

Поскольку оригинальный патч Open-WRT нельзя применить «как есть» к дереву ядра Ubuntu из-за тонких различий в системе сборки, пришлось его исправить:

$ VERSION=$(uname -r)
$ cd linux-${VERSION%%-*}
$ wget -O - https://gist.github.com/renaudcerrato/02de8b2e8dc013bc71326defd2ef062c/raw/a2db325e520e6442c8c12f7599d64ac1b7596a3e/402-ath_regd_optional.patch | patch -p1 -b

Всё готово для сборки:

$ fakeroot debian/rules clean
$ fakeroot debian/rules binary-generic

Если проблем нет, то теперь можно установить исправленное ядро поверх предыдущего:

$ cd ..
$ sudo dpkg -i linux*.deb

Перезагрузка, и вуаля:

$ sudo iw reg set US
$ iw list
...
      Frequencies:
          * 5180 MHz [36] (17.0 dBm)
          * 5200 MHz [40] (17.0 dBm)
          * 5220 MHz [44] (17.0 dBm)
          * 5240 MHz [48] (17.0 dBm)
          * 5260 MHz [52] (23.0 dBm) (radar detection)
          * 5280 MHz [56] (23.0 dBm) (radar detection)
          * 5300 MHz [60] (23.0 dBm) (radar detection)
          * 5320 MHz [64] (23.0 dBm) (radar detection)
          * 5500 MHz [100] (23.0 dBm) (radar detection)
          * 5520 MHz [104] (23.0 dBm) (radar detection)
          * 5540 MHz [108] (23.0 dBm) (radar detection)
          * 5560 MHz [112] (23.0 dBm) (radar detection)
          * 5580 MHz [116] (23.0 dBm) (radar detection)
          * 5600 MHz [120] (23.0 dBm) (radar detection)
          * 5620 MHz [124] (23.0 dBm) (radar detection)
          * 5640 MHz [128] (23.0 dBm) (radar detection)
          * 5660 MHz [132] (23.0 dBm) (radar detection)
          * 5680 MHz [136] (23.0 dBm) (radar detection)
          * 5700 MHz [140] (23.0 dBm) (radar detection)
          * 5720 MHz [144] (23.0 dBm) (radar detection)
          * 5745 MHz [149] (30.0 dBm)
          * 5765 MHz [153] (30.0 dBm)
          * 5785 MHz [157] (30.0 dBm)
          * 5805 MHz [161] (30.0 dBm)
          * 5825 MHz [165] (30.0 dBm)
...

Во избежание автоматического обновления может потребоваться закрепить версию ядра Linux.

Конфигурация

Новый файл конфигурации hostapd будет довольно простым: hw_mode=a включает диапазоны 5 ГГц, а ieee80211ac=1 включает 802.11ac (VHT). Опция ieee80211d=1 с указанием country_code=US определяет нормативный домен, под которым мы работаем.

Чтобы максимально использовать пропускную способность, ht_capab и vht_capab должны отражать возможности оборудования:

$ iw list
...
    Band 1:
      Capabilities: 0x19e3
              RX LDPC
              HT20/HT40
              Static SM Power Save
              RX HT20 SGI
              RX HT40 SGI
              TX STBC
              RX STBC 1-stream
              Max AMSDU length: 7935 bytes
              DSSS/CCK HT40
...
    Band 2:
      VHT Capabilities (0x338001b2):
              Max MPDU length: 11454
              Supported Channel Width: neither 160 nor 80+80
              RX LDPC
              short GI (80 MHz)
              TX STBC
              RX antenna pattern consistency
              TX antenna pattern consistency

С учётом этого вот окончательный hostapd.conf:

$ cat /etc/hostapd/hostapd.conf
#### Interface configuration ####
interface=wlp5s0
bridge=br0
driver=nl80211
##### IEEE 802.11 related configuration #####
ssid=iCanHearYouHavingSex
hw_mode=a
channel=0
auth_algs=1
wmm_enabled=1
country_code=US
ieee80211d=1
ieee80211h=0
##### IEEE 802.11n related configuration #####
ieee80211n=1
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CK-40][LDPC][MAX-AMSDU-7935]
##### IEEE 802.11ac related configuration #####
ieee80211ac=1
vht_capab=[MAX-MPDU-11454][RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][MAX-A-MPDU-LEN-EXP7][TX-ANTENNA-PATTERN][RX-ANTENNA-PATTERN]
vht_oper_chwidth=1
##### WPA/IEEE 802.11i configuration #####
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=YouCantGuess

Документацию hostpad.conf см. в /usr/share/doc/hostapd/examples/hostapd.conf.

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

Настройка виртуального SSID с помощью hostapd

Независимо от того, хотите вы настроить гостевую точку доступа или выделенную беспроводную сеть для своего VPN, в какой-то момент придётся настроить виртуальный SSID.

Диаграмма

Исходя из текущей конфигурации, вот обновлённая диаграмма, что мы хотим получить. Предполагая, что wlp5s0 является физическим беспроводным интерфейсом, виртуальный SSID будет работать на виртуальном интерфейсе wlan0, используя собственную подсеть 192.168.2.0/24:

Беспроводной машрутизатор своими руками - 11

Подготовка

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

$ iw list
    ...
    valid interface combinations:
    * #{ AP, mesh point } <= 8,
    total <= 8, #channels <= 1, STA/AP BI must match
    ...

Как видим, чипсет поддерживает до восьми точек доступа на одном канале. Это означает, что можно настроить до семи виртуальных SSID, и все они будут работать на одном канале.

Сетевой интерфейс

Согласно документации в hostapd.conf, существует строгая связь между MAC-адресом физического интерфейса и BSSID виртуальных интерфейсов:

hostapd will generate a BSSID mask based on the BSSIDs that are configured. hostapd will verify that dev_addr & MASK == dev_addr. If this is not the case, the MAC address of the radio must be changed before starting hostapd. If a BSSID is configured for every secondary BSS, this limitation is not applied at hostapd and other masks may be used if the driver supports them (e.g., swap the locally administered bit)

BSSIDs are assigned in order to each BSS, unless an explicit BSSID is specified using the 'bssid' parameter.

If an explicit BSSID is specified, it must be chosen such that it:
— results in a valid MASK that covers it and the dev_addr
— is not the same as the MAC address of the radio
— is not the same as any other explicitly specified BSSID

Чтобы выполнить эти требования и позволить hostapd автоматически назначать BSSID виртуального интерфейса(ов), обновим MAC-адрес физического беспроводного интерфейса, обнулив четыре наименее значимых бита. Этого хватит на 15 виртуальных BSSID — намного больше, чем необходимо.

Сначала определим текущий MAC-адрес:

$ ip addr show wlp5s0 | grep link | awk '{print $2}'
44:c3:06:00:03:eb

Если очистить четыре последних бита и установить бит U/L, получится MAC-адрес 46:c3:06:00:03:e0.

Теперь обновим конфигурацию, чтобы установить правильный MAC-адрес прямо перед загрузкой интерфейса, а также объявить виртуальный беспроводной интерфейс в соответствии с нашей диаграммой:

$ cat /etc/network/interfaces
...
# Physical Wireless
auto wlp5s0
iface wlp5s0 inet manual
    pre-up ip link set dev wlp5s0 address 46:c3:06:00:03:e0
# Virtual Wireless
allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.2.1
    network 192.168.2.0
    netmask 255.255.255.0
    broadcast 192.168.2.255
    post-up /usr/sbin/dnsmasq 
		--pid-file=/var/run/dnsmasq-wlan0.pid 
		--conf-file=/dev/null 
		--interface=wlan0 --except-interface=lo 
		--bind-interfaces 
		--dhcp-range=192.168.2.10,192.168.2.150,24h
    post-down cat /var/run/dnsmasq-wlan0.pid | xargs kill
...

Отлично. Я использую dnsmasq как DHCP-сервер — не стесняйтесь заменить на то, что вам нравится. Обратите внимание, что для корректной работы виртуального интерфейса требуется allow-hotplug.

Конфигурация точки доступа

Теперь самое простое: добавим виртуальный SSID к текущей конфигурации hostapd. Просто добавьте это в конец существующего файла hostapd.conf:

$ cat /etc/hostapd/hostapd.conf
...
### Virtual SSID(s) ###
bss=wlan0
ssid=MyVirtualSSID
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=you_cant_guess

В приведённом примере я применил шифрование WPA2, но тут доступно большинство опций радиоинтерфейса (например, channel). Можно добавить больше виртуальных SSID, просто дописав строчки в конфигурационном файле, согласно объявленным и правильно настроенным виртуальным интерфейсам.

Теперь перезагрузимся — и видим свой новый SSID вместе с новым беспроводным интерфейсом (обратите внимание на MAC-адрес):

$ ip addr show wlan0 | grep link | awk '{print $2}'
46:c3:06:00:03:e1

Вот и всё, ребята!

Автор: m1rko

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js