Настройка Wi-Fi

Wi-Fi адаптер на Raspberry Pi имеет два основных режима работы:

  1. Режим клиента – RPi подключается к существующей Wi-Fi сети.
  2. Режим точки доступа – RPi создает Wi-Fi сеть, к которой вы можете подключиться.

При использовании образа для RPi по умолчанию Wi-Fi адаптер работает в режиме точки доступа.

Изменение пароля или SSID (имени сети)

  1. Отредактируйте файл /etc/wpa_supplicant/wpa_supplicant.conf (используя SSH-соединение):

     sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
    

    Измените значение параметра ssid, чтобы изменить название Wi-Fi сети, и параметра psk, чтобы изменить пароль. Например:

     network={
         ssid="my-super-ssid"
         psk="cleverwifi123"
         mode=2
         proto=RSN
         key_mgmt=WPA-PSK
         pairwise=CCMP
         group=CCMP
         auth_alg=OPEN
     }
    
  2. Перезагрузите Raspberry Pi.

Длина пароля для Wi-Fi сети должна быть не менее 8 символов.

При некорректных настройках wpa_supplicant.conf Raspberry Pi перестанет раздавать Wi-Fi!

Переключение адаптера в режим клиента

  1. Выключите службу dnsmasq.

     sudo systemctl stop dnsmasq
     sudo systemctl disable dnsmasq
    
  2. Включите получение IP адреса на беспроводном интерфейсе DHCP клиентом. Для этого удалите из файла /etc/dhcpcd.conf строки:

     interface wlan0
     static ip_address=192.168.11.1/24
    
  3. Настройте wpa_supplicant для подключения к существующей точке доступа. Для этого замените содержимое файла /etc/wpa_supplicant/wpa_supplicant.conf на:

     ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
     update_config=1
     country=GB
    
     network={
         ssid="SSID"
         psk="password"
     }
    

    где SSID – название сети, а password – пароль.

  4. Перезапустите службу dhcpcd.

     sudo systemctl restart dhcpcd
    

Переключение адаптера в режим точки доступа

  1. Включите статический IP адрес на беспроводном интерфейсе. Для этого добавьте в файл /etc/dhcpcd.conf строки:

     interface wlan0
     static ip_address=192.168.11.1/24
    
  2. Настроите wpa_supplicant на работу в режиме точки доступа. Для этого замените содержимое файла /etc/wpa_supplicant/wpa_supplicant.conf на:

     ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
     update_config=1
     country=GB
    
     network={
         ssid="CLEVER-1234"
         psk="cleverwifi"
         mode=2
         proto=RSN
         key_mgmt=WPA-PSK
         pairwise=CCMP
         group=CCMP
         auth_alg=OPEN
     }
    

    где CLEVER-1234 – название сети, а cleverwifi – пароль.

  3. Включите службу dnsmasq.

     sudo systemctl enable dnsmasq
     sudo systemctl start dnsmasq
    
  4. Перезапустите службу dhcpcd.

     sudo systemctl start dhcpcd
    

Ниже вы можете узнать больше о том, как устроена работа с сетью на RPi.

Устройство сети RPi

Работа сети на образе поддерживается двумя предустановленными службами:

  • networking — служба включает все сетевые интерфейсы в момент запуска [5].
  • dhcpcd — служба обеспечивает настройку адресации и маршрутизации на интерфейсах, полученных динамически или указанных в файле настроек статически.

Для работы в режиме роутера (точки доступа) RPi необходим DHCP сервер. Он служит для автоматической выдачи настроек текущей сети подключившимся клиентам. В роли такого сервера может выступать isc-dhcp-server или dnsmasq.

dhcpcd

Начиная с Raspbian Jessie настройки сети больше не задаются в файле /etc/network/interfaces. Теперь за выдачу адресации и настройку маршрутизации отвечает dhcpcd [4].

По умолчанию на всех интерфейсах включен dhcp-клиент. Настройки интерфейсов меняются в файле /etc/dhcpcd.conf. Для того, чтобы поднять точку доступа необходимо прописать статический ip-адрес. Для этого в конец файла необходимо добавить следующие строки:

interface wlan0
static ip_address=192.168.11.1/24

Если интерфейс является беспроводным (wlan), то служба dhcpcd триггерит wpa_supplicant [13], который в свою очередь работает непосредственно с wifi-адаптером и переводит его в заданное состояние.

wpa_supplicant

wpa_supplicant – служба конфигурирует Wi-Fi адаптер. Служба wpa_supplicant работает не как самостоятельная (хотя как таковая существует), а запускается как дочерний процесс от dhcpcd.

Конфигурационный файл по умолчанию должен иметь путь /etc/wpa_supplicant/wpa_supplicant.conf. Пример конфигурационного файла:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=GB

network={
        ssid=\"CLEVER-SMIRNOV\"
        psk=\"cleverwifi\"
        mode=2
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        auth_alg=OPEN
}

