WireGuard – це новий VPN протокол з відкритим вихідним кодом, заснований на останніх концепціях криптографії. Його особливість – простота виконання і високий швидкість роботи. WireGuard працювати швидше і якісніше, ніж VPN-протоколи OpenVPN і IKEv2. WireGuard реалізує методи віртуальної приватної мережі для створення захищеного з’єднання в маршрутизованих або мостових конфігураціях, Включений до складу ядра Linux, починаючи з версії 5.6.

переваги WireGuard:

  • Простий в установці, налаштуванні і використанні;
  • Використовує сучасні криптографічні алгоритми: Noise protocol framework, Curve25519, ChaCha20, Poly1305 і т.д.
  • Висока продуктивність за рахунок реалізації його у вигляді модуля ядра (можна отримати швидкість до 1Гбіт / с, що в 4 рази більше ніж продуктивність OpenVPN);
  • Компактний і читається код (основна логіка WireGuard займає близько 4 тис. Рядків коду, тоді як в OpenVPN доходить до декількох сотень тисяч), простіше досліджувати на уразливості ..

З мінусів можна навести кілька прикладів:

  • WireGuard VPN працює тільки по UDP, тобто якщо у вас закритий UDP трафік, підключення не працюватимуть;
  • Розробники поки ще називають свій продукт експериментом.

У даній статті, ми розглянемо настройку WireGuard на сервері з CentOS 7 і 8, Але даний VPN-сервер, підтримується практично на всіх Linux дистрибутивах і не тільки.

Установка WireGuard в Linux

Перед установкою необхідного ПО на сервер, виконайте оновлення пакетів на сервері за допомогою пакетного менеджера:

# yum update -y

або для CentOS 8:

# dnf update -y

Тепер потрібно підключити репозиторій EPEL і wireguard, потім встановити необхідні пакети. для CentOS 7:

# curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
# yum install epel-release -y && yum install wireguard-tools wireguard-dkms qrencode -y

для CentOS 8:

# dnf install epel-release && dnf install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm && dnf install akmod-wireguard wireguard

Надалі настройка WireGuadr не відрізняється на цих дистрибутивах CentOS. Щоб перевірити, що модуль wireguard був встановлений і завантажений, виконайте команду:

# modprobe wireguard && lsmod | grep wireguard

установка wireguard в linux centos

Базова настройка VPN сервера WireGuard

Створіть директорію для WireGuard:

# mkdir /etc/wireguard && cd /etc/wireguard

Тепер можна приступити до генерації ключів для клієнта і сервера:

# wg genkey | tee server-private.key | wg pubkey > server-public.key
# wg genkey | tee client-private.key | wg pubkey > client-public.key
# chmod 600 ./*-private.key

В результаті виконання попередніх команд, з’явиться 4 файлу з ключами: приватний і публічний ключі для сервера, а також аналогічні ключі для клієнта (ми будемо використовувати їх під час налаштування клієнта WireGuard).

генерація ключів для wireguard

Далі потрібно створити конфігураційний файл для сервера:

# nano /etc/wireguard/wg0-server.conf

І додати в нього наступне вміст:

[Interface]
Address = 10.0.0.1/24
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 39548
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32
  • В полі PrivateKey потрібно додати вміст файлу server-private.key
  • В полі PublicKey ви додаєте вміст з файлу client-public.key
  • Адреса – IP адреса сервера wireguard
  • ListenPort – порт на якому буде працювати wireguard
  • ДозволеноIP – IP адреси, які призначаються VPN клієнта

Метод і PostDown правила iptables при підключенні дротяна охорона.

У блоці [Peer] вказуються дані для VPN клієнтів. Якщо їх буде кілька, то потрібно додати блоки для нових клієнтів, з новим IP адресою і новим ключем.

Якщо у вас на сервері використовується не iptables, а брандмауер, Замініть рядки в файлі конфігурації, які відносяться до налаштувань брандмауера:

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Ви замінюєте на:

