Простая настройка WireGuard Linux

Wireguard VPN ServerWireGuard — это набирающий популярность VPN сервер, который обеспечивает безопасные сетевые соединения и работает на уровне ядра Linux. Что позволяет ему обрабатывать пакеты намного быстрее по сравнению с OpenVPN. При помощи WireGuard можно организовать частную виртуальную сеть и объединить компьютеры , которые находятся в разных  сегментах например домах или даже городах, в единую локальную сеть точно так же как и с помощью OpenVPN.

В большинстве инструкций предлагается настраивать сервер вручную, устанавливать ПО вникать в тонкости настроек, генерировать конфигурационные файлы, однако если вы не хотите в это погружаться очень глубоко и вам достаточно стандартных настроек, то всё можно сделать гораздо быстрее и проще. В этой инструкции будет рассмотрена простая установка WireGuard при помощи  bash скрипта для Ubuntu.

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

Будем использовать готовый отлаженный скрипт для быстрого развертывания WireGuard. Его можно использовать не только для Ubuntu, но и Debian, Fedora, CentOS, Artch Linux и Oracle Linux. Этот скрипт работает аналогично скрипту для простого развертывания OpenVPN. Программа задаст несколько вопросов на которые нужно ответить, установит WireGuard и сгенерирует конфигурационные файлы для сервера и клиента. После установки с помощью скрипта можно добавлять новых клиентов, ограничивать доступ другим или полностью удалить WireGuard. Таким образом, можно детально не разбираться самому как настроить WireGuard. Приступим к пошаговой установке.

1) Выполните следующую команду для того чтобы скачать последнюю версию скрипта с GitHub:

curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh

2) Затем дайте файлу скрипта права на выполнение:

chmod +x wireguard-install.sh

Прежде чем запускать скрипт желательно посмотреть IP адрес вашего сервера на  вашем VDS или VPS. Для этого можно воспользоваться командой:

ip -br a

Команда отобразит список сетевых интерфейсов и их IP адреса. Как правило, реальный сетевой интерфейс имеет состояние UP. В данном случае это ens0. Если вы хотите подключатся к VPN серверу из интернет или обойти блокировки, вам необходимо установить его на VPS или другой сервер в сети.

3) Для запуска скрипта выполните команду:

./wireguard-install.sh

Первые два вопроса будут о внешнем IP адресе и сетевом интерфейсе, которые вы посмотрели ранее. Если у вас только один интерфейс, скорее всего, программа определит их верно. Если же несколько, возможно придется поправить:

 

4) Далее нужно выбрать имя сетевого интерфейса для сервера WireGuard, можно оставить по умолчанию:

5) Следующие два вопроса — желаемый IP адрес сервера WireGuard в создаваемой виртуальной сети для IPv4 и IPv6. По умолчанию скрипт предлагает использовать 10.66.66.1:

 

6) На следующем шаге нужно настроить порт сервера, на котором будет доступен WireGuard:

 

 

7) WireGuard умеет менять настройки DNS клиентов при подключении. На этом шаге можно указать DNS серверы, которые следует использовать:

 

 

8) После этого нажмите любую клавишу для того чтобы запустить установку необходимых пакетов и создание конфигурационных файлов:

 

 

9) После того как установка завершится скрипт предложит создать конфигурацию для первого клиента. Достаточно ввести имя. Оно не должно быть длиннее 15 символов:

 

 

10) Далее надо указать желаемый IP адрес клиента IPv4 и IPv6. Здесь IP адрес задается при создании конфигурации и для каждого клиента всегда будет статическим:

 

 

После этого скрипт сообщит что конфигурация создана и вы можете скачать её на свой компьютер или отсканировать QR код на телефоне:

 

 

Настройка сервера WireGuard завершена. Теперь можно переходить к настройке клиента.

Настройка клиента WireGuard

На компьютере с которого вы хотите подключится к VPN тоже необходимо установить WireGuard клиент. В Ubuntu и Debian команда установки будет выглядеть следующим образом:

sudo apt install wireguard

Кроме того, если в системе не установлены пакеты resolvconf и iptables их надо доустановить выполнив команду:

sudo apt install resolvconf iptables

После этого переместите скачанный конфигурационный файл клиента WireGuard в папку /etc/wireguard и переименуйте в wg0.conf. Имя конфигурационного файла должно соотвествовать имени сетевого интерфейса, который будет создан WireGuard. Например:

sudo mv ~/wg0-client-losst.conf /etc/wireguard/wg0.conf

Или вы можете просто скопировать содержимое файла на сервере и вставить его в локальный  /etc/wireguard/wg0.conf. Файл довольно небольшой, в отличии от OpenVPN. Теперь вы можете подключится к серверу используя команду wg-quick:

wg-quick up wg0

 

 

Теперь вы можете проверить что виртуальная сеть уже работает, пропингуем VPN сервер по внутреннему адресу 10.66.66.1. Также можно проверить что интернет тоже работает:

 

 

По умолчанию весь трафик клиента перенаправляется через VPN сервер. Это настроено в конфигурационном файле клиента с помощью директивы AllowedIPs. Здесь указано 0.0.0.0, что означает все адреса, однако вы можете изменить эти настройки и перенаправлять только нужный трафик, или вообще не перенаправлять. Посмотреть состояние подключения WireGuard можно командой:

sudo wg show

 

 

Если вы хотите чтобы WireGuard подключался к серверу автоматически после загрузки системы можно добавить его в автозагрузку systemctl:

sudo systemctl enable wg-quick@wg0.service

Для запуска используйте:

sudo systemctl start wg-quick@wg0.service

А состояние можно проверить с помощью команды status:

sudo systemctl status wg-quick@wg0.service

 

 

Теперь вы знаете как выполняется настройка клиента WireGuard.

Мы рассмотрели как выполняется простая настройка WireGuard в Linux.  А каким VPN вы пользуетесь? Напишите в комментариях!