Raspberry pi как точка доступа wifi
Я знаю, как сделать это классическим способом, как описано, например, в официальной документации по настройке Raspberry Pi в качестве точки доступа в автономной сети (NAT) . Но для этого нужно много разных компонентов, которые должны играть вместе, и каждый компонент должен быть настроен по-своему. Это сетевые (ifupdown) , dhcpcd , hostapd , dnsmasq и bridge-utils .
В настоящее время в Raspbian Stretch встроены все необходимые компоненты, поэтому нет необходимости устанавливать дополнительное программное обеспечение. Это может сильно упростить настройку.
Можно ли просто настроить Raspbian для работы в качестве точки доступа Wi-Fi без установки дополнительного программного обеспечения?
Мы говорим о точке доступа вместе с портом Ethernet eth0 .
Если вам нужна точка доступа вместе с клиентским подключением wlan0 к другой сети Wi-Fi (ретранслятор wlan), тогда смотрите на точку доступа как маршрутизатор / ретранслятор WiFi, опционально с мостом .
Можно настроить Raspbian Stretch в качестве точки доступа Wi-Fi без установки дополнительного программного обеспечения. Доступны все необходимые компоненты: сеть, DHCP-сервер и мостовые соединения поставляются с systemd-networkd, а wifi можно настроить с помощью wpa_supplicant . Соединение двух интерфейсов eth0 и wlan0 может быть выполнено с помощью маршрутизации или моста. Ниже приведены настройки для быстрой установки, а затем подробности. Сначала мы должны переключиться на systemd-networkd .
Протестировано с
Raspbian Buster Lite 2019-09-26 на Raspberry Pi 4B, обновлено в 2020-01-18.
Обновления сделаны с sudo apt update && sudo apt full-upgrade && sudo reboot .
Здесь вы можете найти последнюю протестированную ревизию для предыдущих версий Raspbian .
♦ Общая настройка
Переключитесь на systemd-networkd
Для получения более подробной информации смотрите (1) и Как настроить разрешение имен с помощью systemd-networkd . Вот только вкратце. Выполните эти команды:
Настройте wpa_supplicant в качестве точки доступа
Чтобы настроить wpa_supplicant в качестве точки доступа создать этот файл с вашими настройками для country= , ssid= , psk= и , возможно frequency= . Вы можете просто скопировать и вставить это в одном блоке в вашу командную строку, начиная с cat EOF и включая оба (разделитель EOF не получит часть файла):
Закончена общая настройка. Возвращаться.
♦ Настройка автономной точки доступа
Пример для этой настройки:
Выполните «Общие настройки», затем создайте следующий файл для настройки wlan0 . У нас есть только точка доступа. Устройство Ethernet не настроено.
Если вы хотите этого, перезагрузите компьютер.
Вот и все.
В противном случае, не нужно перезагружаться в это время.
♦ Настройка точки доступа и с eth0, без маршрутизации
Пример для этой настройки:
Настроить
Выполните «Настройка автономной точки доступа», затем создайте следующий файл для настройки eth0 .
Перезагрузка.
Вот и все.
Детали
Интерфейс eth0 подключается через Ethernet-кабель к интернет-маршрутизатору и получает его настройку по DHCP от интернет-маршрутизатора. Это не проблема, дать ему статический IP-адрес, например, Address=192.168.50.2 вместо DHCP=yes .
Без маршрутизации вы не можете войти в интернет с мобильного телефона. Вы можете войти в него только из самого RPi, чтобы получать обновления или что-то подобное.
♦ Настройка точки доступа и с eth0, с NAT (рекомендуется)
Пример для этой настройки:
Настроить
Выполните «Общие настройки», затем создайте следующие файлы для настройки wlan0 и eth0 . Если вы попробовали одну из предыдущих установок, вы можете просто перезаписать два файла. Убедитесь, что вы используете подсеть для точки доступа, отличную от подсети маршрутизатора. Маршрутизатор в этом примере не использует подсеть 192.168.4.0/24. Если вам нужна другая подсеть, просто измените адресную строку, например Address=192.168.5.1/24 .
Перезагрузка.
Вот и все.
Детали
Если у вас нет доступа к интернет-маршрутизатору, вы можете подделать его с помощью NAT (трансляция сетевых адресов), чтобы лгать, что все пакеты поступают с вашей точки доступа RasPi. Но это не чистая маршрутизация и имеет ограничения. Клиенты в подсети маршрутизатора не могут подключаться к клиентам по Wi-Fi. Но в большинстве случаев это не требуется, поэтому рекомендуется выполнить эту настройку, поскольку она упрощает настройку. Если вам необходимо подключиться к Wi-Fi-клиентам из сети маршрутизатора, вам придется использовать полную маршрутизацию, как описано в следующем разделе.
♦ Настройка точки доступа и с eth0, с маршрутизацией
Пример для этой настройки:
Настроить
Выполните «Общие настройки», затем создайте следующие файлы для настройки wlan0 и eth0 . Если вы попробовали одну из предыдущих установок, вы можете просто перезаписать два файла. Убедитесь, что вы используете разные подсети для точки доступа и сети маршрутизатора. Мы должны использовать статические IP-адреса, потому что мы должны использовать их в качестве шлюзов.
Чтобы завершить работу маршрутизации, вы должны установить статический маршрут в своем интернет-маршрутизаторе, чтобы он мог найти маршрут для обратных пакетов через RasPi к клиентам, подключенным через Wi-Fi к точке доступа. На большинстве интернет-маршрутизаторов вы можете установить статический маршрут, но как это сделать, зависит от модели. Это зависит от вас, чтобы выяснить это. Например ваш RasPi eth0 интерфейс имеет статический IP-адрес 192.168.50.2. Затем на вашем маршрутизаторе шлюз (следующий переход) - 192.168.50.2, сеть назначения - 192.168.4.0/24 (или 192.168.4.0 маска сети 255.255.255.0).
Для интернет-маршрутизатора это означает: «отправьте все пакеты, принадлежащие подсети 192.168.4.0/24 (сеть назначения от точки доступа), следующему маршрутизатору в моей подсети, точке доступа RasPi 192.168.50.2 (шлюзу). Он знает, куда идти».
♦ Настройка точки доступа с мостом
Пример для этой настройки:
Если у вас уже есть сеть Ethernet с DHCP-сервером и интернет-маршрутизатором, и вы хотите расширить ее с помощью точки доступа Wi-Fi, но с теми же IP-адресами, то вы используете мост. Это часто используется как восходящая связь с маршрутизатором.
Настроить
Выполните «Общие настройки», затем создайте следующие три файла для настройки сетевых интерфейсов. Если вы попробовали одну из предыдущих установок, вы можете просто удалить все файлы, /etc/systemd/network/ кроме тех 99-default.link , которые присутствуют. IP-адреса являются примерами. Вы должны использовать свой собственный.
Теперь мы должны сказать wpa_supplicant , чтобы использовать мост. Мы делаем это, изменяя его сервис:
В пустом редакторе вставьте эти операторы, сохраните их и выйдите из редактора:
Перезагрузка.
Вот и все.
Детали
Мы должны сказать wpa_supplicant, что его интерфейс wlan0 является подчиненным мостом. В противном случае клиент будет отклонять соединения с «неправильным паролем», что означает, что согласование ключей не работает. Когда мы сообщаем / sbin / wpa_supplicant с параметром -dbr0 использовать мост для wlan0, тогда интерфейс уже должен быть членом моста. Вот что мы делаем с добавлением файла (наложением) для службы wpa_supplicant . Пустой оператор ExecStart= удаляет старую запись. В противном случае у вас есть две строки, ExecStart= и wpa_supplicant запустится два раза. Оригинал, который ExecStart= вы можете просмотреть systemctl cat [email protected] .
Обычно маршрутизатор, к которому вы подключены с помощью кабеля Ethernet, имеет включенный сервер DHCP. Мост также прозрачен для запросов DHCP от станций (устройств, подключенных к точке доступа), поэтому вам не нужно беспокоиться о настройке его интерфейсов с IP-адресами и опциями. Маршрутизатор будет обслуживать его.
excursus:
Но если у маршрутизатора нет DHCP-сервера, вы можете настроить его на RasPi. В systemd-networkd есть опции для настройки встроенного DHCP-сервера, но проблема в том, что systemd-networkd предполагает, что он работает на самом маршрутизаторе, и в этом случае это не так. Это послужит неправильным опциям для станций, в частности маршрутизатора . Нет способа настроить его. Итак, мы должны установить dnsmasq в этом случае это может быть настроено по мере необходимости. Установите и настройте его с помощью (например, используйте свои собственные IP-адреса):
В этом примере ip-адреса с 192.168.50.128 по 192.168.50.164 зарезервированы для предоставления станциям. Для других статических IP-адресов используйте один за пределами этого пула, а также IP-адрес для самого моста.
♦ Оптимизация
Это не большая проблема. wpa_supplicant нужны случайные числа для генерации ключей шифрования. Это делается немного медленно, поэтому нужно подождать. К счастью, RasPi имеет встроенный в T Рит R andom N темно - коричневый G enerator (TRNG). Мы можем использовать его и ускорить получение случайных чисел, установив часть программного обеспечения (3) с:
Обновление:
начиная с Raspbian Stretch 2019-04-08 установка не требуется rng-tools . Они установлены по умолчанию.
♦ Устранение неисправностей
Systemd-networkd
Посмотрите на статус услуги:
Или даже немного больше:
Я нашел полезным следить за ведением журнала:
Если вы сделали сброс файла, вы можете посмотреть на результат:
Чтобы проверить среду выполнения модуля, вы можете показать его и, например, посмотреть, есть ли две ExecStart= строки:
И если ничто не поможет другим, вы можете включить опцию отладки с /sbin/wpa_supplicant помощью -d в выпадающем файле:
Вывод в журнал. Таким образом, я нашел проблему с неправильным согласованием ключа.
Если вы настроили точку доступа, вы должны найти ее с помощью мобильного телефона. Показаны доступные сети, он представлен с именем RPiNet, и вы можете подключиться к нему. На RasPi вы также можете использовать команду:
Как вы можете видеть, это тип AP (точка доступа), и он также покажет вам, какой канал он использует. Проблема может заключаться в переводе канала на частоту. Частота должна соответствовать каналу. Вы можете посмотреть в (2) список каналов WLAN. Например , чтобы использовать канал 36 на полосе 5,1 ГГц , вы должны установить frequency=5180 в /etc/wpa_supplicant\wpa_supplicant.conf . Но вы должны быть уверены, что ваш Wi-Fi поддерживает полосу 5,1 ГГц. Вы можете проверить с sudo iw phy . Это даст вам кучу информации. Он также должен содержать поддерживаемые частоты выше 5000 МГц. Если вы видите только частоты 24xx МГц, то, конечно, вы можете использовать только это.
Другим пунктом могут быть случайные числа. Для шифрования ключей для защищенных соединений wpa_supplicant нужны случайные числа. Генерация этого очень медленно на Raspberry Pi. Если энтропии недостаточно для генерации ключей шифрования, wpa_supplicant отклонит аутентификацию. Вы можете посмотреть, cat /proc/sys/kernel/random/entropy_avail сколько энтропии доступно. Должно быть> 1000, чтобы работать достаточно быстро. Чтобы ускорить это, rng-tools они установлены по умолчанию. Посмотрите раздел Оптимизация для получения дополнительной информации.
Привет @JanHus Спасибо за ваш отзыв. Это только предупреждение, а не ошибка и не имеет значения. Я также получаю это каждый раз. Постоянный журнал создан. Посмотри с ls /var/log/journal/ . Вы увидите каталог, который выглядит следующим образом fa9462093e8d419cb646d0a0c44771c2 . Это хранилище для журнала, к которому вы обращаетесь journalctl . Я обновлю свой ответ. Да, я проверил, был ли файл создан. Но я отвлекся и остановился. Я продолжу сегодня. Пока что это один из лучших «учебников» по теме. Спасибо за публикацию. PS называет это постоянным, хорошо? Немного смущает, когда он создается с использованием временного процесса. @ Инго, я думаю, что рекомендуется использовать proto=WPA2 в конфигурации AP. Мой телефон, по крайней мере, жалуется на «слабую безопасность» без него. @RobinDinse Вы правы, конечно. Я наблюдал за этим. Спасибо за подсказку. Я добавил proto=RSN . Это то, что документ предпочитает (называя proto=WPA2 псевдоним).Еще более простой способ настроить Raspberry Pi в качестве точки доступа - использовать репозиторий pi-ap Github, который автоматизирует настройку Pi 3B + / 4 в точку доступа.
Подключите Pi к свободному порту маршрутизатора, подключенного к Интернету, на котором включен DHCP (возможно, в большинстве маршрутизаторов-потребителей).
После подключения SSH к Pi на DHCP назначается IP-адрес, назначенный eth0 маршрутизатором, а затем:
Пейте чай, и примерно через 2 минуты после установки SSID variables.sh появится в списке беспроводных сетей. Подключитесь к рекламируемой сети WLAN Pi.
Для SSH непосредственно к самой AP на wlan0 интерфейсе Пи , используйте IP по умолчанию 192.168.0.1
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ : подсеть DHCP по умолчанию, которую pi-ap использует для назначения IP-адресов WiFi-клиентов в variables.sh is 192.168.0.0/28 . Если вы уже используете эту подсеть в сети, установите другую подсеть в variables.sh клиентах WiFi ПЕРЕД выполнения install.sh .
Для достижения хороших результатов не требуется калькулятор подсети или даже серьезные навыки работы в сети. pi-ap даже поддерживает ограничение доступа через ACL MAC.
РАСКРЫТИЕ ИНФОРМАЦИИ : Я разработчик pi-ap .
Этот ответ не предназначен для настройки. Для стабильной настройки посмотрите на другой ответ Настройка точки доступа .
Контрольная точка 1: Сравните контрольную сумму с контрольной суммой на сайте загрузки.
Следующий шаг: запишите образ на прикрепленную SD-карту:
Контрольная точка 2: проверить разделы на SD-карте:
Следующий шаг: смонтируйте загрузочный раздел и создайте wpa_supplicant.conf файл:
Вставьте SD-карту в RasPi и загрузитесь.
Контрольная точка 3: после входа в систему проверьте проводное соединение. Интерфейс eth0 должен иметь IP-адрес:
Это должно работать из коробки. Если это не работает, то у вас есть общая проблема с настройкой сети. Пожалуйста, исправьте это, прежде чем продолжить.
Контрольная точка 4: Проверьте точку доступа:
Wlan0 интерфейс Шоуда иметь адрес IP. Поскольку мы не настроили интерфейс, он будет иметь локальный адрес ссылки 169.254.0.0/16.
Вы увидите RPiNet в списке точек доступа на вашем мобильном телефоне, но пока не можете подключиться к нему.
Следующий шаг: полное обновление и перезагрузка:
После перезагрузки и входа в систему переключитесь на systemd-networkd :
(*) Вы получите одно или два сбивающих с толку предупреждения ". Невозможно установить атрибут файла . ". Это не ошибки и не имеет значения в этом случае.
Создайте эти файлы для интерфейсов eth0 и wlan0 с вашими настройками:
Переименуйте /etc/wpa_supplicant/wpa_supplicant.conf, чтобы он соответствовал настройкам интерфейса, и перезагрузитесь:
Контрольная точка 5: После перезагрузки и входа в систему проверьте проводное соединение eth0 :
Контрольная точка 6: Проверьте соединение Wi-Fi wlan0 :
Проверьте Wi-Fi на вашем мобильном телефоне. Вы должны найти, RPiNet и вы можете подключиться к нему. Ваш мобильный телефон не может войти в Интернет, потому что маршрутизация еще не настроена.
Следующий шаг: включите NAT для подключения к интернету. Чтобы настроить NAT, вы должны расширить сервис wpa_supplicant:
В пустом редакторе вставьте эти операторы, сохраните их и выйдите из редактора:
Контрольно-пропускной пункт 7: Теперь вы должны иметь возможность подключиться к Интернету с помощью мобильного телефона.
При взломе сети во время проведения пентеста иногда бывает полезно создать свою собственную беспроводную точку доступа, просто подключив Pi к доступному Ethernet-порту. С таким комплектом вы сможете создавать беспроводное подключение к сети в считанные секунды. Создание точки доступа также полезно во время поездок или в случаях, когда вам нужно поделиться вашим доступом в Интернет с группой людей.
Есть много причин, по которым вы, возможно, захотите превратить вашу Raspberry Pi в точку доступа. Самый простой вариант ее использования — заполучить собственный дешевый самодельный маршрутизатор для путешествий, который можно использовать в гостиничных номерах, когда вы находитесь в дороге, или в университетском кампусе или общаге, что может дать более быстрое приватное соединение с сетью. Более вредоносное применение — например, создание поддельной точки доступа с целью вынудить пользователей подключаться именно к вашей сети.
К счастью для вашего бюджета, Pi 3 и Pi Zero W обе могут быть точками доступа и должны работать с любым дистрибутивом Linux, который можно запустить на вашей Pi. Для этого мы будем использовать hostapd и DNSmasq, которые недавно были пропатчены, после того как служба безопасности Google обнаружила несколько серьезных уязвимостей.
Что вам будет нужно для начала?
- Raspberry Pi 3 или Pi Zero W
- Карта microSD с загруженным образом Kali Linux или Raspbian
- Источник питания
- Ethernet-кабель
В рамках этой статьи мы будем предполагать, что у вас уже есть Raspberry Pi 3, работающая на Raspbian или на Kali Linux. Если у вас пока этого нет, то почитайте нашу предыдущую статью «Установка Raspberry Pi — «безголовой» платформы для взлома под управлением Kali Linux».
Шаг 1. Обновление системы и установка HostAPD
Прежде чем мы начнем, убедитесь, что Pi подключена и к Ethernet и к сети. Хорошей практикой считается первым делом удостовериться, что мы работаем на Pi с самыми новыми версиями программного обеспечения, поэтому сначала обновим систему. Откройте окно терминала и введите следующее:
После завершения обновления операционной системы установим hostapd и dnsmasq.
Hostapd — это пакет, который фактически позволит нам использовать Pi в качестве точки доступа Wi-Fi. Хотя в этой сборке мы используем внутренний Wi-Fi, мы могли бы использовать любое количество беспроводных сетевых адаптеров.
Dnsmasq — это простой в настройке пакет, который работает одновременно и как протокол динамической настройки узла (DHCP) и как сервер доменных имен (DNS). DHCP — это стандартизированный протокол, который динамически выдает параметры конфигурации сети. Мы будем использовать его для назначения IP-адресов интерфейсам и сервисам.
Давайте скачаем оба пакета, введя следующие команды в терминал:
Если вы продвинутый пользователь Linux и считаете, что вам нужно что-то более надежное, то можете использовать isc-dhcp-сервер для DHCP и bind9 для DNS, поскольку они оба дают пользователю лучший контроль над происходящим и предлагают решения корпоративного уровня. Мы не будем использовать их в этой статье, чтобы максимально упростить процесс.
Шаг 2. Конфигурирование интерфейса
По умолчанию dhcpcd обрабатывает конфигурацию интерфейса. Поскольку мы собираемся настроить статический беспроводной IP-адрес, позже нам будет нужно, чтобы он игнорировал интерфейс wlan0, карту Wi-Fi по умолчанию и не позволял другим интерфейсам ее использовать. Это должно изолировать нашу точку доступа от чьего-либо вмешательства в ее работу. Откройте файл в редакторе nano.
Вставьте следующую строку в конец файла. Если вы добавили какие-либо интерфейсы, поместите их выше этой строки, чтобы отказать им в доступе к wlan0.
В только что установленной системе мы просто вставляем ее в конце файла.
Чтобы сохранить наши изменения в nano, нам нужно нажать Ctrl + X, затем Y, затем Enter. Запомните эту комбинацию клавиш, так как мы будем часто ее использовать.
Шаг 3. Статический IP-адрес
Теперь мы готовы настроить статический IP-адрес для нашей точки доступа, так же как они используются с любым маршрутизатором. Если мы этого не сделаем, то все устройства, которые будут пытаться подключиться к нашей точке доступа, просто не смогут ее найти. Мы сделаем это, отредактировав файл interfaces, введя вот эту команду в терминал:
Настройки wlan0 являются очень важными для подключения к Pi. Если вы решите изменить их, то обязательно на каждом шаге делайте в точности то же самое, как описано ниже, в противном случае ваша точка доступа просто не будет работать. В nano прокрутитесь ниже и замените все, начиная со строки «auto lo» и далее вниз, следующим содержанием:
Для этой статьи мы также установили статический IP-адрес для Ethernet, но вы можете оставить его динамическим, введя в консоли эту команду: iface eth0 inet dhcp, и оставив адреса, которые идут после этого. Подробнее можно посмотреть в вики по конфигурации сети.
Наличие динамического IP-адреса важно, если вы планируете подключаться к неизвестной сети, к которой уже может быть подключено другое устройство, использующее этот же IP-адрес, в противном случае вы можете столкнуться с конфликтами IP-адресов. Конфликты IP-адресов — это ситуация, когда двум различным устройствам присваивается один и тот же IP-адрес, который может запутать сеть, и это приведет к игнорированию пакетов для обоих устройств.
Когда вы закончите, файл должен выглядеть примерно так:
Когда он будет выглядеть точно также, то для сохранения файла нажмите Ctrl + X, затем Y, затем Enter.
После выхода из nano необходимо перезапустить dhcpd, чтобы изменения в файле конфигурации вступили в силу, а затем сделать то же самое для wlan0. Мы можем сделать это, введя следующие команды в консоли:
Шаг 4. Настройка Hostapd
Теперь настроим hostapd. Чтобы это сделать, откройте файл конфигурации в редакторе nano, введя эту команду в терминал:
Затем добавьте эти строки, которые будут определять, как мы хотим, чтобы работал интерфейс wlan0.
Основными моментами, которые вы должны изменить, являются SSID (идентификатор набора услуг) и wpa_passphrase в нижней части файла. SSID — это имя точки доступа и то, как ваше устройство идентифицирует сеть.
Wpa_passphrase — это пароль для точки доступа. Очень важно создать надежный пароль, иначе любой сможет получить доступ к вашей сети. Более продвинутые пользователи могут изменить используемый по умолчанию канал, на который будет передавать данные точка доступа, поскольку 6 наиболее часто используемых Wi-Fi-каналов быстро переполняются.
Если вы решили использовать отдельный сетевой адаптер, а не встроенный Wi-Fi-модуль, то драйвер встроенного Wi-Fi модуля должен быть заменен на драйвер, подходящий для нового Wi-Fi-адаптера.
Когда закончите редактирование, для сохранения нажмите Ctrl + X, затем Y, затем Enter.
Как только это будет сделано, нам нужно сообщить hostapd, как найти этот файл. Мы сделаем это, отредактировав два файла.
Первый откроем, набрав sudo nano /etc/default/hostapd в окне терминала и изменив строку DAEMON_CONF в верхней части на следующую:
Когда закончите, для сохранения нажмите Ctrl + X, затем Y, затем Enter.
Процесс изменения второго файла точно такой же. Откройте файл, набрав в консоли sudo nano /etc/init.d/hostapd, а затем измените строку DAEMON_CONF на эту:
Для сохранения нажмите Ctrl + X, затем Y, затем Enter.
Шаг 5. Настройка Dnsmasq
Дефолтный конфигурационный файл dnsmasq очень сложный и он не будет работать для наших задач. Гораздо проще создать новый конфигурационный файл.
Хорошей идеей будет на всякий случай переместить куда-нибудь дефолтный файл конфигурации. Мы можем сделать это, набрав в консоли sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig, а затем создадим собственный пустой файл, набрав команду sudo nano /etc/dnsmasq.conf.
Когда наш пустой файл откроется в nano, добавьте в него следующие строки:
И опять-таки, когда закончите, нажмите Ctrl + X, затем Y, затем Enter для сохранения.
Шаг 6. Переадресация IPv4
Теперь у нас есть несколько вещей, которые нам нужно сделать на стороне Wi-Fi, поскольку у нас не будет точки доступа, если она не может подключиться к Интернету. Исправим это, перенаправив трафик wlan0 на Ethernet-соединение.
Когда вы это сделаете, файл должен выглядеть следующим образом:
Сохраните и выйдите, нажав Ctrl + X, затем Y, затем Enter.
Для применения этих изменений обычно нужно перезагружать Pi, но нам этого делать не обязательно. Вместо этого мы можем перезапустить только соответствующую службу. Введите в терминале:
Теперь, когда переадресация IPv4 работает правильно, мы можем получить наш NAT (network address translation — преобразование сетевых адресов) между интерфейсами wlan0 и eth0. Для этого нужно обновить iptables. Мы сделаем это, если введем следующие строки в терминал, одну за другой:
Это должно выглядеть следующим образом:
Готово! Теперь все будет работать, но есть одна загвоздка. Iptables сбрасываются при каждой загрузке, то есть их необходимо снова устанавливать. Вы можете обновлять их каждый раз, но это быстро начнет раздражать, а кроме того, мы ленивы, поэтому нужно сделать их постоянными.
К счастью, для этого есть специальный пакет. Скачайте его, введя эту команду в терминал:
Когда появится такое диалоговое окно, убедитесь, что выбрано «Да», и нажмите «Enter», это сохранит наши текущие iptables. Он также спросит об IPv6, это не должно ни на что повлиять, но в любом случае сохраните и их тоже.
Если вам когда-нибудь понадобится изменить iptables, сделайте это, а затем опять сохраните эти изменения, набрав sudo netfilter-persistent save в консоли.
Теперь нам нужно только включить службу, введя в консоли следующее:
Шаг 7. Включение служб
Последний шаг — запустить hostapd, набрав sudo service hostapd start и запустить dnsmasq, набрав sudo service dnsmasq start. После ввода каждой из этих команд подождите несколько секунд и воспользуйтесь другим Wi-Fi устройством, чтобы убедиться, видно ли точку доступа.
Для вас картинка будет отличаться, если вы использовали другой SSID на третьем шаге. Надеюсь, что вы также изменили ваш пароль, потому что raspberry — это самый простой пароль, который легко отгадать. На скриншоте ниже мы видим, что горячая точка появилась.
Чтобы убедиться, что все будет работать должным образом, рекомендуется перезагрузить Pi командой sudo reboot. Убедитесь, что Pi подключен к Ethernet, и снова подключитесь к точке доступа Pi и попробуйте подключиться к Интернету.
Заключение
Сегодня мы узнали, как быстро превратить наши Raspberry Pi 3 или Pi zero W в беспроводную точку доступа, используя несколько простых в установке пакетов. Несмотря на свою простоту, сейчас по-прежнему весьма полезно иметь беспроводной доступ к любой сети или же наоборот, в случае необходимости иметь возможность создать такую точку доступа. Этот проект также представляет собой отличный инструмент, который мы сможем расширить в будущем для создания более сложных вещей. Будущие проекты, такие как добавление OpenVPN для маршрутизации всего трафика через VPN или включение камеры наблюдения на основе Pi, будут основаны на этом методе.
Спасибо за чтение, и если у вас есть какие-либо вопросы, пожалуйста, оставляйте ваши комментарии!
Об авторе
Александр
Специалист по информационной безопасности с 10-ти летним опытом. Отец троих детей. Независимый консультант по вопросам кибер безопасности. 6 лет опыта интеграции решений кибербезопасности с другими продуктами в существующих инфраструктурах на корпоративном уровне.
Raspberry Pi внутри Ethernet сети может выступать как беспроводная точка доступа для беспроводных устройств.
Существует два режима работы такой точки доступа - обычный и мост. В обычном режиме Raspberry Pi создаёт дополнительную сеть, которая изолирована от Ethernet сети. Схема сети для этого режима:
Если вам нужно раздать существующее Ethernet соединение беспроводным устройствам, то на Raspberry Pi нужно настраивать как точку доступа, работающую в режиме моста:
В этой статье сначала рассмотрим обычный режим, а потом мост
Подготовка
Для настройки необходим администраторский (root) доступ к Raspberry Pi.
Подключите Raspberry Pi к Ethernet сети кабелем и загрузите его.
В этой статье предполагается, что сеть с IP адресами 10.10.0.0/24 основная, а Raspberry Pi управляет сетью для беспроводных клиентов 192.168.4.0/24
Также для тестирования точки доступа необходим клиент беспроводной сети(ноутбук, смартфон, и т.д)
Установка необходимого ПО
Чтобы Raspberry Pi мог работать как точка доступа необходимо установить пакет hostapd
Активируйте службу беспроводной точки доступа и включите для неё автозапуск после загрузки:
Чтобы предоставить беспроводным клиентам службы управления сетью (DNS, DHCP) установите пакет dnsmasq
Чтобы настройки файервола не сбрасывались после перезагрузки, установим пакет netfilter-persistent и плагин к нему iptables-persistent.
Установка ПО закончена и далее нам предстоит его настроить
Настройка маршрутизатора
Raspberry Pi поднимет отдельную одиночную беспроводную сеть и будет управлять ей. А также маршрутизировать трафик между клиентами беспроводной сети и клиентами основной Ethernet сети и роутером.
Для беспроводной сети на Raspberry Pi запущен DHCP сервер, для работы которого требуется присвоить беспроводному интерфейсу (wlan0) статический IP адрес
Присваиваем статический IP адрес (192.168.4.1) точке доступа:
В конец файла добавьте следующие строки:
Настройка маршрутизации и IP маскарадинга
В этом разделе рассмотрим вопрос доступа беспроводных устройств из вспомогательной сети, организованной Raspberry Pi, к компьютерам основной Ethernet-сети и интернету.
Для включения маршрутизации добавим в конфиг /etc/sysctl.d/routed-ap.conf строку:
Активация маршрутизации откроет участникам сети 192.168.4.0/24 доступ к основной сети и доступ в Интернет через основной роутер. Raspberry Pi может подменять IP адреса участников беспроводной сети своим IP адресом в основной сети, используя правило "маскарада" в своём файерволе, чтобы разрешить сетевой трафик между участниками беспроводной сети и Интернетом без изменения настроек роутера.
- Основной роутер будет воспринимать весь трафик от клиентов беспроводной сети, как трафик от Raspberry Pi
- Весь входящий трафик будет поступать на Raspberry Pi и перенаправляться клиенту беспроводной сети
Добавляем новое правило в файервол Raspberry Pi:
Сохраняем правило при помощи netfilter-persistent, чтобы оно не сбросилось при перезагрузке.
Настройки файервола хранятся здесь - /etc/iptables/. Не забывайте использовать netfilter-persistent при внесении изменений в правила файервола.
Настройка DHCP и DNS для беспроводной сети
Службы DHCP и DNS предоставляются пакетом dnsmasq. В стандартном конфиге dnsmasq содержатся примеры всех возможных настроек, нам нужны только некоторые, поэтому проще создать конфиг с нуля. На всякий случай сохраняем старый конфиг и создаём новый с таким же именем:
Прописываем настройки в конфиг:
Raspberry Pi будет выделять клиентам IP-адреса в диапазоне 192.168.4.2-192.168.4.20
Клиенты могут обращаться к RaspberryPi по доменному имени gw.wlan
В разных странах действуют свои телекоммуникационные правила и разрешённые для радиопередачи диапазоны. Операционная система Linux помогает пользователям выполнять эти правила
В операционной системе Raspberry Pi OS работа беспроводной сети в диапазоне 5GHz запрещена до тех пор, пока пользователь не внесёт в настройках двухбуквенный код страны (RU для России).
Настройка ПО
Чтобы убедиться, что работа Wi-Fi не заблокирована выполните команду
Далее создадим конфиг hostpad ( /etc/hostapd/hostapd.conf) и пропишем в него настройки:
Обратите внимание, что имя сети (параметр ssid) и пароль (параметр wpa_passphrase) не должны содержать кавычек. Пароль должен иметь длину от 6 до 64 символов
Указание кода страны позволяет Raspberry Pi использовать для передачи данных разрешённые в этой стране частоты.
Чтобы использовать для передачи данных диапазон 5 GHz, нужно поменять параметр hw_mode=g на hw_mode=a. Возможные значения параметра hw_mode:
- a = IEEE 802.11a (5 GHz) (доступно начиная с модели Raspberry Pi 3B+)
- b = IEEE 802.11b (2.4 GHz)<br>
- g = IEEE 802.11b (2.4 GHz)
После смены режима hw_mode, возможно потребуется и смена номера канала (параметр channel)
Завершение
Теперь осталось только перезагрузиться.
В следующей статье рассмотрим организацию точки доступа на Raspberry Pi в режиме моста
Задача: В моих планах на базе миникомпьютера Raspberry Pi 3 поднять сервис телефонии с возможностью подключения к нему телефонных аппаратов по Wifi. В роли таких аппаратов выступят аппараты фирмы Cisco CP-7925G, а за сим возникает необходимость развертывания DHCP сервиса на интерфейсе wlan0. Он то и будет раздавать сетевые адреса.
- eth0 — подключен к Mikrotik (нужен для выхода в интернет)
- wlan0 — обслуживает диапозон выдачи адресов
Сам миникомпьютер Raspberry Pi 3 Model B и карта памяти + записанный образ + моя заметка по первоначальной настройки операционной системы Jessiy
$ sudo rm -Rf /var/lib/apt/lists
$ sudo apt-get update && sudo apt-get upgrade -y
На момент написания данной заметки, а именно 02.04.2017 текущая прошивка составляет то что приведено ниже. Я люблю делать акцент на используемые версии и проблемы с которыми сталкиваюсь разбирая ту или иную задачу:
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Устанавливаю в систему необходимые пакеты для воплощения моей задачи в практический смысл:
$ apt-cache search hostapd
hostapd - IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP Authenticator
$ apt-cache search isc-dhcp-server
isc-dhcp-server - ISC DHCP server for automatic IP address assignment
$ sudo apt-get install hostapd isc-dhcp-server -y
$ sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup
$ sudo nano /etc/dhcp/dhcpd.conf
subnet 192.168.99.0 netmask 255.255.255.0
range 192.168.99.100 192.168.99.150;
option broadcast-address 192.168.99.255;
option routers 192.168.99.1;
option domain-name "polygon.local";
option domain-name-servers 8.8.8.;
Затем настраиваю DHCP сервис на интерфейсе WLAN0:
$ sudo nano /etc/default/isc-dhcp-server
$ sudo ifdown wlan0
Warning: Stopping avahi-daemon.service, but it can still be activated by:
$ sudo cp /etc/network/interfaces /etc/network/interfaces.backup
$ sudo nano /etc/network/interfaces
iface wlan0 inet static
$ sudo ifconfig wlan0 192.168.99.1
Теперь описываем файл поднятия точки доступа Wifi:
$ sudo nano /etc/hostapd/hostapd.conf
После не забываем сохранить внесенные изменения.
На заметку: настройки выше конфигурационного файла hostapd.conf не требуют подробнейших разъяснений, все интуитивно понятно, а кому все же хочется то пусть читает документацию.
После проверяю, какой драйвер на модуль Wifi сейчас задействован:
$ basename $(readlink /sys/class/net/wlan0/device/driver)
$ sudo cp /etc/sysctl.conf /etc/sysctl.conf.backup
$ sudo nano /etc/sysctl.conf
$ apt-cache search iptables-persistent
iptables-persistent - boot-time loader for netfilter rules, iptables plugin
$ sudo apt-get install iptables-persistent -y
Save current IPv4 rules? Yes
Save current IPv6 rules? No
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
$ sudo bash -c "iptables-save > /etc/iptables.ipv4.nat"
$ sudo nano /etc/network/interfaces
iface wlan0 inet static
up iptables-restore < /etc/iptables.ipv4.nat
Проверяю, что точка доступа поднимается:
$ sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf
Failed to create interface mon.wlan0: -95 (Operation not supported)
wlan0: Could not connect to kernel driver
Using interface wlan0 with hwaddr b8:27:eb:c9:2b:af and ssid "ekzorchik"
wlan0: interface state UNINITIALIZED->ENABLED
после чего беру в руки смой смартфон Hyawei Honor C5 — включаю Wifi — и вижу в списке обнаруженных Wifi сетей, сеть с именем SSID:ekzorchik — пробую к ней подключиться:
ввожу пароль: Aa1234567
но в ответ мне точка доступа выдает: Тайм-аут подключения к приложению ekzorchik. Сбой соединения
А в консоль вываливаются ошибки:
wlan0: STA f8:23:b2:e1:59:c8 WPA: pairwise key handshake completed (RSN)
wlan0: STA f8:23:b2:e1:59:c8 IEEE 802.11: disassociated
wlan0: AP-STA-DISCONNECTED f8:23:b2:e1:59:c8
wlan0: STA f8:23:b2:e1:59:c8 IEEE 802.11: associated
wlan0: AP-STA-CONNECTED f8:23:b2:e1:59:c8
wlan0: STA f8:23:b2:e1:59:c8 RADIUS: starting accounting session 58E08267-00000001
Ладно тогда пробую запустить все сервисы и проверить их статус:
$ sudo service hostapd start
$ sudo service isc-dhcp-server start
Job for isc-dhcp-server.service failed. See 'systemctl status isc-dhcp-server.service' and 'journalctl -xn' for details.
$ sudo service hostapd status
hostapd.service - LSB: Advanced IEEE 802.11 management daemon
Loaded: loaded (/etc/init.d/hostapd)
Active: active (exited) since Sun 2017-04-02 07:22:39 MSK; 30min ago
Apr 02 07:22:39 raspberrypi systemd[1]: Started LSB: Advanced IEEE 802.11 ma.
Apr 02 07:53:11 raspberrypi systemd[1]: Started LSB: Advanced IEEE 802.11 ma.
Hint: Some lines were ellipsized, use -l to show in full.
$ sudo service isc-dhcp-server status
isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server)
Active: failed (Result: exit-code) since Sun 2017-04-02 07:53:19 MSK; 19s ago
Process: 9659 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=1/FAILURE)
Apr 02 07:53:19 raspberrypi isc-dhcp-server[9659]: Configuration file errors .
Apr 02 07:53:19 raspberrypi isc-dhcp-server[9659]: If you think you have rece.
Apr 02 07:53:19 raspberrypi isc-dhcp-server[9659]: than a configuration issue.
Apr 02 07:53:19 raspberrypi isc-dhcp-server[9659]: bugs on either our web pag.
Apr 02 07:53:19 raspberrypi isc-dhcp-server[9659]: before submitting a bug. .
Apr 02 07:53:19 raspberrypi isc-dhcp-server[9659]: process and the informatio.
Apr 02 07:53:19 raspberrypi isc-dhcp-server[9659]: exiting.
Apr 02 07:53:19 raspberrypi systemd[1]: isc-dhcp-server.service: control pro. 1
Apr 02 07:53:19 raspberrypi systemd[1]: Failed to start LSB: DHCP server.
Apr 02 07:53:19 raspberrypi systemd[1]: Unit isc-dhcp-server.service entered.
Hint: Some lines were ellipsized, use -l to show in full.
Так у меня ошибка при запуске DCHP сервера, разбираюсь где и что не так, смотрю логи:
$ sudo journalctl -xn
$ sudo tail -f /var/log/syslog
$ sudo nano /etc/dhcp/dhcpd.conf
у меня была ошибка в строке: option domain-name-servers 8.8.8.;
нужно было написать: option domain-name-servers 8.8.8.8;
$ sudo service isc-dhcp-server start
$ sudo service isc-dhcp-server status
isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server)
Active: active (running) since Sun 2017-04-02 08:01:09 MSK; 1min 4s ago
Так хорошо, службы запустились. И если запустить еще раз поднятие точки доступа с именем SSID: ekzorchik, то я успешно к ней подключаюсь своим смартфоном и интернет на ней также присутствует:
$ sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf
Failed to create interface mon.wlan0: -95 (Operation not supported)
wlan0: Could not connect to kernel driver
Using interface wlan0 with hwaddr b8:27:eb:c9:2b:af and ssid "ekzorchik"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: STA f8:23:b2:e1:59:c8 IEEE 802.11: associated
wlan0: AP-STA-CONNECTED f8:23:b2:e1:59:c8
wlan0: STA f8:23:b2:e1:59:c8 RADIUS: starting accounting session 58E0861E-00000000
wlan0: STA f8:23:b2:e1:59:c8 WPA: pairwise key handshake completed (RSN)
Прерываю нажатием Ctrl + C, чтобы выйти из ручного режима, а настроить автоматический:
$ sudo update-rc.d hostapd enable
$ sudo update-rc.d isc-dhcp-server enable
После перезагрузки проверяю, что точка доступа поднялась и я могу к ней подключиться с помощью своего смартфона Huawei Honor C5
$ sudo service hostapd status
hostapd.service - LSB: Advanced IEEE 802.11 management daemon
Loaded: loaded (/etc/init.d/hostapd)
Active: active (exited) since Sun 2017-04-02 08:07:16 MSK; 1min 12s ago
$ sudo service isc-dhcp-server status
isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server)
Active: active (running) since Sun 2017-04-02 08:18:03 MSK; 33s ago
Но может конечно все оно и поднялось, но точка доступа не видна в списке доступный сетей на подключение, оказалось что сервис hostapd поднимается без захвата конфигурационного файла, исправляю:
$ sudo nano /etc/init.d/hostapd
изменил на: DAEMON_CONF=/etc/hostapd/hostapd.conf
После не забыл сохранить внесенные изменения и перезапустить сервис hostpad:
$ sudo service hostapd restart
Затем проверил, вот теперь точка доступа с именем SSID успешно поднята и смартфон также подключился к ней.
$ sudo apt-get install htop -y
Из вывода выше видно, что система свободна и ресурсов совсем не потребляет, также для их увеличения можно отключить GUI окружение:
$ sudo /etc/init.d/lightdm stop
Отлично я разобрал поставленную задачу. Теперь так же как и всегда могу на основе этой заметки сделать все последующие или объединить если задача будет требовать сопряжения нескольких настроек. Данная заметка задумывалась, как организация сервиса для подключения телефонных аппаратов Cisco CP-7925G к сервису АТС который будет развернут на базе текущего миникомпьютера Raspberry Pi 3 Model B. На этом собственно всё, с уважением автор блога Олло Александр aka ekzorchik.
Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:
Поблагодари автора и новые статьи
будут появляться чаще :)
Карта МКБ: 4432-7300-2472-8059
Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.
En в предыдущей статье рассказывается о системе DietPi для нашего Raspberry Pi что помимо большого сообщества есть различные системы и проекты.
Среди них вы можете превратить Raspberry Pi в мультимедийный центр, ретро-игровую консоль, NAS-сервер и многое другое.
Теперь на этот раз мы увидим, как использовать Raspberry Pi в качестве точки беспроводного доступа.
Превращение Raspberry Pi в точку беспроводного доступа
Для этого На нашей Raspberry обязательно должна быть операционная система, поэтому официальная система для этого идеально подходит.
Первое, что мы должны сделать, это обновить нашу систему, для этого в терминале мы собираемся ввести следующие команды:
sudo apt-get update
sudo apt-get upgrade
Как только это будет сделано, мы перезапустим наше устройство, чтобы все сделанные изменения были сохранены.
Вернувшись в систему, приступим к установке hostapd, dnsmasq и bridge-utils, Это две программы, которые мы будем использовать, чтобы превратить Raspberry Pi в точку беспроводного доступа.
Поэтому, чтобы установить его, просто откройте терминал, и в нем мы собираемся ввести следующие команды.
sudo apt-get install hostapd
sudo apt-get install dnsmasq
sudo apt-get install bridge-utils
конфигурация
Как только установка будет завершена, мы собираемся отредактировать файлы конфигурации программ, поэтому мы должны остановить их службы с помощью:
sudo systemctl stop hostapd
sudo systemctl stop dnsmasq
Теперь приступим к редактированию следующего файла:
sudo nano /etc/dhcpcd.conf
Теперь, когда он находится в файле, добавьте в конец следующие строки:
interfaz wlan0
static ip_address = 192.168.0.10/24
denyinterfaces eth0
denyinterfaces wlan0
Здесь, в том, что мы размещаем, мы предполагаем, что у нас есть локальные IP-адресаКроме того, наш сетевой интерфейс имеет общие имена и никаких других.
После этого нажмите Ctrl + O, затем Ctrl + X, чтобы сохранить файл и выйти из редактора.
Настроить DHCP-сервер (dnsmasq)
Мы собираемся использовать dnsmasq в качестве нашего DHCP-сервера. Идея DHCP-сервера заключается в динамическом распределении параметров конфигурации сети, таких как IP-адреса, по интерфейсам и службам.
Давайте переименуем файл конфигурации по умолчанию и напишем новый:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.back
sudo nano /etc/dnsmasq.conf
В новом файле мы напишем эти строки конфигурации:
Добавленные строки означают, что мы собираемся предоставить IP-адреса между 192.168.0.11 и 192.168.0.30 для интерфейса wlan0. Закрываем и сохраняем файл.
Y Теперь мы собираемся создать еще один новый файл конфигурации, мы делаем это, набирая следующую команду:
sudo nano /etc/hostapd/hostapd.conf
Внутри него разместим следующее:
interface=wlan0
bridge=br0
hw_mode=g
channel=5
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ssid=”Nombre-que-le-daras-a-tu-punto-de-acceso”
wpa_passphrase=”La-contraseña”
Где они будут редактировать только последние две строки, потому что здесь они поместят имя, которое они дадут своей точке доступа, а также свой пароль без "".
После редактирования мы сохраним и закроем изменения. И сейчас откроем следующий файл:
sudo nano /etc/default/hostapd
Настроить переадресацию трафика
sudo nano /etc/sysctl.conf
Теперь найдите эту строку:
Следующим шагом будет добавление нового правила iptables, а затем:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
iptables-restore < /etc/iptables.ipv4.nat
Включить интернет-соединение
Теперь Raspberry Pi действует как точка доступа, к которой могут подключаться другие устройства. Однако эти устройства по-прежнему не могут использовать Pi для доступа в Интернет. Чтобы сделать это возможным, нам нужно построить мост, который передает весь трафик между интерфейсами wlan0 и eth0.
Мы готовы добавить новый мост (названный br0):
sudo brctl addbr br0
Далее мы подключим интерфейс eth0 к нашему мосту:
sudo brctl addif br0 eth0
Наконец, давайте отредактируем файл интерфейсов и добавим следующие строки в конец файла:
sudo nano /etc/network/interfaces
auto br0
iface br0 inet manual
bridge_ports eth0 wlan0
Перезагружаем Raspberry Pi и все.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Из Linux » Учебники / Руководства / Советы » Превратите свой Raspberry Pi в точку беспроводного доступа
Читайте также: