На встроенном поднимем точку доступа, и веб-сервер — к ней будем цепляться со смартфона, и управлять ею — сканировать эфир вторым 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
Это позволит системе восстанавливать правила фаервола при загрузке системы.
Полезные ссылки (англ):