PostUp = firewall-cmd --add-port $SERVER_PORT/udp && firewall-cmd --add-rich-rule="rule family=ipv4 source address=$FIREWALLD_IPV4_ADDRESS/24 masquerade" && firewall-cmd --add-rich-rule="rule family=ipv6 source address=$FIREWALLD_IPV6_ADDRESS/24 masquerade"
PostDown = firewall-cmd --remove-port $SERVER_PORT/udp && firewall-cmd --remove-rich-rule="rule family=ipv4 source address=$FIREWALLD_IPV4_ADDRESS/24 masquerade" && firewall-cmd --remove-rich-rule="rule family=ipv6 source address=$FIREWALLD_IPV6_ADDRESS/24 masquerade"

Щоб додати нового клієнта на сервер, вам потрібно згенерувати для нього ключі, виконується це так само, як і для першого клієнта:

# wg genkey | tee client2-private.key | wg pubkey > client-public.key
# chmod 600 ./*-private.key

Тепер добаьте блок для нового клієнта в конфігураційний файл /etc/wireguard/wg0-server.conf:

[Peer]
PublicKey = CLIENT2_PUBLIC_KEY
AllowedIPs = 10.0.0.3/32

І так далі.

Увімкніть форвардного пакетів:

# cat /etc/sysctl.conf

net.ipv4.ip_forward = 1

# sysctl -p

Додайте сервіс WireGuard в автозавантаження і запустіть його:

# systemctl enable wg-quick@wg0-server
# systemctl start wg-quick@wg0-server

Перевірте, що з’явився окремий мережевий інтерфейс:

#ip a show wg0

Тепер ви можете підключитися до вашого VPN сервера з різних клієнтів. Розглянемо, як їх налаштувати.

Підключення до WireGuard з мобільного пристрою Android

Для підключення з мобільного пристрою Android, Найкраще використовувати додаток WireGuard, Яке є в Play Маркет (Google Play):

WireGuard клієнт для android в Google Play

Встановіть додаток, відкрийте і натисніть кнопку для додавання нового підключення:

WireGuard додавання нового підключення в клієнті

Щоб максимально просто створити нове VPN підключення, потрібно на WireGuard сервері і створити файл для генерації qr-код:

# nano /etc/wireguard/client.conf

І додамо в нього наступне вміст:

[Interface]
Address = 10.0.0.2/24
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 77.88.8.8
[Peer]
PublicKey = SERVER_PUBLIC_KEY
AllowedIPs = 0.0.0.0/0
Endpoint = SERVER_IP:39548
PersistentKeepalive = 20
  • В поле PrivateKey потрібно вказати вміст файлу client-private.key
  • В поле PublicKey – дані з файлу server-public.key
  • Значення SERVER_IP замініть білим (реальним) IP-адресою вашого сервера
  • DNS можете заповнити на ваш вибір.

Виконайте команду для генерації QR коду:

# qrencode -t ansiutf8 < /etc/wireguard/client.conf

Після виконання команди, ви повинні отримати qr-код який потрібно відсканувати в додатку на Android:

qrencode - згенерувати qr код для підключення в wireguard

Залишилося вказати ім’я підключення і воно буде автоматично створено на вашому мобільному (зі Свема ключами і настройками). Після підключення до VPN сервера ви вийти в інтернет з адресою WireGuard (Як при підключенні до будь-якого VPN сервісу):

vpn підключення wireguard в android

Для пристроїв з IOS так само є клієнт WireGuard. Налаштування виконується аналогічно Android. Всі ваші кроки для підключення будуть ідентичними.

Налаштування клієнта WireGuard в Windows

Для підключення до WireGuard VPN з комп’ютера Windows, Скачайте дистрибутив з офіційного сайту https://www.wireguard.com/install/#windows-7-8-81-10-2012-2016-2019

Встановіть клієнт WireGuard і запустіть його.

wireguard клієнт для windows

створіть файл client.conf (Генерується за способом, описаному вище при генерації qr-коду), натисніть кнопку Import і вкажіть дане зображення:

настройка vpn підключення wireguard в windows

Натисніть кнопку ‘Activate’ і з’єднання буде встановлено. В налаштуваннях підключення буде міститися публічний ключ, порт підключення, призначений IP адреса.

відключитися від wireguard

Щоб відключитися від WireGuard, Натисніть кнопку Deactivate.

Таким чином, ми налаштували VPN-сервер WireGuard, який не поступається OpenVPN або IpSec, А налаштовується набагато швидше і простіше.

Leave a Reply

Your email address will not be published. Required fields are marked *