4. Конфигурирование сервера Wireguard

Наиболее актуальную инструкцию по установке и использованию Wireguard с помощью описанных ниже скриптов можно посмотреть в репозитории: https://github.com/isystem-io/wireguard-aws

4.1. Установка Wireguard

В терминале вводим следующие команды (можно копировать в буфер обмена, и вставлять в терминале нажатием правой клавиши мыши).

4.1.1. Клонирование репозитория

Клонируем репозиторий со скриптами установки Wireguard:

git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws

4.1.2. Переход в каталог со скриптами

Переходим в каталог с клонированным репозиторием:

cd wireguard_aws

4.1.3 Запуск скрипта инициализации

Запускаем от имени администратора (root пользователя) скрипт установки Wireguard

sudo ./initial.sh

В процессе установки будут запрошены определенные данные, необходимые для настройки Wireguard

4.1.3.1. Ввод точки подключения (IP:port)

Введите внешний IP адрес и открытый порт Wireguard сервера. Внешний IP адрес сервера мы получили на шаге 2.2.3, а порт открыли на шаге 2.1.5. Указываем их слитно, разделяя двоеточием, например 4.3.2.1:54321, и после этого нажимает клавишу Enter
Пример вывода:

Enter the endpoint (external ip and port) in format [ipv4:port] (e.g. 4.3.2.1:54321): 4.3.2.1:54321

4.1.3.2. Ввод внутреннего IP адреса

Введите IP адрес сервера Wireguard в защищенной VPN подсети, если не знаете что это такое, просто нажмите клавишу Enter для установки значения по умолчанию (10.50.0.1)
Пример вывода:

Enter the server address in the VPN subnet (CIDR format) ([ENTER] set to default: 10.50.0.1):

4.1.3.3. Указание сервера DNS

Введите IP адрес DNS сервера, или просто нажмите клавишу Enter для установки значения по умолчанию 1.1.1.1 (Cloudflare public DNS)
Пример вывода:

Enter the ip address of the server DNS (CIDR format) ([ENTER] set to default: 1.1.1.1):

4.1.3.4. Указание WAN интерфейса

Дальше требуется ввести имя внешнего сетевого интерфейса, который будет прослушивать внутренний сетевой интерфейс VPN. Просто нажмите Enter, чтобы установить значение по умолчанию для AWS (eth0)
Пример вывода:

Enter the name of the WAN network interface ([ENTER] set to default: eth0):

4.1.3.5. Указание имени клиента

Введите имя VPN пользователя. Дело в том, что VPN сервер Wireguard не сможет запуститься, пока не добавлен хотя бы один клиент. В данном случае я ввел имя Alex@mobile
Пример вывода:

Enter VPN user name: Alex@mobile

После этого на экране должен отобразится QR код с конфигурацией только что добавленного клиента, который надо считать с помощью мобильного клиента Wireguard на Android либо iOS, для его настройки. А также ниже QR кода отобразится текст конфигурационного файла в случае ручной конфигурации клиентов. Как это сделать будет сказано ниже.

Завершение установки Wireguard

4.2. Добавление нового VPN пользователя

Чтобы добавить нового пользователя, необходимо в терминале выполнить скрипт add-client.sh

sudo ./add-client.sh

Скрипт запрашивает имя пользователя:
Пример вывода:

Enter VPN user name: 

Также, имя пользователям можно передать в качестве параметра скрипта (в данном случае Alex@mobile):

sudo ./add-client.sh Alex@mobile

В результате выполнения скрипта, в каталоге с именем клиента по пути /etc/wireguard/clients/{ИмяКлиента} будет создан файл с конфигурацией клиента /etc/wireguard/clients/{ИмяКлиента}/{ИмяКлиента}.conf, а на экране терминала отобразится QR код для настройки мобильных клиентов и содержимое файла конфигурации.

4.2.1. Файл пользовательской конфигурации

Показать на экране содержимое файла .conf, для ручной настройки клиента, можно с помощью команды cat

sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf

результат выполнения:

[Interface]
PrivateKey = oDMWr0toPVCvgKt5oncLLRfHRit+jbzT5cshNUi8zlM=
Address = 10.50.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = mLnd+mul15U0EP6jCH5MRhIAjsfKYuIU/j5ml8Z2SEk=
PresharedKey = wjXdcf8CG29Scmnl5D97N46PhVn1jecioaXjdvrEkAc=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 4.3.2.1:54321

Описание файла конфигурации клиента:

[Interface]
PrivateKey = Приватный ключ клиента
Address = IP адрес клиента
DNS = ДНС используемый клиентом

[Peer]
PublicKey = Публичный ключ сервера
PresharedKey = Общи ключ сервера и клиента
AllowedIPs = Разрешенные адреса для подключения (все -  0.0.0.0/0, ::/0)
Endpoint = IP адрес и порт для подключения

4.2.2. QR код конфигурации клиента

Показать на экране терминала QR код конфигурации для ранее созданного клиента можно с помощью команды qrencode -t ansiutf8 (в данном примере используется клиент с именем Alex@mobile):

sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf8