Настройка Raspberry
Взято из открытых источников
Вся представленная информация несёт лишь ознакомительный характер и не призывает вас к действиям нарушающих закон!
Основной чат https://t.me/+wu6HaZAs8lkzNzM6
Основной канал https://t.me/+zVmNi-KGFtYyZTgy
Обучение https://t.me/+O-KVFmBigsk0ZjYy
Сейчас телеграмм активно блокирует подобного рода каналы и имея уже неоднократный опыт было принято решение создать резерв . Оставьте сразу заявку чтоб не потерять нас
https://t.me/+xkl9r-o9nQAwMDdi чат
https://t.me/+yN4ueJTkCApmOTc6 канал
Заметил что стал актуален вопрос по raspberry сети много информации по настройке точки доступа , в каждом таком гайде некоторые шаги противоречили друг другу, поэтому вот вам два ранее точно работавших способа
Надеюсь, они кому-нибудь помогут.
Настройка Raspberry Pi в качестве беспроводной точки доступа
Установка Raspberry OS
Сразу хотел бы сконцентрировать внимание на том, что систему нужно устанавливать через BalenaEtcher, а не через Raspberry Pi Imager, иначе у вас возникнут проблемы на этапе настройки сетевого адаптера, который просто-напросто заблокирует rfkill.
Wi-Fi is currently blocked by rfkill. Use raspi-config to set the country before use.
Насколько я знаю, данная проблема решаема, но если есть способ её изначально избежать, то почему бы и нет.
1 Шаг. Установка утилит
Для начала устанавливаем все основные утилиты:
- Hostapd — Daemon, который позволяет плате выступать в качестве точки доступа и сервера аутентификации.
- Dnsmasq — Лёгкий и быстрый DNS, DHCP и TFTP-сервер, который используется для обеспечения доменными именами и связанными с ними сервисами небольших сетей.
- Dhcpcd — Клиент DHCP (по идее должен быть установлен по умолчанию, но у меня его не было).
sudo apt install hostapd dnsmasq dhcpcd
2 Шаг. Настройка DHCP
Для работы точки доступа нужно полностью выделить беспроводной интерфейс и сделать так, чтобы никакая другая служба не вмешивалась в его работу, в том числе и сам DHCP.
Поэтому в файле /etc/dhcpcd.conf в конец добавляем следующую строку:
denyinterfaces wlan0
3 Шаг. Настройка интерфейса
Теперь перейдём к настройке самого беспроводного интерфейса. Он должен иметь статический IP, иначе другие устройства при попытке подключения не смогут её найти.
Для этого в файл /etc/network/interfaces добавляем настройку wlan0 или же изменяем, если она уже существует, на следующую:
allow-hotplug wlan0
iface wlan0 inet static
wireless-mode Master
address 192.168.52.1
netmask 255.255.255.0
network 192.168.52.0
broadcast 192.168.52.255
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf4 Шаг. Настройка DNS сервера
Для нормального функционирования DNS-сервера можно воспользоваться следующей конфигурацией, которую необходимо поместить в /etc/dnsmasq.conf:
interface=wlan0 listen-address=192.168.52.1 bind-interfaces server=8.8.8.8 domain-needed bogus-priv dhcp-range=192.168.52.5,192.168.52.250,12h
Также при уже тестировании настройки точки доступа я столкнулся с проблемой, что Dnsmasq запускается раньше, чем применяются настройки интерфейса, и из-за этого первый запуск происходит с ошибкой.
Это можно решить, добавив параметр Restart в [Service] сервисный файл (/lib/systemd/system/dnsmasq.service):
Restart=always RestartSec=5s
5 Шаг. Настройка hostapd
В настройках hostapd (/etc/hostapd/hostapd.conf) необходимо прописать параметры точки доступа, её параметры безопасности и имя:
interface=wlan0 ssid=[Имя сети] hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_key_mgmt=WPA-PSK wpa_passphrase=[Пароль сети] rsn_pairwise=CCMP
Также, чтобы данные настройки работали, нужно добавить путь к ним в переменную DAEMON_CONF в /etc/default/hostapd:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
6 Шаг. Активация служб
Последним шагом остаётся только включить все необходимые службы:
sudo systemctl enable hostapd sudo systemctl start hostapd sudo systemctl enable dnsmasq sudo systemctl start dnsmasq
Заключение
На этом настройка точки завершена, и можно её протестировать, подключившись по SSH или, как в моём случае, попробовав зайти на поднятый Web-сервер:
Умный VPN-сервер на Raspberry Pi: Установка и Настройка
Я полагаю, что у вас установлена последняя версия OS Raspbian, все дефолтные пакеты имеют последние версии и настроен доступ по SSH, приступаем к установке дополнительного ПО, для построения VPN сервера.
Universal Plug-n-Play (UPnP) - это протокол для открытия портов на вашем интернет-маршрутизаторе, чтобы приложения могли общаться друг с другом через Интернет. Нам это нужно, чтобы Putty могла общаться с вашим RPi после его установки в удаленном месте, и чтобы клиент OpenVPN на ваших устройствах Windows и / или Android мог его использовать.
Создаваемый нами VPN-сервер RPi практически не требует обслуживания. Но время от времени вам захочется проверять его и обновлять программное обеспечение. SSH с Putty позволяет нам делать все это, а программное обеспечение UPnP гарантирует, что мы можем получить доступ к нашему RPi из любой точки мира.
MiniUPnP самый простой в установке и самый быстрый в работе. Итак, мы собираемся установить его изначально. Если у вас есть проблемы с тем, как MiniUPnP будет работать с вашим маршрутизатором, вы можете обратиться ко следующей части этой статьи, чтобы установить PortMapper, альтернативный программный пакет UPnP.
Выполняем команды установки MiniUPnP и его модуля Python:
apt install miniupnpc apt install python-pip pip install miniupnpc
Ответьте «Y» на любой запрос о дополнительном дисковом пространстве и т. Д. Первая команда устанавливает программу upnpc из командной строки для тестирования. Вторая команда устанавливает установщик пакетов Python (PIP), который используется в третьей команде для установки слоя, используемого пакетом miniupnpc Python в нашем скрипте. Теперь протестируем. Введите следующее:
upnpc -s
Среди всего выплевываемого хлама должна быть строка, начинающаяся с:
Однако, если вы этого не видите или вместо этого находите сообщения об ошибках, такие как “No IGD UPnP Device found on the network ! ”
То MiniUPnP не сможет подключиться к вашему маршрутизатору. Это может быть связано с тем, что на вашем маршрутизаторе не включен UPnP или MiniUPnP несовместим с вашим маршрутизатором. Обратитесь к руководству пользователя вашего маршрутизатора, чтобы убедиться, что он поддерживает UPnP и как его включить.
Если MiniUPnP не работает с вашим маршрутизатором и поддерживает UPnP, перейдите к следующему разделу, PortMapper (альтернатива MiniUPnP), чтобы использовать его. В противном случае мы закончили с этой частью.
PortMapper (альтернатива MiniUPnP)
Вы здесь, потому что MiniUPnP не может связаться с вашим маршрутизатором, хотя он поддерживает UPnP и включен. Не бойтесь, у нас есть альтернатива.
PortMapper - это приложение Java, поэтому для его установки требуется больше работы. Он также работает немного медленнее, но для нас это не должно быть проблемой.
Если вы еще не вошли в свой RPi с помощью puTTY, сделайте это сейчас, установите пользователя root и перейдите в «корневую» папку:
sudo -s cd / root
Теперь запустите команду wget, чтобы загрузить PortMapper:
wget -O PortMapper.jar https://downloads.sourceforge.net/project/upnp-portmapper/PortMapper-1.9.5.jar
Команда wget ‘web-gets’ PortMapper-1.9.5.jar переименовывает его в просто PortMapper.jar (с этим намного проще работать).
- Примечание: я тестировал это ТОЛЬКО с версией 1.9.5 PortMapper. Могут быть более новые версии этой программы (а некоторые являются альфа-версиями (непроверенными)). Использование любой другой версии может не работать и не поддерживается.
PortMapper требует Java Runtime Enviroment (JRE), и в зависимости от того, какой вариант Raspbian вы скачали, он может не быть установлен. Итак, мы запустим команду установки для JRE, чтобы убедиться, что она у нас есть:
apt-get install default-jre-headless
Если он уже там, вы увидите сообщение о том, что это актуально. Если нет, вам будет предложено установить его вместе с требованиями к пространству. Просто ответьте "Y"
Мы выполняем «headless» установку, потому что мы общаемся только с RPi через SSH, а не через графический интерфейс пользователя (GUI), поэтому нам не нужны все эти дополнительные компоненты. Тем не менее, он немного велик и требует времени на установку.
Теперь давайте протестируем его и убедимся, что он может взаимодействовать с вашим маршрутизатором. Введите эту единственную строку:
java -jar PortMapper.jar -s | grep 'Router Info:'
Это выдаст около дюжины строк (если все работает правильно). Они должны содержать такую информацию, как название вашего маршрутизатора, производитель, модель и т. Д. Если вы не видите эту информацию или вместо этого видите сообщения об ошибках, то PortMapper несовместим с вашим маршрутизатором.
Надеюсь, что у вас всё получилось, но вопросы можно задавать в комментариях.
OpenVPN на Jessie плохо работает с адаптерами WiFi. При запуске разрывает соединение Wi-Fi. Итак, если вы используете свой RPi по беспроводной сети, нам нужно сначала отредактировать файл:
nano /etc/default/ifplugd
Отредактируйте строку HOTPLUG_INTERFACES, чтобы она выглядела так:
HOTPLUG_INTERFACES="eth0 wlan0 "
Нажмите Ctrl + X и Y, чтобы сохранить и выйти.
- Примечание: Приведенный выше файл ifplugd не применяется к моделям Raspberry Pi 3 или версии Raspbian Stretch или Buster.
Так, как мы предпочитаем подключение по Ethernet, просто идем далее. Итак, теперь выполняем следующую команду на вашем Raspberry Pi:
apt install openvpn
Ага, теперь у вас есть рабочий VPN-сервер! Но… Проблема в том, что никто не может с ним поговорить или даже не знает, как с ним разговаривать. Так что нам предстоит еще немного поработать. Нам нужно сгенерировать некоторые ключи, как открытые, так и частные, которые будут использоваться для подключения к нашему VPN-серверу RPi. Мы будем использовать RSA (Rivest-Shamir-Adleman) Cryptosystem. Он уже встроен в OpenVPN, поэтому все, что нам нужно сделать, это указать OpenVPN использовать его. Выполняем следующую команду:
cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa
Это копирует программное обеспечение RSA из каталога «examples» в каталог «etc», чтобы мы могли внести изменения и не испортить оригинал. Теперь мы просто «сменим каталог» на нашу рабочую копию, чтобы мы могли с ней работать:
cd /etc/openvpn/easy-rsa
И сделаем рабочую копию файла vars.example:
cp vars.example vars
На этом этапе нет необходимости изменять какие-либо параметры в файле vars, значения по умолчанию хорошо подходят для этой настройки. Теперь пришло время сгенерировать сертификат CA (Центр Сертификации) и сертификат корневого CA. Это первый шаг в создании пары ключей (сервер и клиент) для использования нашего VPN-сервера. Так что сделайте следующее: Инициализируйте Public Key Infrastructure (PKI).
Инфраструктура открытых ключей
(ИОК, PKI - Public Key Infrastructure) - набор средств (технических, материальных, людских и т. д.), распределённых служб и компонентов, в совокупности используемых для поддержки криптозадач на основе закрытого и открытого ключей. В основе PKI лежит использование криптографической системы с открытым ключом и несколько основных принципов:
- Закрытый ключ (private key) известен только его владельцу;
- Удостоверяющий центр создает электронный документ — сертификат открытого ключа, таким образом удостоверяя факт того, что закрытый (секретный) ключ известен эксклюзивно владельцу этого сертификата, открытый ключ (public key) свободно передается в сертификате;
- Никто не доверяет друг другу, но все доверяют удостоверяющему центру;
- Удостоверяющий центр подтверждает или опровергает принадлежность открытого ключа заданному лицу, которое владеет соответствующим закрытым ключом.
Это создает структуру для нашего главного сертификата полномочий (CA) и пар открытого и закрытого ключей (на самом деле эти ключи создаются не только для структур):
./easyrsa init-pki
./easyrsa build-ca nopass
Вы можете не использовать опцию «nopass», и вам будет предложено ввести кодовую фразу. Она понадобится вам каждый раз при подключении к серверу OpenVPN. Но если вы не раскрываете свой центр сертификации публично, нет необходимости защищать его паролем с помощью ключевой фразы. Теперь вам будет предложено ввести «Common name». Я рекомендую использовать имя хоста Raspberry Pi, если вы его указали, или уникальное имя для этого сервера. Если вы создадите несколько серверов Raspberry Pi VPN, их будет легче отличить друг от друга.
Теперь пришло время создать сертификат корневого центра сертификации, поэтому введите в командной строке # следующее:
./easyrsa gen-req servername nopass
Servername - это именно то, что вы ввели в поле «Common Name». Вы ведь уже его не забыли? Вам также снова будет предложено ввести «Common Name», но по умолчанию оно должно соответствовать введенному имени сервера, поэтому просто нажмите Enter. Теперь нам нужно подписать этот сертификат сервера, чтобы его можно было использовать:
./easyrsa sign-req server servername
Где "servername", опять же, это имя сервера, которое вы выбрали выше. Затем просто ответьте «yes» на приглашение.
Далее следует создать обмен ключами Диффи-Хеллмана. Это позволяет двум компьютерам обмениваться секретными ключами, не зная заранее, кто они. Введите (это может занять некоторое время... например, часы, если вы используете размер ключа 2048 бит - настоятельно рекомендуется):
- Протокол Диффи — Хеллмана (Diffie–Hellman, DH) — криптографический протокол, позволяющий двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи. Полученный ключ используется для шифрования дальнейшего обмена с помощью алгоритмов симметричного шифрования.
- Схема открытого распределения ключей, предложенная Диффи и Хеллманом, произвела настоящую революцию в мире шифрования, так как снимала основную проблему классической криптографии — проблему распределения ключей.
- В чистом виде алгоритм Диффи — Хеллмана уязвим для модификации данных в канале связи, в том числе для атаки «Man-in-the-middle (человек посередине)», поэтому схемы с его использованием применяют дополнительные методы односторонней или двусторонней аутентификации.
./easyrsa gen-dh
Сделайте кофе (или посмотрите фильм, если вы использовали размер ключа 2048 бит) и вернитесь сюда, когда он будет готов. Иногда, если вам действительно повезет, это может произойти быстро, если он рано найдет подходящую пару случайных простых ключей.
У меня это заняло примерно 40 минут, и результатом будет следующий вывод:
Теперь мы должны предпринять дополнительные меры безопасности, чтобы предотвратить атаки типа «отказ в обслуживании» (DoS). Нам нужно создать код аутентификации сообщений на основе хэша (HMAC).
Если сервер OpenVPN увидит VPN-запрос без этого кода, он даже не ответит, что предотвратит DoS-атаки.
openvpn --genkey --secret pki/ta.key
Затем нам нужно создать файл конфигурации сервера, который сообщает OpenVPN, как работать на этом RPi.
nano /etc/openvpn/server/server.conf
Затем скопируйте в nano следующее:
# local 111.111.111.111 dev tun proto udp port 1194 ca /etc/openvpn/easy-rsa/pki/ca.crt cert /etc/openvpn/easy-rsa/pki/issued/SERVERNAME.crt # TBD - Change SERVERNAME to your Server name key /etc/openvpn/easy-rsa/pki/private/SERVERNAME.key # TBD - Change SERVERNAME to your Server name dh /etc/openvpn/easy-rsa/pki/dh.pem server 10.8.0.0 255.255.255.0 ifconfig 10.8.0.1 10.8.0.2 push "route 10.8.0.1 255.255.255.255" push "route 10.8.0.0 255.255.255.0" push "route 111.111.111.111 255.255.255.0" push "dhcp-option DNS 222.222.222.222" push "redirect-gateway def1" client-to-client duplicate-cn keepalive 10 120 tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0 compress lzo persist-key persist-tun user nobody group nogroup cipher AES-128-CBC log /var/log/openvpn.log status /var/log/openvpn-status.log 20 verb 1
Вам нужно изменить две строки. Все они помечены "# TBD". Установите имя вашего OpenVPN-сервера вместо SERVERNAME (это CaSe Sensitive!). Нажмите Ctrl + X и Y, чтобы сохранить и выйти.
- Примечание: не беспокойтесь о необычных IP-адресах 111.111.111.111 и 222.222.222.222, небольшой скрипт в следующей главе все это установит.
Почти сделано. Следующая часть - это настройка файла конфигурации сервера, который позволяет OpenVPN отправлять / получать данные (пересылка пакетов). По умолчанию ОС Raspbian все это блокирует.
nano /etc/sysctl.conf
Расскомментируем следующую строку:
Нажмите Ctrl + X и Y, чтобы сохранить и выйти. Затем введите это, чтобы применить это изменение:
sysctl -p
Затем нам нужно немного открыть брандмауэр Raspbian, чтобы позволить OpenVPN общаться с внешним миром. Для этого нам нужно создать новый файл.
nano /root/open_vpn_firewall.sh
#!/bin/sh
sleep 30
Adapter=`ip -o link show | awk '{print $2,$9}' | grep 'UP'| awk -F: '{print $1}'`
if [ -z "$Adapter" ]
then
Adapter='eth0'
fi
echo "Adapter = |$Adapter|"
/sbin/iptables -t nat -A POSTROUTING -o $Adapter -j MASQUERADE
/sbin/iptables -A FORWARD -i $Adapter -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i tun0 -o $Adapter -j ACCEPT
Мы только что создали сценарий Bash, и нам нужно сделать его исполняемым и настроить так, чтобы он запускался при каждой загрузке нашего RPi.
Итак, введите эти 2 команды, чтобы сделать его исполняемым и назначить владельцем "root":
chmod 700 /root/open_vpn_firewall.sh chown root /root/open_vpn_firewall.sh