VPN сервер OpenVPN или WireGuard на чистой Ubuntu Server

Как развернуть VPN сервер OpenVPN или WireGuard на чистой Ubuntu Server

Развернуть VPN сервер на Ubuntu Server можно за 30 минут, используя OpenVPN или WireGuard. OpenVPN обеспечивает универсальную совместимость, WireGuard — максимальную скорость и простоту. Выберите инструмент в зависимости от приоритетов: надежность и стандарты (OpenVPN) или производительность (WireGuard).

Причины выбрать собственный VPN сервер

  • Полный контроль над шифрованием и маршрутизацией трафика
  • Отсутствие логирования активности пользователей
  • Независимость от политики провайдеров VPN
  • Возможность использования для удаленного доступа к корпоративной сети
  • Снижение затрат при подключении нескольких устройств
  • Защита от DPI (Deep Packet Inspection) на уровне ISP

Предварительные требования

  • Сервер или VPS с Ubuntu Server 20.04 LTS / 22.04 LTS / 24.04
  • Статический IP адрес сервера
  • Доступ по SSH с правами sudo
  • Открытые порты 1194/UDP (OpenVPN) или 51820/UDP (WireGuard)
  • Минимум 512 МБ оперативной памяти

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

  1. Обновите список пакетов: sudo apt update && sudo apt upgrade -y
  2. Установите OpenVPN и Easy-RSA: sudo apt install openvpn easy-rsa -y
  3. Создайте директорию для сертификатов: mkdir -p ~/easyrsa && cd ~/easyrsa
  4. Инициализируйте Easy-RSA: easyrsa init-pki
  5. Создайте корневой сертификат ЦС: easyrsa build-ca nopass (нажмите Enter два раза)
  6. Генерируйте сертификат сервера: easyrsa gen-req server nopass
  7. Подпишите сертификат сервера: easyrsa sign-req server server (введите yes)
  8. Создайте ключ Diffie-Hellman: easyrsa gen-dh (процесс займет 2–5 минут)
  9. Скопируйте сертификаты в конфиг OpenVPN: sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem /etc/openvpn/server/
  10. Создайте конфигурацию сервера: sudo nano /etc/openvpn/server/server.conf
  11. Вставьте следующий текст конфигурации:
    port 1194
    proto udp
    dev tun
    ca ca.crt
    cert server.crt
    key server.key
    dh dh.pem
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 8.8.8.8"
    push "dhcp-option DNS 8.8.4.4"
    keepalive 10 120
    cipher AES-256-CBC
    auth SHA256
    user nobody
    group nogroup
    persist-key
    persist-tun
    status openvpn-status.log
    log /var/log/openvpn/openvpn.log
    verb 3
    explicit-exit-notify 1
  12. Сохраните файл: нажмите Ctrl+O, затем Enter, затем Ctrl+X
  13. Включите IP-форвардинг: sudo nano /etc/sysctl.conf
  14. Найдите строку #net.ipv4.ip_forward=1 и удалите символ #
  15. Примените изменения: sudo sysctl -p
  16. Настройте firewall: sudo ufw allow 1194/udp
  17. Включите NAT для VPN трафика: sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
  18. Сохраните правила iptables постоянно: sudo apt install iptables-persistent -y
  19. При запросе выберите Yes для IPv4 и IPv6
  20. Запустите OpenVPN сервер: sudo systemctl start Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
  21. Включите автозапуск: sudo systemctl enable Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
  22. Проверьте статус: sudo systemctl status Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
  23. Создайте сертификат клиента: cd ~/easyrsa && easyrsa gen-req client nopass
  24. Подпишите сертификат клиента: easyrsa sign-req client client (введите yes)
  25. Создайте конфиг клиента: nano ~/client.ovpn
  26. Вставьте содержимое:
    client
    dev tun
    proto udp
    remote ВАШ_IP_СЕРВЕРА 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ca.crt
    cert client.crt
    key client.key
    remote-cert-tls server
    cipher AES-256-CBC
    auth SHA256
    verb 3
  27. Добавьте содержимое файлов в конец конфига:
    1. Откройте: cat ~/easyrsa/pki/ca.crt и скопируйте весь текст
    2. В client.ovpn вставьте между строками <ca> и </ca>
    3. Повторите для cert и key из client.crt и client.key
  28. Скопируйте client.ovpn на клиентское устройство через SCP или вручную

Установка и настройка WireGuard (альтернатива)

  1. Установите WireGuard: sudo apt install wireguard wireguard-tools -y
  2. Перейдите в конфиг-директорию: cd /etc/wireguard
  3. Сгенерируйте приватный ключ сервера: wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey
  4. Создайте конфиг сервера: sudo nano /etc/wireguard/wg0.conf
  5. Вставьте конфигурацию:
    [Interface]
    Address = 10.0.0.1/24
    ListenPort = 51820
    PrivateKey = (содержимое из privatekey)
    
    PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    
    [Peer]
    PublicKey = (публичный ключ клиента)
    AllowedIPs = 10.0.0.2/32
  6. Установите права доступа: sudo chmod 600 /etc/wireguard/wg0.conf
  7. Включите IP-форвардинг (если еще не сделано): echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf && sudo sysctl -p
  8. Откройте порт в firewall: sudo ufw allow 51820/udp
  9. Запустите WireGuard: sudo wg-quick up wg0
  10. Включите автозапуск: sudo systemctl enable wg-quick@wg0
  11. Проверьте статус: sudo wg show
  12. Сгенерируйте ключи клиента: wg genkey | tee client_privatekey | wg pubkey > client_publickey
  13. Обновите конфиг сервера с публичным ключом клиента (добавьте [Peer] секцию из шага 5)
  14. Создайте конфиг клиента: nano ~/client-wg0.conf
  15. Вставьте:
    [Interface]
    PrivateKey = (приватный ключ клиента)
    Address = 10.0.0.2/32
    DNS = 8.8.8.8, 8.8.4.4
    
    [Peer]
    PublicKey = (публичный ключ сервера)
    Endpoint = ВАШ_IP_СЕРВЕРА:51820
    AllowedIPs = 0.0.0.0/0
  16. Скопируйте конфиг на клиентское устройство

Проверка и тестирование подключения

  1. На клиентском устройстве установите OpenVPN Connect (для OpenVPN) или WireGuard приложение
  2. Импортируйте конфиг: откройте приложение и загрузите файл .ovpn или .conf
  3. Нажмите кнопку подключения
  4. Проверьте IP адрес: откройте https://whatismyipaddress.com — должен быть IP сервера
  5. Проверьте логи сервера: sudo tail -f /var/log/openvpn/openvpn.log (для OpenVPN) или sudo wg show (для WireGuard)

Часто задаваемые вопросы

Какой протокол выбрать: OpenVPN или WireGuard? WireGuard быстрее и проще настраивается (код из 4000 строк vs 100000 в OpenVPN), но OpenVPN более универсален и поддерживается на всех платформах с обфускацией трафика.

Почему клиент не подключается? Проверьте открытие портов: sudo ufw status, правильность IP адреса сервера в конфиге клиента и наличие сертификатов в .ovpn файле (все три блока: ca, cert, key).

Как добавить нового клиента? Повторите процесс генерации сертификата (шаги 23–25 для OpenVPN или 13–15 для WireGuard) с новым именем и добавьте [Peer] блок в конфиг сервера.

Похожие материалы

Веб сервер Nginx и настроить виртуальные хосты на Ubuntu Server
Изменение стандартного порта SSH 22 в Linux сервере для защиты от брутфорса
DHCP сервер на базе Windows Server 2022