Если вы устали доверять бесплатным VPN-приложениям и хотите контролировать свой трафик при подключении к публичным Wi‑сетям, имеет смысл поднять собственный VPN. Raspberry Pi для этой задачи подходит отлично: миниатюрный, бесшумный, потребляет мало электричества и может работать 24/7. Я расскажу, как превратить «малиновку» в персональный VPN-сервер, который можно носить с собой или оставить дома и подключаться к нему с мобильного где угодно.
Что понадобится
Вот минимальный список, без которого не обойтись:
- Raspberry Pi (рекомендую Pi 3B+ или 4 с 1 ГБ памяти)
- Карта microSD 8–16 ГБ
- Блок питания (5 В, не менее 2 А для Pi 3, 3 А для Pi 4)
- Корпус (опционально, но удобно)
- Кабель Ethernet для первоначальной настройки
К этому добавьте доступ к домашнему роутеру и компьютер с SD-кардридером для записи образа.
Почему именно WireGuard
Долгое время стандартом был OpenVPN, но сегодня для мобильных устройств я рекомендую WireGuard. Он проще в настройке, работает быстрее и потребляет меньше ресурсов. На Raspberry Pi разница особенно заметна: при одинаковой скорости соединения WireGuard отдаёт на 20–30 % больше пропускной способности, чем OpenVPN, и почти не нагружает процессор. Для смартфона это означает стабильное соединение и заметно меньший расход батареи.
Шаг 1. Подготовка операционной системы
Скачайте Raspberry Pi Imager с официального сайта и запишите на карту образ Raspberry Pi OS Lite (без рабочего стола). В Imager же задайте имя хоста (например, vpn), логин/пароль и настройки Wi‑Fi, если не планируете использовать кабель. После первой загрузки подключитесь по SSH и выполните базовые обновления:
sudo apt update && sudo apt upgrade -y
Если будете использовать Wi‑Fi, убедитесь, что оно поднимается автоматически. Для сервера надёжнее Ethernet, но для компактного travel-роутера и Wi‑Fi вполне достаточно.
Шаг 2. Установка WireGuard
Установка занимает пару минут:
sudo apt install wireguard -y
После этого нужно сгенерировать пару ключей сервера:
wg genkey | tee server_private.key | wg pubkey > server_public.key
sudo chmod 600 server_private.key
Эти ключи понадобятся для конфигурации. Никогда не передавайте приватный ключ клиентам.
Шаг 3. Конфигурация сервера
Создайте файл конфигурации:
sudo nano /etc/wireguard/wg0.conf
Внутри разместите примерно такое содержимое (подставьте свой приватный ключ и желаемый диапазон IP):
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = СЮДА_ВСТАВЬТЕ_СВОЙ_ПРИВАТНЫЙ_КЛЮЧ
[Peer]
PublicKey = КЛЮЧ_КЛИЕНТА_ПОЗЖЕ
AllowedIPs = 10.0.0.2/32
Пока оставьте поле публичного ключа клиента пустым — мы добавим его после настройки телефона. Сохраните файл и запустите интерфейс:
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
Проверить состояние можно командой sudo wg show. Если видите интерфейс с вашим публичным ключом — полпути пройдено.
Шаг 4. Настройка маршрутизации и NAT
Чтобы трафик клиента шёл в интернет через Raspberry Pi, нужно включить IP forwarding и настроить маскарадинг. Откройте /etc/sysctl.conf и раскомментируйте строку:
net.ipv4.ip_forward=1
Примените немедленно:
sudo sysctl -p
Теперь добавьте правило iptables (подставьте имя своего сетевого интерфейса, обычно eth0 или wlan0):
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Чтобы правило не потерялось после перезагрузки, установите iptables-persistent:
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
Шаг 5. Проброс порта на роутере
Без этого шага ваш телефон не сможет найти сервер извне. Зайдите в веб-интерфейс домашнего роутера и добавьте правило проброса (Port Forwarding):
- Протокол: UDP
- Внешний порт: 51820
- Внутренний IP: адрес Raspberry Pi в вашей локальной сети
- Внутренний порт: 51820
Если у «сервера» нет статического локального IP, лучше закрепить за ним адрес в настройках DHCP роутера по MAC-адресу. Внешний IP вашего домашнего интернета можно узнать, зайдя на любой сервис вроде 2ip.ru с самого Raspberry Pi.
Шаг 6. Настройка мобильного клиента
Установите приложение WireGuard из App Store или Google Play. Создайте новый туннель и заполните поля:
- Имя — любое, например «HomeVPN»
- Ключи устройства — сгенерируются автоматически
- Адрес интерфейса — 10.0.0.2/32
- DNS — можно указать 1.1.1.1 или 8.8.8.8
- Peer (сервер) — публичный ключ сервера, конечная точка ваш_внешний_ip:51820
- Allowed IPs — 0.0.0.0/0 (весь трафик через VPN)
- Persistent Keepalive — 25 секунд
После сохранения включите переключатель. Если всё настроено верно, трафик пойдёт через Raspberry Pi, а снаружи будет виден ваш домашний IP.
Не забудьте вернуться на сервер и дописать публичный ключ клиента в секцию [Peer] в /etc/wireguard/wg0.conf, после чего выполните sudo wg syncconf wg0 <(wg-quick strip wg0), чтобы применить изменения без разрыва соединения.
Сравнение протоколов для мобильного VPN
| Параметр | WireGuard | OpenVPN |
|---|---|---|
| Скорость на Raspberry Pi | Высокая, почти не нагружает CPU | Средняя, при полной загрузке 100 Мбит/с может упираться в процессор |
| Расход батареи телефона | Низкий | Заметно выше |
| Сложность настройки | Очень простая | Требует больше шагов и файлов |
| Размер кода | ~4000 строк | ~100 000 строк |
| Ротация ключей | Автоматическая | Ручная или через скрипты |
Для мобильного клиента WireGuard — однозначный выбор. OpenVPN имеет смысл рассматривать только если нужна совместимость с очень старыми устройствами или специфичные корпоративные требования.
Что делать, если у вас «серый» IP
Многие провайдеры не дают внешний IP белого цвета. Проверить это можно, сравнив IP на 2ip.ru и IP, который видит ваш роутер в статусе WAN. Если они не совпадают — проброс порта не сработает. В этом случае есть два практичных пути:
- Позвонить к провайдеру и попросить «настоящий внешний IP» — часто это бесплатная опция.
- Использовать вспомогательный VPS с белым IP и пробросить на него трафик, но это уже другая история и дополнительные расходы.
Частые ошибки и как их избежать
- Забыли пробросить порт. Самая частая причина, почему «всё настроено, но не подключается». Проверьте проброс с помощью онлайн-сканеров портов.
- Не включили IP forwarding. Без него трафик клиента просто не попадёт в интернет. Проверьте командой
cat /proc/sys/net/ipv4/ip_forward— должно быть 1. - Перепутали ключи. Публичный ключ сервера должен стоять в конфигурации клиента, а публичный ключ клиента — в конфигурации сервера. Путаница приведёт к молчаливому отказу в подключении.
- Не сохранили iptables. После перезагрузки правило маскарадинга исчезнет, если не использовать
iptables-persistent. - Используете 53 или 443 порт без необходимости. Для WireGuard лучше оставить стандартный 51820 — он реже блокируется и не вызывает конфликтов.
Как лучше организовать запуск
Если вы планируете использовать VPN только дома, просто подключайте Raspberry Pi к роутеру кабелем и не трогайте. Если хотите брать с собой в поездки, можно немного усложнить схему:
- Соберите компактный корпус с питанием от powerbank (нужен выход 5В 2.5А).
- Настройте точку доступа Wi‑Fi прямо на Raspberry Pi, чтобы телефон подключался к ней как к роутеру.
- Используйте скрипт автозапуска WireGuard при загрузке — он уже включён через systemd.
В таком виде вы получаете карманный «безопасный роутер», через который можно пускать трафик даже в сомнительных кафе и отелях.
Итог
Собрать собственный VPN на Raspberry Pi — задача на полчаса, если не считать компиляцию образа и ожидание обновлений. Вы получаете полностью контролируемый туннель без сторонних сервисов, рекламных вставок и ограничений по трафику. Для мобильных устройств WireGuard — оптимальный выбор: быстро, экономично и надёжно. Начните с простой домашней установки, а при желании превратите её в портативный безопасный роутер, который всегда можно носить с собой.
