VPN: различия между версиями

Материал из wiki
Нет описания правки
м Защитил страницу VPN ([Редактирование=Разрешено только администраторам] (бессрочно) [Переименование=Разрешено только администраторам] (бессрочно))
 
(нет различий)

Текущая версия от 12:29, 4 августа 2026

VPN: настройка WireGuard и OpenVPN для безопасного доступа

VPN (Virtual Private Network) — это технология, которая создаёт зашифрованное соединение между вашим устройством и удалённой сетью. В контексте self‑hosted решений VPN позволяет:

  • безопасно подключаться к вашим сервисам (Nextcloud, NAS, админ‑панели) из интернета;
  • объединять несколько серверов в одну частную сеть;
  • скрывать свой трафик от провайдера и обеспечивать анонимность.

В этой статье мы рассмотрим установку и настройку двух самых популярных решений: WireGuard (рекомендуется для новых проектов) и OpenVPN (для совместимости со старыми устройствами). Также вы узнаете, как интегрировать VPN с ZeroTier и Docker.

1. Выбор VPN-протокола

Критерий WireGuard OpenVPN
Производительность Очень высокая (минимальные накладные расходы) Средняя (зависит от шифрования)
Простота настройки Простой конфиг, минимум параметров Сложнее (сертификаты, ключи, параметры)
Безопасность Современная криптография (ChaCha20, Poly1305) Проверенная временем, но сложнее в конфигурации
Поддержка устройств Встроен в ядро Linux 5.6+, клиенты для всех ОС Все основные ОС, но требует установки клиента
NAT и мобильные сети Отлично работает за NAT, быстро переподключается Требует настройки keepalive

Для новых проектов рекомендуется WireGuard. OpenVPN оставляйте, если нужно подключать старые устройства или корпоративные сети с уже существующей инфраструктурой.

2. Установка и настройка WireGuard

2.1. Установка на сервер (Linux)

Ubuntu/Debian:

sudo apt update
sudo apt install wireguard -y

Для ядра 5.6+ модуль уже встроен. Для более старых ядер установите wireguard-dkms.

2.2. Генерация ключей

На сервере создайте папку для конфигов:

sudo mkdir -p /etc/wireguard
cd /etc/wireguard

Сгенерируйте приватный и публичный ключи сервера:

wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key

Для каждого клиента также сгенерируйте свою пару ключей (можно на клиентской машине или на сервере). Например, для клиента «laptop»:

wg genkey | tee laptop_private.key | wg pubkey > laptop_public.key

2.3. Конфигурация сервера

Создайте файл /etc/wireguard/wg0.conf:

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <содержимое server_private.key>
SaveConfig = false

# Правила NAT для доступа клиентов в интернет (если нужно)
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

[Peer]
PublicKey = <публичный ключ клиента laptop>
AllowedIPs = 10.0.0.2/32

[Peer]
PublicKey = <публичный ключ клиента phone>
AllowedIPs = 10.0.0.3/32

Замените eth0 на ваш внешний сетевой интерфейс.

2.4. Запуск и включение автозапуска

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

Проверьте статус:

sudo wg show

2.5. Конфигурация клиента

На клиентской машине (например, ноутбук с Linux) создайте файл /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = <приватный ключ клиента>
Address = 10.0.0.2/24
DNS = 8.8.8.8  # опционально

[Peer]
PublicKey = <публичный ключ сервера>
Endpoint = <внешний IP или домен сервера>:51820
AllowedIPs = 0.0.0.0/0   # весь трафик через VPN, или укажите только нужные подсети
PersistentKeepalive = 25

Запустите клиент:

sudo wg-quick up wg0

Для Windows, macOS и мобильных устройств используйте официальные клиенты (WireGuard App), где просто импортируете конфиг.

3. Установка и настройка OpenVPN

      1. 3.1. Установка OpenVPN на сервер (Linux) ===

Ubuntu/Debian:

sudo apt update
sudo apt install openvpn easy-rsa -y
      1. 3.2. Настройка PKI (сертификаты) ===

Скопируйте шаблоны easy-rsa:

make-cadir ~/openvpn-ca
cd ~/openvpn-ca

Отредактируйте vars (задайте страну, город, организацию) и выполните:

source vars
./clean-all
./build-ca
./build-key-server server
./build-dh
./build-key client1   # для каждого клиента
      1. 3.3. Конфигурация сервера ===

Создайте файл /etc/openvpn/server.conf:

