Подключение по протоколу Wireguard VPN из Linux

Чтобы удаленно подключиться к локальной сети интернет-центра Keenetic, начиная с версии KeeneticOS 3.3 стало возможно использовать туннель Wireguard VPN.

NOTE: Важно! Если вы планируете настроить Keenetic в качестве VPN-сервера, начать необходимо с проверки того, что он имеет публичный "белый" IP-адрес, а при использовании сервиса KeenDNS, что он работает в режиме "Прямой доступ". При несоблюдении любого из этих условий подключение к такому серверу из Интернета будет невозможно.

Сначала необходимо выполнить настройку сервера Wireguard в Keenetic, которая показана в инструкции "Туннельный интерфейс Wireguard и пример настройки VPN соединения локальных сетей двух маршрутизаторов Keenetic", после переходите к настройке VPN-клиента.

Ниже приведем пример действий для подключения к VPN-серверу из операционной системы под управлением ОС Linux, на примере дистрибутива Ubuntu 18.04 LTS.

Чтобы установить соединение к Wireguard-серверу Keenetic, в компьютере на базе ОС Linux, потребуется установить пакет wireguard, при помощи встроенного пакетного менеджера apt.

1. Заходим в терминал и выполняем установку необходимых для подключения Wireguard - репозиторий, пакет приложения, модуль ядра:

[enpa@enpa-linux ~]$ sudo add-apt-repository ppa:wireguard/wireguard && sudo apt update && sudo apt install wireguard
WireGuard is a novel VPN that runs inside the Linux Kernel. This is the Ubuntu packaging for WireGuard. More info may be found at its website, listed below.

More info: https://www.wireguard.com/
Packages: wireguard wireguard-tools wireguard-dkms

Install with: $ apt install wireguard

For help, please contact <email address hidden>
Больше информации: https://launchpad.net/~wireguard/+archive/ubuntu/wireguard
Нажмите [ENTER] для продолжения или Ctrl-C, чтобы отменить добавление.

Игн:1 http://dl.google.com/linux/chrome/deb stable InRelease
Сущ:2 http://dl.google.com/linux/chrome/deb stable Release
Сущ:3 http://repo.yandex.ru/yandex-disk/deb stable InRelease
..........
Building for 5.1.21-050121-generic
Building initial module for 5.1.21-050121-generic
Secure Boot not enabled on this system.
Done.

wireguard:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.1.21-050121-generic/updates/dkms/

depmod...

DKMS: install completed.
Настраивается пакет wireguard-tools (0.0.20191012-wg1~bionic) …
Настраивается пакет wireguard (0.0.20191012-wg1~bionic) …
Обрабатываются триггеры для man-db (2.8.3-2ubuntu0.1) …
[Листинг сокращен для экономии места]

2. Переходим к созданию приватного ключа Private Key и публичного ключа Public Key:

[enpa@enpa-linux ~]$ cd /etc/wireguard/
[enpa@enpa-linux wireguard]$ umask 077
enpa@enpa-linux wireguard]$ sudo -i
[sudo] пароль для enpa:
root@enpa-linux:~# cd /etc/wireguard/
root@enpa-linux:/etc/wireguard# wg genkey > private-key
root@enpa-linux:/etc/wireguard# wg pubkey > public-key < private-key
root@enpa-linux:~# exit
[enpa@enpa-linux wireguard]$ sudo cat private-key
AOSXWm+sXxRuu/Uo8lysE4PIwVZTRDD+YV6w3HicGHg=
[enpa@enpa-linux wireguard]$ sudo cat public-key
xxKBcZlhZlbjW7yFuhZ08l294HBAp2I/iM05YE8vs0Y=
[enpa@enpa-linux wireguard]$ cd -
[enpa@enpa-linux ~]$

3. Создадим файл конфигурации Wireguard - wg-client.conf:

[enpa@enpa-linux wireguard]$ sudo touch wg-client.conf
[enpa@enpa-linux wireguard]$ ls -1F
private-key
public-key
wg-client.conf

4. Добавим настройку подключения в созданный файл конфигурации wg-client.conf, открыв файл в текстовом редакторе nano:

[enpa@enpa-linux wireguard]$ sudo nano wg-client.conf
[sudo] пароль для enpa:

[Interface]
PrivateKey =AOSXWm+sXxRuu/Uo8lysE4PIwVZTRDD+YV6w3HicGHg=
Address = 172.16.82.5/24
DNS =

[Peer]
PublicKey = 1YVx+x3C817V9YdhUtpUhzyDLVj5tnK2m//WjFGynm4=
AllowedIPs = 172.16.82.1/32, 192.168.22.0/24
Endpoint = enpwgwrkserver.dynns.com:16631
PersistentKeepalive = 5

Настройка [Interface] клиента:

В поле "PrivateKey" интерфейса клиента вводим созданный приватный ключ в пункте 2.
Напомним, что посмотреть ключ можно при помощи вывода команды cat:

[enpa@enpa-linux wireguard]$ sudo cat private-key
AOSXWm+sXxRuu/Uo8lysE4PIwVZTRDD+YV6w3HicGHg=

В поле "Addresses" интерфейса клиента указываем IP-адрес, в формате IP/bitmask — 172.16.82.5/24 (это внутренний адрес туннеля). Можно использовать другую подсеть, при этом ее следует выбрать из зарезервированных для частного использования диапазонов и таким образом избежать наложения с другими настроенными на данных устройствах подсетями.

NOTE: Важно! Если у вас настроен "Доступ в Интернет через Wireguard-туннель" роутера, на стороне "[Interface] клиента" необходимо указать DNS-сервер в поле "DNS=".

В нашем примере указан адрес DNS-сервера от Google 8.8.8.8:

