Найти тему

VPN WireGuard wg-easy - действительно Easy

VPN WireGuard wg-easy - действительно Easy

Добавьте описание
Добавьте описание

Мне нужно было быстро развернуть какой-нибудь VPN сервер. Да так, чтобы он и с компухтера работал и с любой мобилки.

Выбор пал на WireGuard - быстрый, легкий, безопасный. Да и вообще на всех форумах - топчик.

Но копаться в конфигах мне очень не хотелось, да и сервер я делал для людей не очень сильных в Linux системах. Заставлять их лезть каждый раз на сервер - это жестоко.

Поэтому стал я искать, может уже умные дядьки придумали что-то простое и еще и с веб-интерйфесом.

И да, благодаря статье на Хабре и пользователю GitHab WeeJeWel Emile Nijssen я нашел идеальное для моей задачи решение - wg-easy

Поставить wgEasy оказалось настолько просто, что я не могу не написать об этом.

Перед началом настройки у вас должна быть уже установлена Ubuntu и у нее должен быть доступ в интернет.

Так же нам потребуется внешний dns хостер и доступ к внутреннему dns-серверу.

И так, пошли настраивать:

1) Придумываем имя vpn сервера. Например vpn.mycompany.ru

2) Прописываем AAA запись на хостинге, указывая наш внешний статический адрес.

Создать карусельДобавьте описание
Создать карусельДобавьте описание

3) заходим на наш Ubuntu сервер и ставим docker

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
#и устанавливаем докер
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#проверяем что докер поставился
docker
Создать карусельДобавьте описание
Создать карусельДобавьте описание

4) ставим docker-compose

#Чтобы загрузить и установить автономную версию Compose, запустите:
curl -SL
https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
#Примените разрешения на исполняемый файл к автономному двоичному файлу в целевом пути установки.
chmod +x /usr/local/bin/docker-compose
#Протестируйте используя docker-compose
docker-compose
Создать карусельДобавьте описание
Создать карусельДобавьте описание

5) Качаем docker-compose.yml и и открываем его на редактирование

wget https://github.com/WeeJeWel/wg-easy/blob/master/docker-compose.yml
vim docker-compose.yml

6) Здесь откроются все настройки. Главное, что нас интересует это название сервера(это важно: должен совпадать с внешним именем) и пароль для доступа к настройкам.

Для редактирования нажать: i
После редактирования нажать: Esc

#https://github.com/WeeJeWel/wg-easy/blob/master/docker-compose.yml
version: "3.8"
services:
wg-easy:
environment:
# ⚠️ Required:
# Change this to your host's public address
- WG_HOST= vpn.mycompany.ru
# Optional:
- PASSWORD=<введи сложный пароль>
# - WG_PORT=51820
# - WG_DEFAULT_ADDRESS=10.8.0.x
# - WG_DEFAULT_DNS=1.1.1.1
# - WG_MTU=1420
# - WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24
# - WG_PRE_UP=echo "Pre Up" > /etc/wireguard/pre-up.txt
# - WG_POST_UP=echo "Post Up" > /etc/wireguard/post-up.txt
# - WG_PRE_DOWN=echo "Pre Down" > /etc/wireguard/pre-down.txt
# - WG_POST_DOWN=echo "Post Down" > /etc/wireguard/post-down.txt

image: 
ghcr.io/wg-easy/wg-easy container_name: wg-easy
volumes:
- .:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1

7) Сохраняем файл нажав Ctrl+wq и Enter

8) Ну вот и все, осталось дать права запустить:

#даем права пользователю на управления докером
sudo usermod -aG docker $(whoami)
#поднимаем контейнеры
docker-compose up -d

9) Теперь можно переходить внутри сети по ip нашего сервера и настраивать пользователей:

Создать карусельДобавьте описание
Создать карусельДобавьте описание

10) И последний шаг, нужно пробросить порт WireGuard из внутренней сети, во внешнюю. Это нужно сделать на вашем маршрутизаторе. В моем случае это Kerio

-6

11) Теперь можно сканировать QR код из веб интерфейса, скачивать конфиги для подключения с ПК, и наслаждаться пользованием VPN WireGuard wg-easy