4. WG VPN via docker

Установим и настроим Wireguard VPN на собственном vps сервере легко и просто с помощью docker, а также настроим подключение с ПК и смартфона.

UPD: Ввиду возросшего спроса на VPN я написал статью с упрощенной инструкцией для менее опытных пользователей, позволяющую с минимумом телодвижений сделать то же самое.

Почему Wireguard и Docker

Wireguard современный, кроссплатформенный, безопасный, высокопроизводительный и простой в настройке сетевой туннель, который был принят в основную ветку linux с версии 5.6. На текущий момент это самый быстрый и привлекательный свободный VPN. Раньше я использовал OpenVPN, и в целом нареканий к нему нет. Но он проигрывает в скорости. Может быть он конечно более гибкий и поддерживает больше вариантов шифрования. Оба инструмента хороши, и подходят хорошо под свой пласт задач. В моем случае, для домашнего VPN, скорость соединения является решающим фактором. Приятным бонусом также является моментальная скорость подключения, в отличие от OpenVPN, где подключение обычно занимает как минимум несколько секунд.

Docker конечно же использовать не обязательно. Но в нашем случае это упрощает процесс установки, т.к. мы будем использовать уже готовый образ linuxserver/docker-wireguard, развертывание которого еще проще и быстрее, чем ручная настройка.

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

Если вы не знаете что такое docker, как он работает и почему он не является виртуальной машиной, то советую самостоятельно ознакомиться с темой. Данная статья не освещает базовую теорию docker. Но при пошаговом выполнении инструкций данные знания не потребуются.

Критерии выбора VPS сервера

Для начала нам потребуется приобрести или получить бесплатно виртуальный сервер на год, через который будет идти трафик.

Требования:

  • Размещение за пределами РФ
  • 1 cpu
  • не менее чем 512 Mb RAM
  • ширина канала 100 - 1000 Mbit/sec
  • виртуализация KVM
  • Linux дистрибутив на борту

Я решил, что приобрету себе отдельный сервер только под VPN, чтобы отдельная машина занималась одной задачей, не распыляясь, и делала это хорошо. Поэтому одного ядра и небольшой запас оперативной памяти в 512 Mb будет достаточно. Размещение в Германии мне подходит, т.к. я нахожусь в Европейской части России (чем дальше страна тем больше пинг), а также свободы в интернете там приемлемые. Ширину канала нужно выбирать исходя из скорости, которую предоставляет Ваш интернет провайдер (100/1000 Mbit/sec). Виртуализацию лучше взять KVM, что гарантирует изолированность среды и гарантию ресурсов.

OpenVz не стоит брать еще по той причине, что там используется общее ядро хостовой машины на все инстансы. К тому же ядро зачастую не очень не свежее, из-за чего могут быть проблемы с установкой docker.

Арендовать недорогой и надежный VPS для VPN в Европе, Азии, или в США можно тут.

Настройка сервера

Не столь важно какой linux дистрибутив будет установлен на сервере, первично на него нам необходимо установить только Docker. Мой выбор пал на Ubuntu 20.04. Я буду производить все действия из под пользователя root.

Подключение по ssh

Подключимся к серверу по ssh используя реквизиты, предоставленные выбранным хостинг провайдером.

Если вдруг вы работаете из под операционной системы Windows, то подключиться к серверу Вам может помочь утилита Putty.

ssh root@ip-адрес-сервера

Обновление системы

Сначала необходимо обновить кеш репозиториев и систему.

apt update && apt upgrade -y

Установка Docker

После чего установим docker. Можно последовать инструкциям по установке из документации, которые в случае с ubuntu говорят установить в систему репозиторий докера. Но в стандартных репозиториях ubuntu также можно найти не самую свежую, но подходящую версию. Ее и установим

apt install docker.io

и docker-compose

apt install docker-compose

Подготовка конфигов

Директория конфигов

Создадим, например в домашнем каталоге, директорию ~/wireguard, где будем хранить конфигурационные файлы, и сразу внутри нее директорию ~/wireguard/config, которую будем монтировать внутрь контейнера

mkdir -p ~/wireguard/config

