Двухдиапазонная (2.4GHz/5GHz) точка доступа WiFi на домашнем сервере

()

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

Если в качестве точки доступа используется домашний медиа-сервер то либо в нём есть распаянный прямо на материнской плате WiFi-адаптер, либо в него устанавливается самый дешёвый адаптер с PCI-интерфейсом. Оба этих варианта обычно так же ограничены в работе только диапазоном 2.4GHz.

По мере того как ваши соседи обзаводятся своими WiFi точками доступа (как правило так же работающими в диапазоне 2.4GHz) взаимных помех становится всё больше и качество сигнала в разных точках помещения становится всё хуже.

Посмотреть на соседние точки доступа и оценить их взаимное влияние можно например с помощью приложения Wifi Analyzer для Android или Wifi Analyzer для Windows (несмотря на одинаковое названия это два совершенно разных приложения от разных разработчиков). Скорее всего картина будет выглядеть примерно так (или даже хуже):

Оценка использования WiFi-диапазона 2.4GHz с помощью Wifi Analyzer для Windows

Как быть в такой ситуации? Самый очевидный ответ - начать плавно "переползать" на диапазон 5GHz. Однако скорее всего не все имеющиеся гаджеты поддерживают этот диапазон, потому стоит использовать двухдиапазонную точку доступа. Если используется обычный бытовой роутер то чаще всего его просто меняют на новый. В случае же использования домашнего сервера можно либо заменить существующий WiFi-адаптер, либо поставить дополнительный.

Рассмотрим второй случай детальнее: домашний сервер под управлением Ubuntu 16.04, интерфейс br0 которого обслуживает локальную сеть. Интерфейс br0 включает в себя проводной адаптер "eth0", распаянный на материнской плате и беспроводной PCI-адаптер "wlan0" (Модель: TP-Link TL-WN781ND). Для работы в диапазоне 5GHz мы добавим USB-адаптер Netis WF2150, который виден в системе как "wlx048d39274cbb".

По сути задача сводится к запуску двух копий демона hostapd с разными конфигурационными файлами на разных интерфейсах. Единственная сложность: стандартный init-скрипт идущий в пакете hostapd на Debian и Ubuntu не поддерживает запуск более одной копии процесса. Можно конечно создать копию этого скрипта под другим именем, но мы используем более элегантное решение. В качестве бонуса мы получим автоматический запуск/остановку второго процесса при подключении/отключении USB-адаптера.

Первым делом останавливаем демон hostapd и комментируем все строки в файле "/etc/default/hostapd":

service hostapd stop && sed 's/^/#/' -i /etc/default/hostapd

Далее копируем наш старый файл конфигурации hostapd как "/etc/hostapd/hostapd_wlan0.conf" либо создаём новый примерно следующего содержания:

# Имя точки доступа
ssid=home-of-moose

# Пароль и опции шифрования
wpa_passphrase=w1f1p4ssw0rd
wpa=2
wpa_pairwise=CCMP

# Используемый канал
channel=3

# Используемый интерфейс
interface=wlan0

# В этот бридж надо включить наш интерфейс
bridge=br0

# Поддерживаемые адаптером возможности (см. вывод команды iw list)
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][RX-STBC1][DSSS_CCK-40]

# Используемый режим
# Данная комбинация описывает 802.11n в 2.4GHz
hw_mode=g
ieee80211n=1

# Остальные параметры по вкусу.
# Уточнить значение того или иного параметра можно в документации.

country_code=RU
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ieee80211d=1
beacon_int=100
dtim_period=2
max_num_sta=255
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0

Затем создаём копию этого файла под именем "/etc/hostapd/hostapd_wlx048d39274cbb.conf" и меняем как минимум следующие строки:

# Используемый интерфейс
#interface=wlan0
interface=wlx048d39274cbb

# Переходим в диапазон 5GHz
#hw_mode=g
hw_mode=a

# Канал должен быть из диапазона 5GHz
#channel=3
channel=153

