Конфігурація клієнта 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-ключами.


