1. Блог
  2. Мануали

Конфігурація клієнта WireGuard: шаблон і розбір параметрів

Конфігурація клієнта WireGuard: шаблон і розбір параметрів

Клієнту WireGuard для роботи потрібен один невеликий файл. Нижче — мінімальний робочий шаблон, розбір кожного рядка та команди, щоб підняти тунель і переконатися, що він працює.

Мінімальний шаблон

[Interface]
PrivateKey = <приватний ключ клієнта>
Address = 10.10.10.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = <публічний ключ сервера>
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Збережіть його як /etc/wireguard/wg0.conf у Linux або імпортуйте в застосунок WireGuard для Windows, macOS, Android чи iOS.

Що означає кожен параметр

Секція [Interface] описує самого клієнта:

  • PrivateKey — приватний ключ клієнта. Він ніколи не залишає пристрій.
  • Address — адреса клієнта всередині VPN-мережі. Має бути унікальною для кожного клієнта.
  • DNS — DNS-сервер, який використовуватиметься при активному тунелі. Без нього можливий витік DNS-запитів через провайдера.

Секція [Peer] описує сервер:

  • PublicKey — публічний ключ сервера.
  • Endpoint — зовнішня IP-адреса або домен сервера та UDP-порт.
  • AllowedIPs — які адреси надсилати в тунель. 0.0.0.0/0, ::/0 спрямовує через VPN увесь трафік.
  • PersistentKeepalive — раз на 25 секунд надсилає службовий пакет, щоб з’єднання не обривалося за NAT. Потрібен майже всім клієнтам за домашнім роутером або в мобільній мережі.

Генерація ключів

Встановіть WireGuard і створіть пару ключів клієнта:

sudo apt install wireguard
umask 077
wg genkey | tee client.key | wg pubkey > client.pub

Вміст client.key вставте в PrivateKey, а client.pub передайте на сервер.

Додавання клієнта на сервері

У конфігурацію сервера додайте секцію з публічним ключем клієнта та його адресою:

[Peer]
PublicKey = <публічний ключ клієнта>
AllowedIPs = 10.10.10.2/32

Застосуйте зміни без розриву решти підключень:

sudo bash -c 'wg syncconf wg0 <(wg-quick strip wg0)'

Запуск і перевірка

sudo wg-quick up wg0
sudo wg show

У виводі wg show має з’явитися рядок latest handshake з недавнім часом — отже, клієнт і сервер обмінялися ключами. Перевірте зовнішню адресу:

curl ifconfig.me

Команда має повернути IP-адресу сервера. Щоб тунель піднімався під час завантаження системи:

sudo systemctl enable wg-quick@wg0

Роздільне тунелювання

Якщо через VPN потрібен доступ лише до внутрішньої мережі, а решта трафіку має йти напряму, перелічіть у AllowedIPs потрібні підмережі:

AllowedIPs = 10.10.10.0/24, 192.168.50.0/24

Параметр DNS у цьому разі зазвичай прибирають.

Якщо тунель не працює

  • Немає latest handshake — перевірте, що на сервері відкрито UDP-порт, а ключі не переплутано: у [Peer] завжди вказується публічний ключ протилежної сторони.
  • Handshake є, інтернету немає — на сервері не ввімкнено пересилання пакетів (net.ipv4.ip_forward = 1) або немає правила NAT.
  • Сайти не відкриваються за іменем — перевірте параметр DNS.
  • З’єднання зникає через кілька хвилин простою — додайте PersistentKeepalive = 25.

Власний сервер WireGuard

Клієнту потрібен сервер. Його можна розгорнути на VPS за кілька хвилин — найшвидше через WireGuard із вебінтерфейсом, — а сам сервер захистити за допомогою Fail2Ban і входу за SSH-ключами.

#wireguard#vpn#linux#конфігурація

Ця стаття іншими мовами:EnglishРусский