Как собрать собственный VPN-сервер на Raspberry Pi для смартфона

Если вы устали доверять бесплатным 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 — оптимальный выбор: быстро, экономично и надёжно. Начните с простой домашней установки, а при желании превратите её в портативный безопасный роутер, который всегда можно носить с собой.

Virtual-Sim.ru