ADS 468x60

2022-04-25

Свій VPN сервер з WireGuard.

Більшість з нас вважає, що налаштування власного VPN сервера - це складно. Насправді це не зовсім так, так було колись, с кожним днем більшість компаній які надають хмарні послуги намагаються полегшити або спростити процеси використання їх сервісів, а також створення хмарних серверів, наприклад  Amazon lightsail (AWS) або Droplets від Digital Ocean.

Інструкція щодо створення хмарного сервера у Digital Ocean на базі якого будемо створювати свій VPN сервер, а тут інформація щодо створення сервера на Amazon lightsail (AWS).


В цьому нотатку розглянемо встановлення та налаштування одного з найпростіших VPN сервера з використанням протоколу WireGuard.

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

Почнемо з підключення до сервера Ubuntu 20.04.4 LTS який був створено раніше на Digital Ocean. Підключатись будемо за допомогою web консолі (у розділі “Droplet” з випадаючого меню обираємо  “Access Console” та натиснути на кнопку "Launch Droplet Console")

Після підключення до сервера виконуємо дії щодо оновлення серверу, вводимо команду “apt update && apt upgrade -y”

Увага! Всі команди необхідно вводити без лапок “”

 

Дочекаємось успішного оновлення і почнемо встановлення VPN серверу WireGuard, вводимо команду “apt install -y wireguard”.

Як тільки всі необхідні пакети будуть завантажені та встановлені на сервер переходимо до створення/генерування ключів сервера, вводимо команду “wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey”

Наступним шагом нам необхідно надати/змінити права доступу до приватного ключа “chmod 600 /etc/wireguard/privatekey”

Для подальшого конфігурування серверної частини необхідно перевірити як називається ваш мережевий інтерфейс, введіть команду “ip a” та зверніть увагу на строку де знаходиться ваша зовнішня IP адреса.

У більшості випадків мережевий інтерфейс буде eth0, як на скриншоті, але можуть бути й інші назви. А тепер створюємо саме конфігураційний файл введіть команду “nano /etc/wireguard/wg0.conf” я використовую редактор nano, ви можете використовувати будь-який зручний для вас.
Скопіюйте конфігурацію та вставте її у створений вами файл, має бути як на знімок з екрана ниже:

[Interface]

PrivateKey = <privatekey>

Address = 10.0.0.1/24

ListenPort = 51830

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

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


Зверніть увагу що саме в строках PostUp і PostDown використовується мережевий інтерфейс 
eth0, якщо у вас інша назва замініть на вашу.
Щоб додати “PrivateKey” серверу, треба зберегти створений файл “/etc/wireguard/wg0.conf” комбінацією клавіш “Control + O”, після збереження вийти з файлу комбінацією клавіш “Control + X” та виконати команду cat /etc/wireguard/privatekey”.
Виділіть і скопіюйте інформацію в буфер комбінацією клавіш Control + С, знову відкрийте файл конфігурації “nano /etc/wireguard/wg0.conf” - переведіть курсор в строку “PrivateKey = <privatekey>” та замість “<privatekey>” вставити скопійований ключ який ви отримали під час виконання командиcat /etc/wireguard/privatekey

Наступним кроком необхідно налаштувати IP форвардинг, це можна зробити перейшовши в файл конфігурації “/etc/sysctl.conf” розкоментував відповідну строку, а можна зробити просто, виконати команду “echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf” - ця команда не розкоментує строку, а просто додасть необхідний параметр в кінець файлу конфігурації. Після виконання команди необхідно оновити/перезавантажити конфігурацію системи с новим параметром, виконайте команду “sysctl -p”

Активуємо, включаємо та перевіряємо статус необхідної служби wireguard, по черзі виконайте наступні команди:

“systemctl enable [email protected]

“systemctl start [email protected]

“systemctl status [email protected]


Після того як було сконфігуровано серверну частину, переходимо до створення клієнтського підключення. Спочатку необхідно створити відповідні ключі та конфігураційні файли для вашого обладнання, наприклад, я створив ключі та конфігурацію для свого комп'ютера. Для створення ключів клієнта виконайте наступну команду “wg genkey | tee /etc/wireguard/kaloshin_privatekey | wg pubkey | tee /etc/wireguard/kaloshin_publickeyУвага! Змініть назви ваших ключів з kaloshin_privatekey та kaloshin_publickey на your_name_privatekey та your_name_publickey