docker-compose.yml

Далее создадим файл ~/wireguard/docker-compose.yml, в который скопируем содержимое из документации используемого docker образа

vim ~/wireguard/docker-compose.yml

В скопированном содержимом внесем некоторые изменения:

  • Переменной окружения SERVERURL вместо текущего wireguard.domain.com нужно присвоить значение auto, или ip адреса вашего виртуального сервера.

  • Переменной окружения PEERS нужно присвоить достаточное количество клиентов, которыми вы планируете пользоваться VPN. К примеру, если мы планируем подключаться с ноутбука, 2-х смартфонов и роутера (4 устройства), то установим PEERS=4

  • Монтируемый каталог /path/to/appdata/config из секции volume необходимо заменить на ранее созданную директорию ~/wireguard/config

Итоговый файл будет выглядеть так:

---
version: "2.1"
services:
  wireguard:
    image: lscr.io/linuxserver/wireguard
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - SERVERURL=auto #optional
      - SERVERPORT=51820 #optional
      - PEERS=4 #optional
      - PEERDNS=auto #optional
      - INTERNAL_SUBNET=10.13.13.0 #optional
      - ALLOWEDIPS=0.0.0.0/0 #optional
    volumes:
      - ~/wireguard/config:/config
      - /lib/modules:/lib/modules
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    restart: unless-stopped

На этом подготовка конфигурации окончена.

Запуск

Создадим и запустим контейнер

cd ~/wireguard
docker-compose up -d

Дождемся пока скачается образ и запустится контейнер, после проверим, что он запущен командой docker ps. При успехе должны увидеть в выводе что - то вроде

CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                      NAMES
97d91a1ffa87        linuxserver/wireguard   "/init"             5 minutes ago       Up 2 minutes        0.0.0.0:51820->51820/udp   wireguard

Если все так, то на этом настройка сервера закончена, и можно уже начать настройку клиентов.

Настройка смартфонов

Проще всего наверное проверить подключение со смартфона. Ведь для этого понадобится лишь поставить клиент в один клик из магазина приложений

и отсканировать qr код.

Чтобы вывести на экран qr код добавления туннеля, на сервере исполняем команду:

docker exec -it wireguard /app/show-peer 1

Где 1 - порядковый номер PEERS, количество которых мы ранее задали в docker-compose.yml.

qr код для подключения wireguard

Рекомендуется каждый клиент подключать под отдельным peer.

Далее в мобильном приложении необходимо:

  • нажать кнопку добавления нового туннеля
  • выбрать пункт “сканировать qr код
  • навести на заранее выведенный на экран qr код
  • придумать произвольное имя для подключения (например peer2)

На этом настройка закончена. Подключение с введенным именем появится в списке. Начать пользоваться можно переключив переключатель в активное положение.

Настроенное подключение в мобильном приложении wireguard

Убедиться, что все действительно работает, можно посетив сайт 2ip.ru, который любезно покажет нам ip адрес нашего сервера в той стране, где вы приобрели виртуальный сервер, вместо нашего настоящего ip адреса, выдаваемого интернет провайдером.
Источник:
https://igancev.ru/2021-02-21-vpn-wireguard-docker
Подключение клиента: https://habr.com/ru/articles/572796/

  • WG
  • 0 A felhasználók hasznosnak találták ezt
Hasznosnak találta ezt a választ?

Kapcsolódó cikkek

1. Установка и настройка VPN Wireguard топология Mesh

WireGuard ® - это чрезвычайно простой, но быстрый и современный VPN, в котором используется...

2. Установка VPN Wireguard на Windows server 2016

Установка VPN Wireguard на Windows server 2016  Загружаем с официального сайта клиент для...

3. WireGuard client настройка на Android

У WireGuard есть одна большая проблема — если по какой-то причине отваливается сервер, то...

6. Проброс сервиса с приватного сервера на публичный через WireGuard

Переадресация портов WireGuard из Интернета!  Данный опус является частью...

5. Проброс подсети L2 через L3 VPN на Mikrotik

Проброс broadcast domain поверх L3 на Mikrotik!  Данный опус является частью...