Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Авторы: Райли Барретт и Дилан Халланд
Цель этого проекта - разрешить IoT-устройству, например Weemo Smart Plug, Amazon Echo, Gaming Console или любому другому устройству с поддержкой Wi-Fi, подключаться к корпоративной сети WPA_EAP, используя Raspberry Pi Zero W в качестве пакета. экспедиторское устройство. Для устройств, подключающихся к корпоративной сети, требуются дополнительные шаги по настройке, а многие устройства вообще несовместимы. Используя мост Wi-Fi, любое устройство может легко получить доступ в Интернет, подключившись к Pi.
Система может быть реализована либо на одной беспроводной карте, либо на двух отдельных картах в зависимости от требований пользователя. Для систем, требующих более высокого уровня сигнала и более высокой скорости загрузки / выгрузки, лучше всего использовать выделенную беспроводную карту для размещения точки доступа. Однако для систем, где мощность сигнала и полоса пропускания менее важны или где требуется более экономичное решение, точка доступа и сетевое соединение могут использовать одну карту.
Запасы
Малина Pi Zero W
Доступ к клавиатуре и монитору
Некоторые знания программирования (для отладки, настройка Raspberry Pi)
Внешний адаптер / ключ Wi-Fi (опционально)
Шаг 1. Настройка Raspberry Pi
Начните с подключения Pi к клавиатуре и монитору (может потребоваться адаптер HDMI).
Затем вы можете начать с ввода команды:
sudo su
Это гарантирует, что у вас есть необходимые привилегии для изменения файлов на Pi.
Теперь вам нужно установить dnsmasq и hostapd с помощью команды:
apt-get install dnsmasq hostapd
Теперь вы можете приступить к настройке моста WiFi.
ПРИМЕЧАНИЕ. Следующее руководство будет содержать информацию для тех, кто использует одну встроенную беспроводную карту как для точки доступа, так и для подключения к сети. Также можно настроить систему для работы на двух отдельных картах. Для этого просто найдите закомментированные строки «wlan1» в предоставленных файлах и замените их соседними строками «ap0».
Шаг 2: 70-persistent-net.rules
Начните с поиска MAC-адреса вашего пи, набрав:
iw dev
Создайте следующий файл:
нано /etc/udev/rules.d/70-persistent-net.rules
и отредактируйте его так, чтобы он содержал следующие
SUBSYSTEM == "ieee80211", ACTION == "add | change", ATTR {macaddress} == "b8: 27: eb: c0: 38: 40", KERNEL == "phy0", / RUN + = "/ sbin / iw phy phy0 interface add ap0 type _ap ", / RUN + =" / bin / ip link set ap0 address b8: 27: eb: c0: 38: 40"
Этот файл сообщает системе выделить устройство для точки доступа при загрузке. Здесь MAC-адрес следует заменить на адрес вашего собственного пи, который вы только что нашли.
(Две беспроводные карты) Этот файл не требуется при использовании двух беспроводных карт.
Шаг 3: Hostapd.conf
Затем вы отредактируете файл hostapd.conf, введя следующее:
нано /etc/hostapd/hostapd.conf
Измените файл так, чтобы он соответствовал следующей конфигурации:
ctrl_interface = / var / run / hostapd
ctrl_interface_group = 0 # interface = ap0 interface = wlan1 driver = nl80211 ssid = testnet hw_mode = g channel = 6 wmm_enabled = 0 macaddr_acl = 0 auth_algs = 1 wpa = 2 wpa_passphrase = 0123456789 wpa_key_mgmt = WPA_key_mgmt = CCMP_WPAIRK = CCMPWPAIRK = 0123456789 wpa_key_mgmt = CCMPWise_mgmt = CCMP_WPAI
Обратите внимание, что хотя мой канал здесь установлен на 6, вам может потребоваться изменить это значение, чтобы оно соответствовало каналу, на котором включен wlan0. В некоторых сетях канал будет автоматически изменен для точки доступа, чтобы он соответствовал wlan0, но это не было моим опытом в корпоративной сети. Вы можете проверить, какие каналы в настоящее время используются и какими интерфейсами, набрав
канал iwlist
(Две беспроводные карты) Просто раскомментируйте строку, содержащую wlan1, и закомментируйте строку, содержащую ap0.
Шаг 4: Dnsmasq.conf
Теперь вы отредактируете файл dnsmasq.conf:
нано /etc/dnsmasq.conf
Раскомментируйте или добавьте следующие строки:
интерфейс = lo, ap0
# interface = lo, wlan1 no-dhcp-interface = lo bind-interfaces server = 8.8.8.8 требуется домен bogus-priv dhcp-range = 192.168.2.100, 192.168.2.200, 12h
Вы можете использовать здесь свою собственную подсеть, если хотите, просто убедитесь, что вы согласны.
(Две карты WirelessCard) Раскомментируйте строку, содержащую wlan1, и закомментируйте строку, содержащую ap0.
Шаг 5: интерфейсы
Далее вам нужно будет изменить файл интерфейсов:
нано / и т. д. / сеть / интерфейсы
авто лоу
auto ap0 #auto wlan1 auto wlan0 iface lo inet loopback iface eth0 inet dhcp allow-hotplug ap0 # allow-hotplug wlan1 iface ap0 inet static #iface wlan1 inet static address 192.168.2.1 netmask 255.255.255.0 hostapd /etc/hostapd/hostapd.conf allow-hotplug wlan0 iface wlan0 inet dhcp pre-up wpa_supplicant -B -Dwext -i wlan0 -c / etc / wpa_supplicant / wpa_supplicant.conf post-down killall -q wpa_supplicant
Стоит отметить, что интерфейс wlan0 ДОЛЖЕН идти после того интерфейса, который вы ему перенаправляете, иначе система не будет работать должным образом.
(Две беспроводные карты) Раскомментируйте любые строки, содержащие wlan1, и закомментируйте любые, содержащие ap0.
Шаг 6: Wpa_supplicant.conf
Теперь вы измените файл wpa_supplicant.conf, расположенный по адресу:
нано /etc/wpa_supplicant/wpa_supplicant.conf
Некоторые сети настроены иначе, чем другие, поэтому эта часть может потребовать некоторой доработки. Вот файл wpa_supplicant.conf, который позволил мне подключиться к сети в Cal Poly:
country = USctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1 network = {ssid = "SecureMustangWireless" scan_ssid = 1 key_mgmt = WPA-EAP pairwise = CCMP TKIP group = CCMP TKIP eap = PEAP identity = "username @ calpoly.edu "password =" your_password "phase1 =" peapver = 0 "phase2 =" MSCHAPV2 "}
Этот файл используется для настройки wlan0 для подключения к корпоративной сети. Некоторым корпоративным сетям для подключения требуется сертификат CA. Сеть кампуса Cal Poly не требует сертификата, поэтому я пропустил эту часть, но вы можете легко загрузить соответствующие сертификаты и добавить их в свой файл wpa_supplicant с помощью строки
ca_cert = "/ путь / к / cert.pem"
Шаг 7. Сценарий Hostapdstart
Последнее, что осталось сделать, это написать сценарий, который запускает оба интерфейса и настраивает пересылку пакетов при загрузке системы. Создайте файл с именем hostapdstart, набрав:
нано / usr / локальный / bin / hostapdstart
Добавьте в файл следующее
sudo ifdown --force wlan0 && sudo ifdown --force ap0 && sudo ifup ap0 && sudo ifup wlan0
#sudo ifdown --force wlan0 && sudo ifdown --force wlan1 && sudo ifup wlan1 && sudo ifup wlan0 sudo sysctl -w net.ipv4.ip_forward = 1 sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24! -d 192.168.2.0/24 -j MASQUERADEsudo systemctl перезапустить dnsmasq
Этот сценарий отключает оба интерфейса, затем возвращает их обратно в надлежащем порядке, сообщает пи, что вы хотите пересылать пакеты с одного интерфейса на другой, и, наконец, перезапускает dnsmasq, чтобы изменения вступили в силу.
(Две беспроводные карты) раскомментируйте строку с wlan1 и закомментируйте строку с ap0.
Шаг 8: Rc.local
Наконец, мы хотим, чтобы система запускалась при загрузке системы, поэтому мы изменим файл rc.local, который запускается при загрузке:
нано /etc/rc.local
Просто добавьте в конец файла следующую строку:
hostapdstart> 1 &
Ваш файл должен выглядеть примерно так:
_IP = $ (имя хоста -I) || trueif ["$ _IP"]; затем printf "Мой IP-адрес% s / n" "$ _IP" fi
hostapdstart> 1 &
выход 0
Шаг 9: перезагрузка
Вот и все! Теперь, если у вас все настроено правильно, и ваш WiFi-ключ подключен (если вы его используете), вам просто нужно перезагрузить Raspberry Pi с помощью команды:
перезагружать
После успешной перезагрузки Pi вы сможете увидеть имя своей точки доступа на любом устройстве (телефоне, ноутбуке и т. Д.). После того, как вы подключитесь с использованием указанного пароля, он должен подключить вас напрямую к желаемой корпоративной сети!
Особая благодарность следующим ссылкам за то, что они дают нам представление о том, как подойти к этому проекту:
- https://blog.thewalr.us/2017/09/26/raspberry-pi-ze…
- https://www.raspberrypi.org/forums/viewtopic.php?p…
- https://www.raspberrypi.org/forums/viewtopic.php?f…
Дайте нам знать, если у вас есть какие-либо вопросы, комментарии или предложения!
Второе место в конкурсе IoT Challenge