Все руководства
Начало работы
VPS
- Операционные системы для VPS
- Снапшоты VPS и резервные копии на внешней площадке
- Как развернуть собственный VPN на VPS с помощью WireGuard
- Как запустить ретранслятор, мост или onion-сервис Tor на VPS
- Как самостоятельно развернуть BTCPay Server на VPS
- Как запустить узел Bitcoin или Monero на VPS
Выделенные серверы
Windows RDP
Windows Server 2019 , 2022 или 2025 противWindows 10 и 11 для RDP- Как подключиться к серверу Windows RDP с любого устройства
GPU-серверы
Безопасность
На этой странице
- Перед началом: что нужно для VPS с WireGuard
- Установка WireGuard на Ubuntu или Debian
- Генерация ключей сервера и клиентов
- Конфигурация сервера WireGuard
- Включение пересылки IP-пакетов
- Открытие портов в брандмауэре
- Запуск туннеля и автозапуск при загрузке
- Добавление клиента
- Добавление IPv6 (необязательно)
- Проверка на утечки
- Обновление VPS с WireGuard и добавление клиентов
- Устранение неполадок
- Часто задаваемые вопросы
Чтобы развернуть собственный VPN на VPS с помощью WireGuard, установите пакет wireguard/etc/wireguard/wg0.confwg-quick@wg0
Эти шаги настраивают WireGuard на офшорном VPS с SERVER_IPeth0
Перед началом: что нужно для VPS с WireGuard
- VPS с публичным IPv4-адресом. Каждый тариф включает выделенный IPv4-адрес и блок IPv6 /64.
- Root-доступ по SSH.
- Приложение WireGuard на каждом устройстве. На странице установки WireGuard перечислены официальные приложения для Windows, macOS, iOS и Android; на компьютерах с Linux используется пакет
.wireguard-tools
Достаточно самого маленького тарифа. WireGuard работает внутри ядра Linux и потребляет мало памяти, поэтому тарифа Dinghy (
Локация рядом с вами обеспечит быструю работу в интернете, а локация в другой стране изменит то, чьи законы применяются к серверу. Перед выбором сравните задержку на странице о сети и прочитайте наше руководство об офшорном VPS для VPN. Как и в случае с любым VPS без KYC, ваш аккаунт — это адрес электронной почты и пароль, а оплата — в криптовалюте.
Наши правила допустимого использования относят VPN к приветствуемым видам использования. Трафик ваших устройств выходит в интернет с IP-адреса вашего сервера, поэтому нарушения, совершённые через туннель, считаются исходящими с вашего сервера: давайте доступ только тем, кому доверяете. Исходящий порт 25 по умолчанию закрыт.
Установка WireGuard на Ubuntu или Debian
Чтобы настроить WireGuard на
apt update
apt install -y wireguard ufw qrencode
wg --version
Пакет wireguardwgwg-quickufwiptablesqrencode
Генерация ключей сервера и клиентов
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee laptop.key | wg pubkey > laptop.pub
umask 077/etc/wireguardwg genkeywg pubkey
Используйте для каждого устройства отдельную пару ключей, названную по его имени, — так можно отозвать доступ одного устройства, не затрагивая остальные. Ключи устройства можно также сгенерировать на самом устройстве и скопировать на сервер только его открытый ключ.
Конфигурация сервера WireGuard
Вся настройка сервера WireGuard хранится в одном файле. Сначала определите интерфейс, через который идёт интернет-трафик сервера:
ip route show default
Слово после deveth0ens3enp1s0$(cat ...)
cat > /etc/wireguard/wg0.conf <<EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(cat /etc/wireguard/server.key)
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
[Peer]
# laptop
PublicKey = $(cat /etc/wireguard/laptop.pub)
AllowedIPs = 10.8.0.2/32
EOF
chmod 600 /etc/wireguard/wg0.conf
- Адрес
- Адрес сервера внутри туннеля. В частном диапазоне
хватит места для 253 устройств.10.8.0.0/24 - ListenPort
- UDP-порт, к которому подключаются устройства; 51820 — порт из официальных примеров WireGuard.
- PrivateKey
- Закрытый ключ сервера — именно поэтому файл должен оставаться доступным для чтения только root.
- PostUp и PostDown
- Команды, которые
выполняет через bash при запуске и остановке туннеля, как описано в его man-странице. Здесь они добавляют и удаляют NAT, чтобы устройства выходили в интернет с IPv4-адреса сервера.wg-quick - [Peer]
- По одному блоку на каждое устройство. WireGuard отбрасывает любой пакет от устройства, если адрес отправителя не входит в его
; этот принцип называется маршрутизацией по криптографическим ключам (cryptokey routing).AllowedIPs
Включение пересылки IP-пакетов
Linux передаёт пакеты между интерфейсами, только если включена пересылка, а по умолчанию она, согласно документации ядра, выключена. Включите её сейчас и при каждой загрузке:
echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.d/99-wireguard.conf
sysctl --system
sysctl net.ipv4.ip_forward
Последняя команда должна вывести net.ipv4.ip_forward = 1sysctl --system/etc/sysctl.d
Открытие портов в брандмауэре
Сначала разрешите SSH, чтобы включение UFW не отрезало вам доступ, затем — порт WireGuard и маршрут для выхода трафика из туннеля:
ufw allow 22/tcp
ufw allow 51820/udp
ufw route allow in on wg0 out on eth0
ufw enable
ufw status verbose
Если вы сменили порт SSH по руководству по усилению защиты, разрешите вместо 22 свой порт. ufw enableydeny (routed)routeeth0
Вариант с nftables вместо UFW
Если вы используете собственный /etc/nftables.confPostUpPostDownwg0.confudp dport 51820 acceptinput
table inet wg-nat {
chain postrouting {
type nat hook postrouting priority srcnat;
ip saddr 10.8.0.0/24 oifname "eth0" masquerade
}
}
Проверьте файл, затем загрузите его:
nft -c -f /etc/nftables.conf
nft -f /etc/nftables.conf
Правило NAT, записанное в файле, сохраняется при перезагрузке правил. Если бы его добавлял PostUpflush ruleset
Запуск туннеля и автозапуск при загрузке
systemctl enable --now wg-quick@wg0
wg show
wg-quick@wg0wg0.confwg0PostUpwg showlistening port: 51820journalctl -u wg-quick@wg0 -b
Добавление клиента
Ноутбук или настольный компьютер: файл конфигурации
Создайте файл для ноутбука на сервере, подставив IPv4-адрес сервера вместо SERVER_IP
umask 077
cat > /etc/wireguard/laptop.conf <<EOF
[Interface]
PrivateKey = $(cat /etc/wireguard/laptop.key)
Address = 10.8.0.2/32
DNS = 9.9.9.9
[Peer]
PublicKey = $(cat /etc/wireguard/server.pub)
Endpoint = SERVER_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
EOF
- AllowedIPs = 0.0.0.0/0, ::/0
- Весь трафик идёт через туннель. Оставьте
, даже если на сервере нет IPv6: тогда трафик IPv6 попадает в туннель и отбрасывается там, а не утекает в обход него.::/0 - DNS
- 9.9.9.9 — это Quad9: он блокирует вредоносные домены и проверяет DNSSEC; подойдёт любой резолвер, которому вы доверяете. Запросы передаются внутри туннеля.
- PersistentKeepalive = 25
- Не даёт домашним роутерам и мобильным сетям закрывать соединение. Краткое руководство WireGuard называет 25 секунд «разумным интервалом, который работает с самыми разными брандмауэрами».
Скопируйте файл, запустив команду на ноутбуке (если после усиления защиты вход под root отключён, копируйте через своего пользователя с правами sudo), затем удалите с сервера закрытый ключ ноутбука и его файл — серверу нужен только открытый ключ:
scp root@SERVER_IP:/etc/wireguard/laptop.conf .
rm /etc/wireguard/laptop.key /etc/wireguard/laptop.conf
В Windows и macOS импортируйте файл в приложение WireGuard. В Linux скопируйте его в /etc/wireguard/wg-quick up laptopDNSopenresolv
Телефон: сканирование QR-кода
Телефону нужны собственные ключи, адрес и блок [Peer]
cd /etc/wireguard
umask 077
wg genkey | tee phone.key | wg pubkey > phone.pub
cat >> /etc/wireguard/wg0.conf <<EOF
[Peer]
# phone
PublicKey = $(cat /etc/wireguard/phone.pub)
AllowedIPs = 10.8.0.3/32
EOF
systemctl reload wg-quick@wg0
Создайте phone.conflaptop.confphone.key10.8.0.3/32
qrencode -t ansiutf8 < /etc/wireguard/phone.conf
Отсканируйте его в приложении WireGuard с помощью функции добавления по QR-коду, затем удалите phone.keyphone.conf
Добавление IPv6 (необязательно)
Проще всего дать устройствам IPv6 с помощью частного диапазона внутри туннеля, который транслируется в публичный IPv6-адрес сервера, как и в случае с IPv4; тогда устройства совместно используют этот адрес. Частные диапазоны начинаются с fdfd8c:5e2a:91b4::/64systemctl stop wg-quick@wg0wg0.confAddress
Address = 10.8.0.1/24, fd8c:5e2a:91b4::1/64
PostUp = ip6tables -t nat -A POSTROUTING -s fd8c:5e2a:91b4::/64 -o eth0 -j MASQUERADE
PostDown = ip6tables -t nat -D POSTROUTING -s fd8c:5e2a:91b4::/64 -o eth0 -j MASQUERADE
Назначьте каждому устройству IPv6-адрес с обеих сторон, например AllowedIPs = 10.8.0.2/32, fd8c:5e2a:91b4::2/128 в его блоке [Peer]Address = 10.8.0.2/32, fd8c:5e2a:91b4::2/128 в его собственном файле. Затем включите пересылку IPv6 и снова запустите туннель:
echo 'net.ipv6.conf.all.forwarding = 1' >> /etc/sysctl.d/99-wireguard.conf
sysctl --system
systemctl start wg-quick@wg0
При использовании nftables вместо этого добавьте ip6 saddr fd8c:5e2a:91b4::/64 oifname "eth0" masquerade в таблицу wg-nat
Проверка на утечки
С подключённого устройства, а не с сервера, проверьте три вещи:
- Публичный IP-адрес. Сайт для определения IP-адреса должен показывать IPv4-адрес вашего сервера, а если вы добавили IPv6 — ещё и его IPv6-адрес, но ни в коем случае не ваш домашний адрес.
- DNS. Тест на утечку DNS должен показывать только резолверы сервиса, указанного в строке
, а не резолверы вашего интернет-провайдера.DNS - IPv6. Если IPv6 в туннеле нет, никакой IPv6-адрес вообще не должен отображаться. Если виден ваш домашний IPv6-адрес, проверьте, что
устройства содержитAllowedIPs .::/0
После этого wg showlatest handshaketransfer
Обновление VPS с WireGuard и добавление клиентов
Обновления WireGuard приходят вместе с ядром и wireguard-toolswg-quick@wg0/etc/wireguard
- Ещё одно устройство: повторите шаги для телефона со следующим свободным адресом —
и так далее.10.8.0.4/32 - Применение изменений в пирах:
выполняетsystemctl reload wg-quick@wg0 , что, согласно руководству wg, «имеет то преимущество, что не прерывает текущие сеансы пиров».wg syncconf - Удаление устройства: удалите его блок
и перезагрузите конфигурацию. Его ключ сразу перестанет работать.[Peer] - Дополнительно:
, полученный с помощьюPresharedKey и заданный на обеих сторонах соединения с пиром, добавляет шифрование с симметричным ключом «для постквантовой стойкости».wg genpsk
Устранение неполадок
Нет рукопожатия
Если для устройства в wg showlatest handshake
- служба работает:
;systemctl status wg-quick@wg0 - UFW разрешает
. Некоторые сети блокируют UDP, а у WireGuard нет режима TCP, поэтому проверьте подключение также через мобильный интернет;51820/udp - в
устройства указаны правильные адрес и порт;Endpoint - ключи указаны крест-накрест: в файле устройства — открытый ключ сервера, а в блоке
на сервере — открытый ключ устройства.[Peer]
Рукопожатие есть, трафика нет
Если рукопожатие есть, а сайты не открываются, значит, сервер не пересылает трафик или не транслирует адреса. Проверьте, что:
выводит 1;sysctl net.ipv4.ip_forward- в правиле NAT указан интерфейс из вывода
. Неверное имя даёт именно такой симптом, а по счётчикам вip route show defaultiptables -t nat -L POSTROUTING -n -vвидно, срабатывает ли правило. Исправляйте его при остановленном туннеле, как описано выше; - в UFW есть правило
;route allow устройства совпадает с егоAddress на сервере;AllowedIPs- имена разрешаются. Если
работает, а сайты не открываются, исправьте строкуping 9.9.9.9 .DNS
Одни сайты загружаются, другие зависают: MTU
wg-quickMTU = 1380[Interface]
Часто задаваемые вопросы
Законно ли держать собственный VPN на VPS?
Запуск VPN для себя — обычное использование сервера, и наши правила допустимого использования относят VPN к приветствуемым видам использования на любом тарифе. Что вам разрешено делать через него, зависит от законов страны, где находитесь вы, и страны, где работает сервер, поэтому уточните требования своей юрисдикции. Трафик из туннеля выходит в интернет с IP-адреса вашего сервера.
Сколько устройств может обслуживать один сервер WireGuard?
В диапазоне 10.8.0.0/24top
Ведёт ли WireGuard логи?
WireGuard не ведёт логов подключений. Пока туннель работает, он хранит в памяти последний IP-адрес и порт каждого устройства — их показывает wg showwg-quick
Какой порт использует WireGuard?
Тот UDP-порт, который вы зададите в ListenPortListenPortEndpoint
Клиенты с выделенными и GPU-серверами могут открыть тикет в личном кабинете, указав IP-адрес сервера и то, что они уже пробовали сделать. Целевой срок первого ответа — менее 12 часов. Для всех остальных серверов используйте действия с сервером на его странице, руководства и страницу статуса сети.