[Interface]
PrivateKey =AOSXWm+sXxRuu/Uo8lysE4PIwVZTRDD+YV6w3HicGHg=
Address = 172.16.82.5/24
DNS = 8.8.8.8

[Peer]
PublicKey = 1YVx+x3C817V9YdhUtpUhzyDLVj5tnK2m//WjFGynm4=
AllowedIPs = 172.16.82.1/32, 192.168.22.0/24
Endpoint = enpwgwrkserver.dynns.com:16631
PersistentKeepalive = 5

Настройка [Peer] сервера:

В поле "PublicKey" вставьте публичный ключ сервера, который можно скопировать в буфер обмена компьютера из настроек Wireguard в веб-интерфейсе роутера:

wg-lin-01.png

В поле "AllowedIPs" указываем разрешенные IP-адреса, в формате IP/bitmask — 172.16.82.1/32 (это внутренний адрес сервера) и 192.168.22.0/24 (адрес локального сегмента роутера Keenetic).

В поле "Endpoint" указываем публичный IP-адрес или доменное имя Wireguard-сервера, и порт прослушивания, на который будет устанавливать связь Wireguard-клиент.

В поле "PersistentKeepalive" указываем периодичность попыток проверки доступности удаленной стороны соединения. Обычно, достаточно 3-5-секундного интервала между проверками.

5. Настраиваем удаленное подключение на стороне уже заранее настроенного Wireguard-сервера.

Подключитесь к веб-конфигуратору роутера и перейдите в меню "Интернет" на страницу "Другие подключения". Нажмите на Keenetic-A подключение и добавьте "Настройки пира". Нажав на "Добавить пир" откроется поле настроек пира, в котором укажите название туннеля "wg-ubunta-client".

В поле "Публичный ключ" вставляем ключ, который был создан в пункте 2. 
Напоминаем, что посмотреть ключ можно при помощи вывода команды cat

[enpa@enpa-linux wireguard]$ sudo cat public-key
xxKBcZlhZlbjW7yFuhZ08l294HBAp2I/iM05YE8vs0Y=

В поле "Разрешенные подсети" указываем адрес, трафик с которого будет допущен до сервера в формате IP/bitmask — 172.16.82.5/32

В поле "Проверка активности" необходимо указать периодичность попыток проверки доступности удаленной стороны соединения. Обычно достаточно 3-5 секундного интервала между проверками. По умолчанию значение "Проверки активности" в настройках пира Keenetic указано 30 секунд.

Нажмите "Сохранить".

wgu.png

6. Создаем автоматическое Wireguard-подключение при загрузке ОС через систему инициализации 
Systemd, которая позволяет запускать и управлять демонами системы ОС Linux:

[enpa@enpa-linux ~]$ sudo systemctl enable wg-quick@wg-client.service
Created symlink /etc/systemd/system/multi-user.target.wants/wg-quick@wg-client.service → /lib/systemd/system/wg-quick@.service.

Внимание! В имени сервиса ***.service - вводим имя конфигурации wg-client.conf

7. Запускаем Wireguard-подключение:

[enpa@enpa-linux ~]$ sudo systemctl start wg-quick@wg-client.service

Проверяем подключение:

[enpa@enpa-linux ~]$ sudo wg
interface: wg-client
public key: xxKBcZlhZlbjW7yFuhZ08l294HBAp2I/iM05YE8vs0Y=
private key: (hidden)
listening port: 45757

peer: 1YVx+x3C817V9YdhUtpUhzyDLVj5tnK2m//WjFGynm4=
endpoint: 193.0.174.159:16631
allowed ips: 172.16.82.1/32, 192.168.22.0/24
transfer: 0 B received, 148 B sent
persistent keepalive: every 5 seconds

Для проверки доступности сервера можно выполнить отправку ICMP-пакетов до IP-адреса:

[enpa@enpa-linux ~]$ ping -c 10 -s 100 192.168.22.1
PING 192.168.22.1 (192.168.22.1) 100(128) bytes of data.
108 bytes from 192.168.22.1: icmp_seq=1 ttl=64 time=6.76 ms
108 bytes from 192.168.22.1: icmp_seq=2 ttl=64 time=6.70 ms
108 bytes from 192.168.22.1: icmp_seq=3 ttl=64 time=6.63 ms
108 bytes from 192.168.22.1: icmp_seq=4 ttl=64 time=6.84 ms
108 bytes from 192.168.22.1: icmp_seq=5 ttl=64 time=6.57 ms
108 bytes from 192.168.22.1: icmp_seq=6 ttl=64 time=6.24 ms
108 bytes from 192.168.22.1: icmp_seq=7 ttl=64 time=9.92 ms
108 bytes from 192.168.22.1: icmp_seq=8 ttl=64 time=9.75 ms
108 bytes from 192.168.22.1: icmp_seq=9 ttl=64 time=5.77 ms
108 bytes from 192.168.22.1: icmp_seq=10 ttl=64 time=7.03 ms

--- 192.168.22.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9014ms
rtt min/avg/max/mdev = 5.778/7.225/9.920/1.349 ms

8. Для отключения автоматического запуска Wireguard-подключения, при загрузке ОС через систему инициализации Systemd, потребуется ввести следующую команду:

[enpa@enpa-linux ~]$ sudo systemctl disable wg-quick@wg-client.service
Removed /etc/systemd/system/multi-user.target.wants/wg-quick@wg-client.service.

9. Для остановки Wireguard-подключения потребуется ввести следующую команду:

[enpa@enpa-linux ~]$ sudo systemctl stop wg-quick@wg-client.service

Настройка завершена.

 

Была ли эта статья полезной?

Пользователи, считающие этот материал полезным: 3 из 4

Еще есть вопросы? Отправить запрос

Комментарии

0 комментариев

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