WiFi на Raspberry - поднятие точки доступа

На встроенном поднимем точку доступа, и веб-сервер — к ней будем цепляться со смартфона, и управлять ею — сканировать эфир вторым Wi-Fi интерфейсом, делать слепки сетей и много другого интересного.

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

Настройка точки доступа

Для работы такой точки потребуется установить некоторый софт 

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install iw dnsmasq hostapd

Теперь нужно создать и открыть для редактирования файл /etc/hostapd/hostapd.conf, и вписать туда примерно такую табличку
 

interface=wlan0
driver=nl80211
ssid=test
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=1234567890
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Если планируете использовать встроенную карту, то драйвер менять не нужно, nl80211 пойдет (но если зачем то хотите узнать свой драйвер,

readlink /sys/class/net/wlan0/device/driver

вам в помощь).

Нужно указать название новой сети вместо test

ssid=test

и пароль вместо цифр

wpa_passphrase=1234567890

Остальные настройки и описания можно посмотреть тут

Теперь нужно сделать так, что бы настройки виделись процессом — для этого в файле

/etc/default/hostapd

Прописываем параметр 

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Так же в этом же файле /etc/default/hostapd советую прописать
DAEMON_OPTS="-dd -t -f /var/log/hostapd.log"
что бы он писал подробные логи

НО! Без настроенного DCHP и DNS он работать не будет, так что давайте позаботимся об этом.
(Когда я тестировал, Wi-Fi сеть поднималась, но при попытках подключения или в результате сканирования она тупо исчезала, никаких дельных сообщений об ошибках не было).

Откроем для редактирования файл

sudo nano /etc/dhcpcd.conf

и впишем туда статичный ip-адрес устройства:
 

interface wlan0
    static ip_address=192.168.4.1/24
    nohook wpa_supplicant

Рестартанем DHCP

sudo service dhcpcd restart

Теперь разберемся с диапазоном выдаваемых IP. Конфиг dnsmasq по умолчанию набит кучей настроек, так что проще его забекапить и создать новый, с нуля.
 

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig  
sudo nano /etc/dnsmasq.conf

Откроем его для редактирования и впишем такие настройки:
 

interface=wlan0      # Use the require wireless interface - usually wlan0
  dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h

Это позволит DHCP серверу выдавать IP-адреса из пула 192.168.4.2-192.168.4.20, с арендой до 24 часов.

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

Выполните команды 
/etc/init.d/dhcpcp restart
/etc/init.d/hostapd restart
и вы должны увидеть точку доступа и суметь подключиться к ней. Если вы установили с ней соединение, то по ssh можно подключаться по IP 192.168.4.1.
 

Если нужно настроить раздачу интернета

Если же вы рассчитывате использовать распберри как роутер, то можете настроить еще и проброс трафика между интерфейсами. Для этого в файле /etc/sysctl.conf раскомментируйте или добавьте/измените строку, что бы было вот так:
 

net.ipv4.ip_forward=1

Это позволит пробрасывать трафик из одного интерфейса в другой.
Теперь добавьте правила фаерволла

sudo iptables -t nat -A  POSTROUTING -o eth0 -j MASQUERADE

и сохраните их

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

Теперь откройте для редактирования файл /etc/rc.local и, перед exit 0 добавьте строку

iptables-restore < /etc/iptables.ipv4.nat

Это позволит системе восстанавливать правила фаервола при загрузке системы.

Полезные ссылки (англ):

Категория: Электроника
Последнее изменение:

Не забудьте рассказать друзьям об этой статье.
Чтобы поддержать ресурс Bablofil достаточно просто поделиться с друзьями этой статьей в социальных сетях. Каждый репост - это самая высокая оценка качества материала. Спасибо, что читаете этот блог.



Комментарии
Пожалуйста, авторизуйтесь, что бы оставить свой комментарий
Крипто-кошельки для помощи и благодарности проекту:

Bitcoin адрес проекта: [[address]]

Перевод на сумму [[value]] BTC получен. Спасибо!.
[[error]]

Ethereum адрес проекта: [[address]]