Точка доступа WiFi на FreeBSD

()

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

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

Краткий план: добавить в сервер WiFi-адаптер, настроить программную точку доступа (hostapd), объединить в мост (bridge) сетевые интерфейсы точки доступа и проводной локальной сети, и наконец поправить конфигурацию pf.

В качестве сетевого адаптера мы будем использовать TP-Link TL-WN781ND, который отличается низкой ценой, хорошей поддержкой во FreeBSD и за несколько лет эксплуатации показал себя исключительно стабильным и беспроблемным решеним.

WiFi-адаптер TP-Link TL-WN871ND

Ещё одно небольшое уточнение: за прошедшие восемь лет ОС на сервере была пошагово обновлена до FreeBSD 11.1: сервис "named" был удалён из базовой поставки и теперь предоставляется пакетом "bind912", а dhcp-сервер - пакетом "isc-dhcp44-server". В остальном конфигурация не изменилась (и даже сами файлы конфигурации не изменны, разве что настройки "named" переместились из "/etc/namedb" в "/usr/local/etc/namedb").

Приступаем к настройке. Начнём с точки доступа. Добавим в "/etc/rc.conf" строки:

# Связываем сетевой интерфейс wlan0 с физическим ath0
wlans_ath0="wlan0"
# wlan0 будет работать в режиме точки доступа
create_args_wlan0="wlanmode hostap"
# Разрешаем запуск демона hostapd
hostapd_enable="YES"

Следующим шагом нужно сконфигурировать демон программной точки доступа (hostapd). Для этого нужно создать файл "/etc/rc.conf" следующего содержания:

# Имя интерфейса
interface=wlan0

# Уровень отладки
debug=7

# Сокет, через который можно будет управлять демоном
ctrl_interface=/var/run/hostapd

# Группа пользователей, которая будет иметь возможность управления
ctrl_interface_group=wheel

# Видимое имя сети
ssid=best-company

# Будем использовать шифрование WPA2
wpa=2

# Пароль нашей сети
wpa_passphrase=p4330wrd

# Протокол управления ключами
wpa_key_mgmt=WPA-PSK

# Канал, на котором будет работать наша точка доступа.
channel=7

На этом настройка hostapd закончена и можно переходить к созданию моста. Напомним что у нас два проводных интерфейса: "em0" смотрит в локальную сеть и "le0" смотрит в интернет. Мы будем объединять "em0" и "wlan0" в мост "bridge0".

Сначала надо убрать (или закомментировать) в файле "/etc/rc.conf" связанные с "em0" настройки. Затем добавляем в этот же файл строки:

# Виртуальные интерфейсы, которые нам надо создать
cloned_interfaces="bridge0"

# Описываем настройки bridge0
ifconfig_bridge0="inet 172.31.255.1 netmask 255.255.255.0 addm em0 addm wlan0 up"

# Входящие в мост интерфейсы должны быть подняты
ifconfig_em0="up"
ifconfig_wlan0="up"

Приступаем к настройке DHCP-сервера. Здесь надо только изменить имя интерфейса, на котором слушает DHCP-сервер. За это отвечает параметр "dhcpd_ifaces" в файле "/etc/rc.conf":

dhcpd_ifaces="bridge0"

В последнюю очередь меняются настройки файрволла. По сравнению с исходной конфигурацией изменений почти нет. Только в качестве внутреннего интерфейса в файле "/etc/pf.rules" теперь надо указывать "bridge0":

if_int = "bridge0"

На этом изменения в конфигурации заканчиваются и приходит время перезагрузить сервер. После перезагрузки всё должно работать: можно подключиться к точке доступа с помощью любого гаджета с WiFi и выйти в интернет или обратиться к компьютерам в локальной сети. Если что-то не работает как надо следут смотреть и анализировать логи:)

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

Ключевые слова: freebsd, hotspot, ap, bridge, gate, gateway, pf.

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

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

Новый комментарий

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




© 2006-2024 Вадим Калинников aka MooSE
Политика конфиденциальности