Збережіть створений “your_name_publickey”, якій необхідно буде додати в конфігураційний файл сервера, додаємо конфігурацію клієнта, виконайте команду “nano /etc/wireguard/wg0.conf” та додайте в кінці файлу наступне:


[Peer]

PublicKey = <your_name_publickey>

AllowedIPs = 10.0.0.2/32

Якщо ви не зберегли свій <your_name_publickey>, вийдіть з редагування, не забудьте попередньо зберегти зміни Control + O, виконайте команду “cat /etc/wireguard/your_name_publickey” вашого ключа, збережіть його в буфері “Control + С” та знов перейдіть до редагування файлу “nano /etc/wireguard/wg0.conf”.

Після того як внесли до конфігураційного файлу “/etc/wireguard/wg0.conf” параметри підключення та зберегли його, необхідно знову перезавантажити необхідні сервіси для того, щоб вони прийняли нові параметри, виконайте послідовно наступні команди:

“systemctl restart wg-quick@wg0”

“systemctl status wg-quick@wg0”


На вашому комп'ютері необхідно створити конфігураційний файл для програми/застосунку WireGuard, для цього ви можете використати текстовий редактор “Блокнот” (notepad), або будь-якій інший редактор.

Створюємо файл “your_name_.conf” в який додайте наступні строки:


[Interface]

PrivateKey = <your_name_PRIVATE-KEY>

Address = 10.0.0.2/32

DNS = 8.8.8.8


[Peer]

PublicKey = <SERVER-PUBKEY>

Endpoint = <SERVER-IP>:51830

AllowedIPs = 0.0.0.0/0

PersistentKeepalive = 20


PrivateKey = <CLIENT-PRIVATE-KEY> замінюємо на результат виконання команди “cat /etc/wireguard/your_name_privatekey”.

PublicKey = <SERVER-PUBKEY> замінюємо на результат виконання команди “cat /etc/wireguard/publickey” на сервері.

Endpoint = <SERVER-IP> <SERVER-IP> замінюємо на IP адресу вашого сервера.
Зберігаємо створений файл “your_name_.conf”

Якщо у вас не встановлено програма WireGuard клієнт на вашому комп'ютері то встановіть, зайдіть на сайт завантажте програму під вашу операційну систему (WireGuard клієнт існує майже для всіх операційних систем).

Після завантаження і встановлення програми WireGuard запустіть її, натисніть на знак додавання “+” та оберіть “Імпорт тунелів із файлу” після чого відкрийте створений “your_name_.conf” конфігураційний файл.

Як файл буде додано і він з'явиться у вікні зліва - тисніть на кнопку “Під'єднатися”.

Якщо вам необхідно додати ще одного клієнта або вирішили використовувати VPN з вашого телефону, заходимо в конфігураційний файл сервера та додаємо ще один “[Pear]” як на малюнку ниже:

Зверніть увагу що для нового користувача/клієнта необхідно створити свій privatekey та publickey, а також додати 1 до IP адреси у конфігураційному файлі сервера :)

Якщо у вас будуть питання, або необхідна якась допомога пищить мені електронну пошту адреса якої знаходиться у розділі Contacts.

UPD: 27.04.2022

Хочу поділитись ще одним способом передачі конфігурації підключення мобільного телефону до VPN серверу WireGuard. Якщо ви створили конфігураційний файл “your_name_.conf” для вашого телефону безпосередньо то, вам необхідно додатково встановити генератор QR code, для цього виконайте команду “sudo apt install qrencode”. Після встановлення програми поверніться в каталог/тека в якій знаходиться ваш “your_name_.conf” та виконайте наступну команду “qrencode -t ansiutf8 < your_name_.conf
Після того як вам відобразиться QR code вашого підключення, запустіть програму WireGuard у вашому телефоні, натисніть на кнопку “+”, виберіть з меню “Create from QR code” та наведіть камеру на QR code.
Як тільки програма просканує QR code вам буде запропоновано дати ім'я/назву цьому підключенню.


0 comments:

Post a Comment

Популярне за тиждень