Как установить и настроить WireGuard на VPS
WireGuard — самый быстрый и лёгкий способ поднять личный VPN на своём сервере: пара сотен строк кода в ядре Linux, современная криптография и подключение за секунды. Ниже — как установить и настроить WireGuard на VPS с нуля: генерация ключей, конфигурация сервера и клиента, форвардинг трафика, firewall и подключение телефона по QR-коду.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Почему WireGuard, а не OpenVPN
Старые VPN вроде OpenVPN и IPsec тяжелы: сложные конфиги, заметная нагрузка на процессор, медленное переподключение при смене сети. WireGuard устроен иначе. Он встроен прямо в ядро Linux начиная с версии 5.6, использует современные шифры (ChaCha20, Curve25519, BLAKE2s) и обходится минимумом настроек — весь конфиг умещается в десяток строк.
Что это даёт на практике:
- скорость близка к каналу сервера, оверхед минимален;
- мгновенное переподключение при переходе с Wi-Fi на мобильную сеть;
- один и тот же протокол одинаково хорошо работает на роутере, ноутбуке и телефоне;
- код компактен, а значит меньше поверхность для уязвимостей.
Для личного VPN, обхода блокировок и безопасного доступа к своим сервисам WireGuard сегодня — выбор по умолчанию. Ресурсов ему нужно немного: подойдёт минимальный VPS с 1 ядром и 1 ГБ RAM.
Стоит понять модель безопасности WireGuard, потому что она отличается от старых VPN. Здесь нет логинов и паролей — доверие строится исключительно на паре ключей, как в SSH. Сервер принимает подключение только от тех клиентов, чьи публичные ключи явно перечислены в его конфиге, а клиент доверяет только серверу с известным ему публичным ключом. Это называется криптографической маршрутизацией: каждый внутренний адрес в туннеле жёстко привязан к конкретному ключу. Подход проще и надёжнее парольных схем — нечего подобрать перебором, а компрометация одного клиента не открывает доступ остальным. Приватные ключи при этом никогда не передаются по сети и не покидают своего владельца — именно в этом суть безопасности всей схемы.
Стоит понимать и обратную сторону простоты. WireGuard намеренно не умеет маскировать свой трафик под обычный HTTPS — он оптимизирован под скорость, а не под скрытность. В спокойных условиях это не проблема, но в сетях с глубокой инспекцией пакетов протокол распознаётся и может блокироваться. Если ваша задача — именно обход жёстких блокировок, WireGuard часто заворачивают внутрь дополнительного слоя обфускации. Для повседневного личного VPN, доступа к своим сервисам и стабильного чистого IP всё работает из коробки, и именно этот сценарий мы разберём по шагам.
Готовим сервер и включаем форвардинг
Начните с обновления системы на свежем VPS с Ubuntu 24.04:
apt update && apt upgrade -y
apt install -y wireguard wireguard-tools qrencode
Пакет wireguard-tools даёт утилиту wg, а qrencode понадобится, чтобы подключить телефон по QR-коду. Дальше включите пересылку IP-пакетов — без неё сервер не будет маршрутизировать трафик клиентов:
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-wireguard.conf
sysctl -p /etc/sysctl.d/99-wireguard.conf
Проверьте, что параметр применился:
sysctl net.ipv4.ip_forward
Ответ net.ipv4.ip_forward = 1 означает, что форвардинг активен.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS под WireGuardГенерируем ключи сервера и клиента
WireGuard работает на паре ключей у каждой стороны. Создайте ключи сервера в защищённом каталоге:
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
umask 077 гарантирует, что приватный ключ не прочитает никто, кроме root. Теперь сгенерируйте ключи для первого клиента (например, телефона):
wg genkey | tee client_private.key | wg pubkey > client_public.key
Посмотреть содержимое ключей можно через cat:
cat server_private.key server_public.key client_private.key client_public.key
Держите эти значения под рукой — они пойдут в конфиги. Логика распределения простая и симметричная: приватный ключ сервера подставляется в конфиг сервера, публичный ключ клиента — тоже в конфиг сервера, и зеркально наоборот для клиента. Приватный ключ никогда не покидает своё устройство: сервер знает только публичные ключи клиентов, клиент — только публичный ключ сервера. Именно на этой асимметрии держится вся защита, поэтому приватные ключи нельзя пересылать по почте или мессенджерам и тем более хранить в открытых репозиториях.
Каждому новому устройству — своя пара ключей и свой адрес внутри подсети. Не соблазняйтесь идеей раздать один конфиг на телефон и ноутбук сразу: при одинаковых ключах и адресе пиры будут конфликтовать, а туннель — рваться. Пять минут на генерацию отдельной пары окупаются стабильной работой.
Пишем конфиг сервера
Создайте файл интерфейса /etc/wireguard/wg0.conf. Подставьте свой приватный ключ сервера и публичный ключ клиента:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <PRIVATE_KEY_СЕРВЕРА>
[Peer]
PublicKey = <PUBLIC_KEY_КЛИЕНТА>
AllowedIPs = 10.8.0.2/32
Разберём поля. Address — внутренний адрес сервера в VPN-подсети 10.8.0.0/24. ListenPort — UDP-порт, на котором сервер принимает подключения (51820 — стандарт). Блок [Peer] описывает клиента: его публичный ключ и адрес 10.8.0.2, который ему выделяется.
Чтобы трафик клиентов выходил в интернет через сервер, нужен NAT. Добавьте правила в конфиг через PostUp/PostDown. Сначала узнайте имя внешнего сетевого интерфейса:
ip route get 1.1.1.1 | awk '{print $5; exit}'
Обычно это eth0 или ens3. Подставьте его в блок [Interface]:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Настраиваем клиента и подключаем телефон
Конфиг клиента компактнее. Создайте файл client.conf (на компьютере клиента или временно на сервере для генерации QR):
[Interface]
Address = 10.8.0.2/32
PrivateKey = <PRIVATE_KEY_КЛИЕНТА>
DNS = 1.1.1.1
[Peer]
PublicKey = <PUBLIC_KEY_СЕРВЕРА>
Endpoint = <IP_СЕРВЕРА>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Ключевые поля клиента: Endpoint — публичный IP вашего VPS и порт; AllowedIPs = 0.0.0.0/0 направляет через туннель весь трафик (для полного VPN); DNS задаёт резолвер, чтобы не было утечек; PersistentKeepalive = 25 держит соединение живым за NAT.
Для телефона не нужен файл — покажите конфиг в виде QR-кода прямо в терминале:
qrencode -t ansiutf8 < client.conf
Откройте приложение WireGuard на телефоне, нажмите «Добавить туннель → Сканировать QR-код» — и туннель готов.
Запуск, firewall и автозагрузка
Поднимите интерфейс и включите автозапуск при загрузке сервера:
systemctl enable --now wg-quick@wg0
Проверьте статус туннеля:
wg show
Команда покажет пиров, их ключи и объём переданных данных. После подключения клиента напротив него появятся latest handshake и счётчики трафика — это признак живого туннеля.
Теперь firewall. Откройте UDP-порт WireGuard и SSH, остальное закройте:
ufw allow 22/tcp
ufw allow 51820/udp
ufw enable
Проверьте с клиента, что весь трафик идёт через сервер — внешний IP должен смениться на адрес VPS:
curl ifconfig.me
Если в ответ пришёл IP вашего VPS — VPN работает. Добавить новых клиентов просто: сгенерируйте им ключи, впишите ещё один блок [Peer] в wg0.conf с уникальным адресом (10.8.0.3/32 и далее) и перезапустите интерфейс командой systemctl restart wg-quick@wg0.
Пара слов о типичных граблях. Если после подключения нет интернета, но wg show показывает рукопожатие — почти всегда виноват форвардинг или NAT: перепроверьте, что net.ipv4.ip_forward равен единице, а имя внешнего интерфейса в правилах MASQUERADE совпадает с реальным. Если рукопожатия нет вовсе, дело в сети: убедитесь, что UDP-порт 51820 открыт и в ufw, и в панели/файрволе провайдера, а Endpoint в конфиге клиента указывает на верный публичный IP. Утечки DNS проверяются просто: после подключения все запросы должны идти на резолвер из поля DNS, а внешний IP в браузерном тесте — совпадать с адресом VPS. Наконец, не открывайте наружу ничего лишнего: для WireGuard достаточно одного UDP-порта и SSH, всё остальное закрывается файрволом.
Локация сервера решает задачу
WireGuard одинаково быстр везде, но смысл VPN задаёт локация VPS. Нужен доступ к зарубежным сервисам, AI и стримингу, которые закрыты в РФ, — берите сервер в США или UK с чистым белым IP: свой выделенный адрес не банят за чужие действия, в отличие от общих коммерческих VPN. Нужен минимальный пинг для игр или работы с российскими ресурсами — подойдёт RU-локация.
Ресурсов WireGuard почти не требует: минимального тарифа с 1 ядром и 1 ГБ RAM хватает на десяток клиентов и полный туннель. Главное — чистый IP, а не мощность железа. Такой VPS поднимается за минуты, и туннель на него настраивается по этой инструкции примерно за десять.
Пара практических советов на будущее. Если VPN нужен не для всего трафика, а только для доступа к конкретным ресурсам или своей внутренней сети, замените в конфиге клиента AllowedIPs = 0.0.0.0/0 на нужные подсети — тогда через туннель пойдёт лишь этот трафик, а остальное останется на прямом канале, что быстрее и удобнее для локальных сервисов. Если же основная задача — обойти блокировки, помните, что стандартный порт 51820 и сам протокол WireGuard в некоторых сетях распознаются и режутся; на этот случай существуют обёртки, маскирующие трафик, но начинать стоит с базовой схемы и усложнять только при реальной необходимости. И регулярно обновляйте систему: WireGuard живёт в ядре, и свежие патчи безопасности приходят вместе с обновлениями Ubuntu.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS под WireGuardОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Сколько ресурсов нужно под WireGuard?
Минимум: 1 ядро и 1 ГБ RAM. Протокол крайне лёгкий, вся нагрузка — это пропускная способность канала, а не процессор.
Чем свой WireGuard лучше платного VPN-сервиса?
Выделенным чистым IP, который принадлежит только вам: его не банят за чужие нарушения, скорость не делят соседи, а капча Cloudflare появляется в разы реже.
Как добавить второе устройство?
Сгенерируйте новую пару ключей, добавьте блок [Peer] с адресом 10.8.0.3/32 в wg0.conf и перезапустите интерфейс. Каждому устройству — свой адрес.
Как оплатить VPS под WireGuard из России?
В MAATRIX доступна оплата картой российского банка, через СБП, криптовалютой и токеном MAAT — иностранная карта не нужна.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.