# Поддерживаемые возможности интерфейса (из вывода команды iw list)
#ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][RX-STBC1][DSSS_CCK-40]
ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40][RX-STBC1]

# Если имя и пароль одинаковы то клиенты сами решат в каком диапазоне подключаться
# Если же разные то можно явно выбрать диапазон подключения
#ssid=home-of-moose
ssid=home-of-moose-5ghz

Следующим шагом открываем файл "/etc/network/interfaces" и добавляем в него следующие строки:

# Настройки PCI-интерфейса
# Интерфейс будет настраиваться автоматически при запуске сервера
auto wlan0
iface wlan0 inet static
	# Интерфейс требует запуска hostapd с указанным конфигом
	hostapd /etc/hostapd/hostapd_wlan0.conf
	# Совсем не указывать адрес мы не можем
	# Но в реальности адрес не нужен, так как интерфейс будет включен в бридж br0
	address 0.0.0.0
	# Бридж br0 должен быть поднят до запуска этого интерфейса
	pre-up ifup br0

# Настройки USB-интерфейса
# Он будет настраиваться автоматически при подключении адаптера
allow-hotplug wlx048d39274cbb
iface wlx048d39274cbb inet static
	hostapd /etc/hostapd/hostapd_wlx048d39274cbb.conf
	address 0.0.0.0
	pre-up ifup br0

Запускаем интерфейс wlan0:

ifup wlan0

Подключаем USB-адаптер и он должен автоматически сконфигурироваться. Убедиться что всё хорошо очень просто: в списке интерфейсов входящих в br0 должны быть видны оба наших WiFi-интерфейса. Для этого выполняем команду:

brctl show br0

Вывод должен выглядеть примерно вот так:

bridge name     bridge id               STP enabled     interfaces
br0             8000.048d39274cbb       no              eth0
                                                        wlan0
                                                        wlx048d39274cbb

Далее можно взять любой гаджет с поддержкой WiFi 5GHz, подключиться к новой точке доступа и наслаждаться отсутствием помех:) Если запустить Wifi Analyzer то скорее всего картина будет выглядеть примерно вот так:

Оценка использования WiFi-диапазона 5GHz с помощью Wifi Analyzer для Windows

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

На этом всё. Приятной работы!

Ключевые слова: hostapd, wifi, 5ghz, hotspot.

Подписаться на обновления: RSS-лента Telegram канал Twitter

Комментарии:

Anonymous 2018-02-14 13:07:32 (#)

Пара моментов:

1. Может стоит упомянуть для читающих, что показания Wifi Analyzer не покажут вам если где-то в этом диапазоне фонит что-то (да хоть микроволновка) помимо вайфай точек.
2. Насколько я понимаю, 5 Ггц это конечно хорошо, однако затухает сигнал быстрее чем у 2.4. Таким образом играет роль расположение этого сервера.

П.С. Откуда такая орава сетей в частном доме то?

MooSE 2018-02-14 14:24:06 (#)

1. Может стоит упомянуть для читающих, что показания Wifi Analyzer не покажут вам если где-то в этом диапазоне фонит что-то (да хоть микроволновка) помимо вайфай точек.
ну как правило такие шумы продолжаются не долго и в целом картину не сильно портят:)

2. Насколько я понимаю, 5 Ггц это конечно хорошо, однако затухает сигнал быстрее чем у 2.4. Таким образом играет роль расположение этого сервера.
Я думал это в тексте обозначить но в итоге тупо забыл:) Да, сигнал затухает быстрее, но отсутствие "конкурентов" на тех же частотах позволяет нормально работать даже со слабым сигналом. Т.е. затухание компенсируется отсутствием помех.

П.С. Откуда такая орава сетей в частном доме то?
Большая часть добивает с расположенной недалеко пятиэтажки. Да и не так уж много сетей на скрине:) Вот в панельной десятиэтажке доводилось наблюдать более полусотни сетей и вот это уже был трэш:)
Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2018 Вадим Калинников aka MooSE