WireGuard — это набирающий популярность 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 вы пользуетесь? Напишите в комментариях!