port 1194
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"   # маршрут до локальной сети
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Скопируйте сертификаты и ключи в /etc/openvpn/keys/.

      1. 3.4. Запуск OpenVPN ===
sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server
      1. 3.5. Клиентский конфиг ===

На клиенте создайте файл client.ovpn:

client
dev tun
proto udp
remote <IP-сервера> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
verb 3

Передайте клиенту файлы ca.crt, client1.crt, client1.key и client.ovpn. Импортируйте в клиент OpenVPN (приложение для всех ОС).

4. Интеграция VPN с ZeroTier

Вы можете использовать ZeroTier и VPN вместе для создания гибридной сети. Например, подключите VPN-клиентов к ZeroTier-сети через маршрутизацию.

4.1. Маршрутизация между WireGuard и ZeroTier

Предположим, у вас есть сервер с WireGuard (сеть 10.0.0.0/24) и ZeroTier (сеть 192.168.192.0/24). Чтобы клиенты WireGuard могли достигать ZeroTier, на сервере включите IP-форвардинг и добавьте маршрут.

На сервере (уже есть форвардинг из настройки WireGuard) добавьте маршрут в конфигурацию сервера:

# в wg0.conf секция [Interface] добавляем PostUp/PostDown:
PostUp = ip route add 192.168.192.0/24 via 10.0.0.1 dev wg0
PostDown = ip route del 192.168.192.0/24 via 10.0.0.1 dev wg0

На клиентах WireGuard в AllowedIPs укажите также подсеть ZeroTier, чтобы трафик шёл через VPN.

4.2. Использование ZeroTier как транспорта для WireGuard

Если у вас сложности с NAT, можно поднять WireGuard поверх ZeroTier — тогда WireGuard-пиры общаются через ZeroTier-адреса, и им не нужны публичные IP. Это повышает надёжность.

5. VPN в Docker

      1. 5.1. WireGuard в контейнере ===

Используйте официальный образ linuxserver/wireguard:

docker run -d --name=wireguard \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  -e PUID=1000 -e PGID=1000 \
  -p 51820:51820/udp \
  -v /path/to/config:/config \
  -v /lib/modules:/lib/modules \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --restart unless-stopped \
  linuxserver/wireguard

Конфиги помещаются в /path/to/config (там должен быть wg0.conf).

      1. 5.2. OpenVPN в контейнере ===

Популярный образ — kylemanna/openvpn:

docker run --name openvpn -v /path/to/openvpn:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn

Подробная настройка описана в документации образа.

6. Рекомендации по безопасности

  • Всегда используйте сильные ключи (не менее 2048 бит для RSA, для WireGuard генерация автоматически создаёт надёжные ключи).
  • Ограничьте доступ к VPN-портам с помощью файрвола (например, разрешайте только с доверенных IP, если это возможно).
  • Для OpenVPN регулярно обновляйте сертификаты и отзывайте старые.
  • Для WireGuard можно добавить предварительный общий ключ (preshared key) для дополнительной защиты сессии.
  • Используйте двухфакторную аутентификацию для доступа к админкам через VPN.
  • Настройте автоматические обновления системы и самих VPN-пакетов.
  • Включайте логирование и мониторинг (например, смотреть wg show или логи OpenVPN).

7. Сравнение с ZeroTier

ZeroTier часто называют «VPN на стероидах», потому что он обеспечивает не только шифрование, но и полную маршрутизацию, управление доступом и мосты. Однако он более сложен для мелких задач, где нужен просто безопасный вход в одну сеть. Выбирайте:

  • WireGuard/OpenVPN — если вам нужно простое соединение «точка‑сеть» или «точка‑точка».
  • ZeroTier — если вам нужна виртуальная LAN с несколькими устройствами, мостами и динамической маршрутизацией.

8. Полезные команды

Команда Назначение
sudo wg show статус WireGuard
sudo wg-quick up wg0 поднять интерфейс WireGuard
sudo wg-quick down wg0 опустить
sudo systemctl status openvpn@server статус OpenVPN сервера
sudo tail -f /var/log/openvpn.log логи OpenVPN

См. также

  • Linux – установка WireGuard/OpenVPN на Linux
  • Windows – клиенты VPN
  • macOS – клиенты VPN
  • ZeroTier – сравнение и интеграция
  • Docker – контейнеризация VPN
  • Nextcloud – безопасный доступ к Nextcloud через VPN
  • NAS – доступ к NAS через VPN