Внутри конфига указываются общие настройки wpa_supplicant и параметры для настройки адаптера. Также конфигурационный файл содержит секции network – основные настройки Wi-Fi сети такие как SSID сети, пароль, режим работы адаптера. Таких блоков может быть несколько, но используется первый рабочий. Например, если вы указали в первом блоке подключение к некоторой недоступной сети, то адаптер будет настроен следующей удачной секцией, если такая есть. Подробнее о синтаксисе wpa_supplicant.conf [TODO WIKI].

wpa_passphrase

wpa_passphrase – утилита для создания секции network.

wpa_passphrase SSID PASSWORD

После выполнения команды скопируйте полученную секцию в ваш конфигурационный файл. Можно удалить закоментированное поле psk и оставить только поле с хешем пароля, либо наоборот.

network={
    ssid="SSID"
    #psk="PASSWORD"
    psk=c2161655c6ba444d8df94cbbf4e9c5c4c61fc37702b9c66ed37aee1545a5a333
}

Несколько Wi-Fi адаптеров

В системе может быть несколько Wi-Fi адаптеров. Если для них корректно подключены драйвера, то их можно увидеть вызвав ifconfig (например wlan0 и wlan1).

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

Для работы нескольких адаптеров с отдельными настройками для каждого, в стандартном вызываемом скрипте dhcpcd реализован механизм запуска разных конфигурационных скриптов. Для его использования необходимо переименовать стандартный файл конфига по следующему образцу: wpa_supplicant-<имя интерфейса>.conf, например wpa_supplicant-wlan0.conf.

Для применения настроек необходимо перезапустить родительский процесс – службу dhcpcd. Сделать это можно следующей командой:

sudo systemctl restart dhcpcd

DHCP сервер

dnsmasq-base

dnsmasq-base – консольная утилита, не являющаяся службой, для использования dnsmasq как службы надо установить пакет dnsmasq.

sudo apt install dnsmasq-base
# Вызов dnsmasq-base
sudo dnsmasq --interface=wlan0 --address=/clever/coex/192.168.11.1 --no-daemon --dhcp-range=192.168.11.100,192.168.11.200,12h --no-hosts --filterwin2k --bogus-priv --domain-needed --quiet-dhcp6 --log-queries

# Подробнее о dnsmasq-base
dnsmasq --help

# или
man dnsmasq

dnsmasq

sudo apt install dnsmasq
cat << EOF | sudo tee -a /etc/dnsmasq.conf
interface=wlan0
address=/clever/coex/192.168.11.1
dhcp-range=192.168.11.100,192.168.11.200,12h
no-hosts
filterwin2k
bogus-priv
domain-needed
quiet-dhcp6

EOF

isc-dhcp-server

sudo apt install isc-dhcp-server
# https://www.shellhacks.com/ru/sed-find-replace-string-in-file/
sed -i 's/INTERFACESv4=\"\"/INTERFACESv4=\"wlan0\"/' /etc/default/isc-dhcp-server
cat << EOF | sudo tee /etc/dhcp/dhcpd.conf
subnet 192.168.11.0 netmask 255.255.255.0 {
  range 192.168.11.11 192.168.11.254;
  #option domain-name-servers 8.8.8.8;
  #option domain-name "rpi.local";
  option routers 192.168.11.1;
  option broadcast-address 192.168.11.255;
  default-lease-time 600;
  max-lease-time 7200;
}

EOF
cat << EOF | sudo tee /etc/network/if-up.d/isc-dhcp-server && sudo chmod +x /etc/network/if-up.d/isc-dhcp-server
#!/bin/sh
if [ "\$IFACE" = "--all" ];
then sleep 10 && systemctl start isc-dhcp-server.service &
fi

EOF

Ссылки

  1. habr.com: Linux WiFi из командной строки с wpa_supplicant
  2. wiki.archlinux.org: WPA supplicant (Русский)
  3. blog.hoxnox.com: WiFi access point with wpa_supplicant
  4. dmitrysnotes.ru: Raspberry Pi 3. Присвоение статического IP-адреса
  5. thegeekdiary.com: Linux OS Service ‘network’
  6. frillip.com: Using your new Raspberry Pi 3 as a Wi-Fi access point with hostapt (также здесь есть инструкция по настройке форвардинга для использования RPi в качестве шлюза для выхода в интернет)
  7. habr.com: Настраиваем ddns-сервер на GNU/Linux Debian 6 (Хорошая статья по настройке ddns-сервера на основе bind и isc-dhcp-server)
  8. pro-gram.ru: Установка и настройка DHCP сервера на Ubuntu 16.04. (Настройка isc-dhcp-server)
  9. expert-orda.ru: Настройка DHCP-сервера на Ubuntu (Настройка isc-dhcp-server)
  10. academicfox.com: Raspberry Pi беспроводная точка доступа (WiFi access point) (Настройка маршрутов, hostapd, isc-dhcp-server)
  11. weworkweplay.com: Automatically connect a Raspberry Pi to a Wifi network (Есть настройки для создания открытой точки доступа)
  12. wiki.archlinux.org: WPA supplicant
  13. wiki.archlinux.org: dhcpcd (dhcpcd hook wpa_supplicant)

results matching ""

    No results matching ""