Беспроводная точка доступа, используя Linux
Что ж, вот и первая статья из обещанной серии.
Первое, что я буду делать — настраивать Software AP, или беспроводную сеть на базе компьютера. На этом этапе, конечно, нужен доступ к консоли сервера с правами рута. Кроме того, нужно также подключение к интернету НЕ через внутреннюю вайфай-карточку — кабелем, через 3G-модем, короче, как пожелаете, но только не по вайфаю, который мы будем использовать для создания беспроводной сети. Я на первое время подключил и сервер, и ноут, с которого управлял сервером, в одну сеть по кабелю — так надёжнее всё-таки. Буду использовать пакет hostapd — он довольно известен как надёжное решение и мануалов под него достаточно, а для DHCP и DNS серверов буду использовать dnsmasq — решение как раз под домашние сети, его использует DD-WRT, не удивлюсь, если кто-то ещё.
Самый первый шаг, конечно же
Установка:
Версия:
Мда, в исходниках уже есть 2.0. Такой он, Debian stable. Но на самом деле это нам не особо помешает — версия 1.0 у меня работает достаточно стабильно.
Настройка
Отредактировать файл /etc/default/hostapd.conf. В нём раскомментировать строку вида
Это путь к файлу конфигурации демона hostapd.
Затем идем дальше — редактировать /etc/hostapd/hostapd.conf
. Предоставлю содержимое моего файла конфигурации. Предупреждаю, парсер конфигурационных опций у этого демона очень чувствителен и ругается даже на пустые строки с пробелом. На комментарии не ругается.
Сетевой интерфейс беспроводной карты
Драйвер сетевой карты — обычно для hostapd отлично работает nl80211, не вижу смысла менять, да и говорят, что он работает в большинстве случаев.
Название точки доступа, т.н. SSID
Режим работы сетевой карты — 801.11b/g/n. На самом деле — там всегда должно оставаться g, даже если карта способна на n, для настройки режима n придётся кое-что поменять, смотрите дальше:
Беспроводной канал — от 1 до 13. Для лучшей производительности рекомендуются 1, 6 или 11 канал.
Версия WPA
Пароль беспроводной точки
Дополнительные настройки WPA2:
Следующая опция устанавливает блокировку MAC-адресов. Пока не знаю, как это настроить, да и штука довольно бесполезная, но все говорят, что без блокировки эту опцию нужно выставить в ноль — что я и сделал:
Полный конфиг одним блоком для копипаста в файл:
Конфиг автоматически проверяется перед запуском, так что — смело пробуйте запустить hostapd. Команды управления:
Напомню — также в Debian можно использовать команды вида service hostapd start, что легче в написании.
Пару шагов для устойчивости
- Нельзя забывать, что для шифрования WPA/WPA2 пароль должен быть не короче 8 символов. Если поменять пароль на лету, используя SSH сессию через беспроводной канал, можно внезапно отрезать себя от сервера — hostapd не захочет запускаться и единственное средство связи с сервером будет потеряно. Работает — не трогай, ну а если трогаешь — трогай осторожно.
- В случае многопользовательской системы советую поставить права чтения файлов вида 700, чтобы простые пользователи не могли узнать пароль для точки доступа — если вас это волнует, конечно.
Что ещё могу сказать? С мобильными устройствами проблем нет, с ноутбуком под Windows 7 — крайне редко (примерно раз-два в месяц) не получается подключиться к точке. Лечится командой service hostapd restart, велика вероятность, что в новых релизах эта проблема убрана — есть версия hostapd 2.0.0, но компилировать и ставить её я пока что не пытался.
Пока всё. К точке можно попробовать подключиться, но… Для успешного подключения к точке доступа нужен DHCP сервер, без него к точке полноценно не подключишься — те же операционные системы не дадут этого сделать, поскольку без получения адреса само подключение не имеет особого смысла. Вот его и настроим!
Когда я только начинал учиться настраивать сервера под свои нужды, первое, на что я тогда я наткнулся — это пакет isc-dhcp-server, его я и планировал предложить, и статья уже была готова, но… Я нашёл dnsmasq, и моя жизнь изменилась в лучшую сторону. Dnsmasq — это и кэширующий DNS, и DHCP сервер со своим набором различных фич. Как только я заглянул в его конфиг, мое зрение улучшилось, все мысли в мозгу внезапно стали упорядоченными и я достиг просветления. Реально, конфиг очень простой и понятный. Но пока подготавливаем площадку для работы dnsmasq. Что же делать?
Придумать, как будут выглядеть адреса в нашей локальной сети. Я выбрал адреса типа 192.168.51.x.
Настроить сетевой интерфейс, на котором будет работать dnsmasq. На самом деле — очень важный шаг, который пропускают многие в своих мануалах по настройке DHCP-серверов. Дело в том, что компьютеру, на котором работает DHCP-сервер, необходимо прописать статический адрес — кто выдаст адрес DHCP-серверу, если он сам не может запуститься без адреса, а адрес себе он выдать не может, потому что не запущен?
Итак, открываем для редактирования файл /etc/network/interfaces и добавляем туда абзац вида:
Сохраняем и перезапускаем наш сетевой интерфейс, на котором настроен DHCP:
Проверяем состояние, сверяем настройки с теми, что должны быть:
Нужно удалить любые DNS и DHCP серверы, чтобы dnsmasq мог спокойно запуститься — иначе выдаёт ошибку. У меня были установлены bind9 и isc-dhcp-server, пришлось избавиться от них. Если работаем по SSH из сети, в которой раньше адреса раздавал покойный DHCP-сервер, не перезагружаемся — выдавать адреса уже некому.
Нужно создать условия для работы сервера — создать пользователя для того, чтобы под ним запускать dnsmasq, прописать в системных настройках DNS-сервера, к которым dnsmasq будет обращаться и ещё пару мелочей.
Прописываем DNS сервера Гугла. Правда, первой строчкой у нас будет localhost. Это сделано для того, чтобы остальные системные приложения на нашем же сервере, когда им надо получить адрес от DNS-сервера, обращались сначала к dnsmasq, а не к Гуглу. Ну а dnsmasq достаточно умён, чтобы игнорировать эту строчку:
Нужно защитить это файл от перезаписи при каждом запуске системы. Перезаписывает его dhclient, если что. Честно говоря, блокировка от записи — лишь один из способов того, как не допустить перезапись =) Есть и другие, но этот самый простой:
Что же, если вы по каким-либо причинам считаете блокирование файла неверным путём или также хотите использовать DNS, которые столь настойчиво предлагает dhclient? Тогда, как советует @merlin-vrn, нужно использовать программу resolvconf.
Настройка resolvconf
Если пакет resolvconf ещё не установлен, устанавливаем. Единственное, что нужно для того, чтобы прописать статический адрес DNS для системы — отредактировать /etc/resolvconf/resolv.conf.d/base, вписав туда всё, что мы бы вписали в /etc/resolv.conf
:
service resolvconf reload
— готово!
Добавляем группу и пользователя:
Ставим Dnsmasq, он запускается и готов к работе, но мы его отключаем — ещё не настроен, нечего ему тут делать:
Чистим оригинальный файл от стандартного конфига:
Ну а теперь мы готовы настраивать. Скажу сразу — у dnsmasq много разных опций, которые я при написании статьи подробно описывал в комментариях… Пока не понял, что топик раздулся до неприличных и нечитаемых размеров, как будто недостаточно того, что статья и так переполнена текстом и отформатирована, как кусок незнамо чего. Поэтому — я оставлю конфиг с самыми важными без длинных комментариев и всяких дополнительных опций, а конфиг с дополнительными опциями будет под спойлером.
Расширенные опции:
Ага, сервер настроен. Запускаем:
и смотрим на наличие ошибок в выводе команды. Если нет — всё отлично! Пробуем что-нибудь подключить к нашей точке и смотрим, как выдаются IP-адреса, пингуем и проверяем DNS. Файл со списком выданных адресов: /var/lib/misc/dnsmasq.leases
.
В следующей статье — подключение 3G-модема и конфигурация простого, но стабильного NAT/firewall на iptables. Удачной настройки!
Критика по содержанию, удобочитаемости и форматированию статьи более, чем уместна.
Источник: https://habrahabr.ru/post/188274/