На сайті WireGuard все описано, але я думаю що спробую пояснити простіше в цьому прикладі. По перше нам потрібно його встановити на сервер до якого ми будемо під'єднуватись. То може бути домашній комп'ютер, якийсь віддалений сервер, ну або домашній роутер, NAS на базі Лінукса тощо.
sudo apt install wireguard
З'явиться директорія /etc/wireguard
нам потрібно створити конфігураційний файл сервера для підключення. Так от sudo nano /etc/wireguard/wg0.conf
. Для зручності налаштування конфігурацій бажано відкрити два вікна термінала. В одному вікні писати конфігурацію, а в іншому створювати ключі потім вписувати в конфігурацію як для сервера, так і для клієнта. Якщо дистанційно, то можна створити два підключення по SSH. Можна спочатку створити ключі, скопіювати, а потім знову відкрити sudo nano /etc/wireguard/wg0.conf
. Можна встановити на свій комп'ютер sudo apt install wireguard-tools
і на своєму комп'ютері згенерувати ключі потім їх вставити в конфігурацію, як зручно, так і робіть.
Створюємо ключі для сервера
wg genkey | tee privatekey | wg pubkey > publickey
для наочності:
privatekey 2LQH2sJi/+h2T7TpOJbGFPb7CQcM52RJC2m7iPmuimg=
publickey +LD5qRS1USnXBO7xRM85+s3EkhRUlJgltWjZDkb9mnw=
У вас з'явиться два ключі privatekey
який записується в серверну частину /etc/wireguard/wg0.conf
й publickey
який записується в конфігурацію клієнту.
Наразі нам потрібен privatekey
, командою cat privatekey
читаємо цей ключ. За ключі не переживайте, їх можна генерувати скільки хочеш.
Конфігурація сервера /etc/wireguard/wg0.conf
повинна виглядати так:
[Interface]
Address = 10.2.0.1/24
ListenPort = 51820
PrivateKey = 2LQH2sJi/+h2T7TpOJbGFPb7CQcM52RJC2m7iPmuimg=
Далі ми створюємо ключі для клієнта або клієнтів які будуть під'єднуватись до цього сервера. Тією ж самою командою, тільки там де privatekey
і publickey
дописуємо що то ключі для клієнта або клієнтів. Бо якщо не змінимо назву, то генератор їх перепише заново і нічого працювати не буде.
Приклад:
wg genkey | tee cl_privatekey | wg pubkey > cl_publickey
або
wg genkey | tee cl1_privatekey | wg pubkey > cl1_publickey
Ключі як приклад:
cl_privatekey SElQCNYcXPr31gyekTMH03PSvH1T4QCLimIvzWZnIFA=
cl_publickey QPFy2+uw0GQprUFmGJTj7MHc3gwqF13DJpNLwZ4l0xo=
Знову повертаємось до нашого серверної конфігурації sudo nano /etc/wireguard/wg0.conf
і дописуємо одного клієнта.
Як приклад:
[Interface]
Address = 10.2.0.1/24
ListenPort = 51820
PrivateKey = 2LQH2sJi/+h2T7TpOJbGFPb7CQcM52RJC2m7iPmuimg=
[Peer]
PublicKey = QPFy2+uw0GQprUFmGJTj7MHc3gwqF13DJpNLwZ4l0xo=
AllowedIPs = 10.2.0.2/32
Для іншого клієнта знову генеруємо інші ключі, додаємо:
[Interface]
Address = 10.2.0.1/24
ListenPort = 51820
PrivateKey = 2LQH2sJi/+h2T7TpOJbGFPb7CQcM52RJC2m7iPmuimg=
[Peer]
PublicKey = QPFy2+uw0GQprUFmGJTj7MHc3gwqF13DJpNLwZ4l0xo=
AllowedIPs = 10.2.0.2/32
[Peer]
PublicKey = RurlvQcJ3k8RFSxpwUN5FeWNsKipyFRF12REOAvjrCM=
AllowedIPs = 10.2.0.3/32
Серверна частина в нас готова. Запускаємо сервер:
sudo systemctl enable wg-quick@wg0.service
sudo systemctl start wg-quick@wg0.service
sudo systemctl status wg-quick@wg0.service
Потрібно створити файл конфігурації для клієнта або клієнтів. Він має вигляд подібний до серверної конфігурації.
nano cl_config.conf
[Interface]
Address = 10.2.0.2/32
DNS = 8.8.8.8 #це Google DNS, можна поставити ваш локальний, або декілька через кому
PrivateKey = SElQCNYcXPr31gyekTMH03PSvH1T4QCLimIvzWZnIFA=
[Peer]
PublicKey = +LD5qRS1USnXBO7xRM85+s3EkhRUlJgltWjZDkb9mnw=
AllowedIPs = 0.0.0.0/0
Endpoint = ваш_домен або ваш_ір:51820
PersistentKeepAlive = 25
Цей nano cl_config.conf
додати до клієнта, будь то клієнт телефону, чи комп'ютера.
Всі клієнти є на сайті WireGuard
Також можна створити QR code
:
sudo apt install qrencode
сгенерувати код
qrencode -t ansiutf8 -s 3 < cl_config.conf
В терміналі можна дивитись за підключенням:
sudo wg