Инсталация и конфигурация на WireGuard crypto VPN в MikroTik, Linux, Android, Windows и OpenWRT
Съдържание
Сравнение на WireGuard спрямо OpenVPN
WireGuard като другите VPN-и ли е?
WireGuard преминава ли през NAT?
Как да конфигурираш WireGuard в MikroTik
Как да конфигурираш WireGuard в Kali Linux
Какво прави AllowedIPs в конфигурационния файл на WireGuard?
Как да конфигурираш WireGuard в Android
Как да конфигурираш WireGuard в Windows
Как да конфигурираш WireGuard в OpenWRT?
Преносим ли е конфигурационният файл на WireGuard?
Какво е WireGuard?
WireGuard е съвременно, високопроизводително и криптографско VPN (виртуална частна мрежа) решение. То представлява отворен софтуер и е проектирано да бъде по-лесно за използване, по-бързо и по-сигурно в сравнение с традиционните VPN протоколи като IPSec и OpenVPN. WireGuard използва модерни криптографски техники и протоколи, които осигуряват силна сигурност.
Една от ключовите характеристики на WireGuard е неговата простота, което прави конфигурирането и управлението много по-лесни в сравнение с други VPN решения. Това включва по-малък брой кодови редове, което облекчава аудита и проверката за сигурност. В допълнение, WireGuard предлага висока производителност и може да работи на различни платформи, включително Windows, macOS, Linux, RouterOS, OpenWRT, iOS и Android.
История на WireGuard
Историята на WireGuard, виртуалната частна мрежа (VPN) технология, започва с нейното създаване от Джейсън Доненфелд. WireGuard е разработен като алтернатива на съществуващите VPN протоколи, като OpenVPN и IPSec, които са считани за сложни и трудни за конфигуриране и поддържане. Целта на WireGuard е да предложи по-проста, по-бърза и по-сигурна опция.
Разработката на WireGuard започва около 2015 година. Отличителна черта на WireGuard е неговата лекота и простота, с значително по-малък брой кодови редове в сравнение с другите VPN протоколи. Това улеснява аудита и подобрява сигурността, тъй като по-малкият код е по-лесен за анализ и отстраняване на грешки.
Протоколът използва съвременни криптографски алгоритми и методи, като например Noise Protocol Framework, Curve25519 за шифроване на ключовете, ChaCha20 за шифроване на данни, Poly1305 за аутентикация на данни и BLAKE2s за хеширане. Тези технологии осигуряват силна сигурност при същевременно запазване на висока производителност.
WireGuard първоначално е разработен за Linux, но постепенно получава поддръжка и за други операционни системи като Windows, macOS, iOS и Android. Включването му в ядрото на Linux през 2020 година е значим момент в историята на WireGuard, тъй като това означава официалното признание на неговата стабилност и сигурност.
WireGuard привлича вниманието и на бизнес сектора и индивидуалните потребители поради своята ефективност, лесен за използване интерфейс и високи стандарти за сигурност. Това го прави предпочитан избор за много организации и индивидуални потребители, търсещи надеждно и ефективно VPN решение.
Сравнение на WireGuard спрямо OpenVPN


WireGuard като другите VPN-и ли е?
WireGuard се отличава от много традиционни VPN технологии като IPSec и OpenVPN по няколко важни аспекта, включително начина, по който той управлява трафика и своите протоколни спецификации:
- Не използва GRE протокола: WireGuard не използва GRE (Generic Routing Encapsulation) протокола, който е често използван в други VPN решения. Вместо това, WireGuard използва собствен, по-прост и ефективен механизъм за тунелиране.
- Използва UDP, не TCP: WireGuard работи изключително през UDP (User Datagram Protocol), за разлика от някои други VPN протоколи, които поддържат или TCP (Transmission Control Protocol), или и двете. Изборът на UDP помага за по-добра производителност и отговорност, особено при сценарии със значителна загуба на пакети и висока латентност.
- Портове: WireGuard може да работи на всякакви UDP портове, като портът може да бъде конфигуриран от потребителя. Това го прави гъвкав и лесен за интегриране в различни мрежови настройки.
- Простота и сигурност: Едно от ключовите предимства на WireGuard е неговата простота както в кода, така и в конфигурацията. Той използва съвременни криптографски техники, което го прави много сигурен, като същевременно се стреми към минималистичен и лесен за аудит дизайн.
Общо взето, WireGuard представлява значително улеснение и подобрение в сравнение с традиционните VPN решения, като осигурява високо ниво на сигурност, простота и ефективност.
WireGuard преминава ли през NAT?
Да, WireGuard може да работи през NAT (Network Address Translation). Това е едно от ключовите предимства на WireGuard, което го прави подходящ за използване в множество домашни и корпоративни мрежови среди, където NAT е често срещан.
WireGuard използва UDP за транспортния си слой, което улеснява преминаването през NAT. Когато WireGuard клиент се свързва със сървър, той изпраща пакети до сървъра, които позволяват на NAT устройството (например домашен рутер) да „научи“ къде да препрати входящия трафик за WireGuard сесията. Този процес, известен като NAT traversal, е автоматичен и обикновено не изисква ръчна конфигурация.
Допълнителни настройки като „Keepalive“ могат да бъдат използвани за поддържане на активна връзка през NAT. Това е полезно в случаите, когато NAT устройството има тенденцията да „забравя“ за неактивни връзки след известно време, което може да прекъсне WireGuard връзката.
WireGuard разширена топология
Възможно е WireGuard да се интегрира в по-сложна мрежова архитектура с множество отдалечени обекти (например много офиси на една фирма) и да се разшири до поддържане на динамична маршрутизация. Въпреки че WireGuard сам по себе си не е динамичен маршрутизиращ протокол, той може да бъде комбиниран с други маршрутизиращи решения, за да се постигне тази цел. Ето няколко начина, по които това може да се осъществи:
- Интеграция с Маршрутизиращи Протоколи: Можеш да интегрираш WireGuard с традиционни маршрутизиращи протоколи като BGP (Border Gateway Protocol) или OSPF (Open Shortest Path First). Това позволява на маршрутизаторите да обменят информация за маршрути и да настроят автоматично маршрутите в твоята мрежа. Тази интеграция обикновено се извършва на по-високо, по-сложно ниво и може да изисква специализирано оборудване или софтуер.
- Използване на Скриптове и Автоматизация: Автоматизираните скриптове могат да се използват за управление на WireGuard конфигурациите в по-големи мрежи. Това включва автоматично добавяне или премахване на клиенти (пиъри), обновяване на маршрути и управление на IP адресите.
- Централизирано Управление: Разработване на система за централизирано управление, която да управлява WireGuard инсталациите и маршрутизацията в различните локации. Това може да включва специализиран софтуер или управленски платформи.
- VPN Концентратори: Използване на VPN концентратори в централния офис, които управляват WireGuard връзки от различни местоположения. Това улеснява управлението на връзките и маршрутизацията в голяма мрежа.
Важно е да се отбележи, че внедряването на WireGuard в сложна мрежова среда с динамична маршрутизация може да бъде комплексен проект, който изисква планиране, тестове и подходящо разбиране на мрежовите принципи. Тази задача често включва сътрудничество с мрежови специалисти или консултанти, за да се гарантира, че системата е настроена правилно и отговаря на нуждите на организацията.

Как да конфигурираш WireGuard в MikroTik?
- Обнови RouterOS: Увери се, че твоята MikroTik система е обновена до последната версия.
- Създайте WireGuard интерфейс:
- Отвори WinBox и се свържете с рутера.
- Отиди на „Interfaces“ и изберете „+“, за да добавите нов интерфейс.
- Избери WireGuard.
- Конфигуриране на WireGuard интерфейс:
- Въведи име за интерфейса.
- Генерирай или задай ключове за WireGuard. Ще ви е необходим приватен и публичен ключ.
- Задай прослушвания порт за WireGuard интерфейса.
- Настройте мрежовите параметри:
- Задай IP адрес на WireGuard интерфейса. Това може да бъде част от твоята вътрешна мрежа или отделен адресен диапазон.
- Добавете Peer конфигурация:
- Отиди на WireGuard интерфейса и добави Peer.
- Задай публичния ключ на другата страна (пиъра).
- Задай Allowed IPs, които определят какви IP адреси могат да бъдат достъпвани чрез този пиър.
- Ако е необходимо, задай Endpoint за пиъра (IP адрес и порт).
- Настройте маршрутизацията:
- Ако е необходимо, добави маршрути, за да насочите трафика към WireGuard интерфейса.
- Тествай конфигурацията:
- След като сте завършили конфигурацията, тествайте връзката.
- Проверете дали трафикът се маршрутизира правилно през WireGuard интерфейса.
- Защита и сигурност:
- Увери се, че си настроил правилно Firewall правилата, за да защитите WireGuard интерфейса.
Конфигурация в MikroTik
Конфигурация на WireGuard интерфейс на Рутер1 и peer на Рутер2.

Конфигурация на WireGuard интерфейс на Рутер2 и peer на Рутер1.

Проверка на свързаноста между двата рутера през криптирания тунел.

Рутер 1
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1 private-key="KKa7ycU/555SsRAYKU9OkYjQyrgF3bEMLth1VCnWn1Q="
/interface wireguard peers
add allowed-address=0.0.0.0/0 interface=wireguard1 persistent-keepalive=30s public-key="KjajtNfF+EK0WU9FpTYDZhr2DpB3RM5x9ss4ZTw7xwg="
/ip address
add address=192.168.100.1/30 interface=wireguard1
Рутер 2
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1 private-key="wNmHxOltXcUgRYICGNju6vtjF/40rUa54dvIV0mA+34="
/interface wireguard peers
add allowed-address=0.0.0.0/0 endpoint-address=93.155.130.38 endpoint-port=13231 interface=wireguard1 persistent-keepalive=30s public key="2YIMvTMI8PUTEUwtuyhLnD5F0a6cLeh5C+Zc+ft/VmA="
/ip address
add address=192.168.100.2/30 interface=wireguard1
Маршрути в MikroTik през WireGuard
В този сценарии Рутер1 може да играе VPN сървър защото в Рутер2 не описвам endpoint-address което значи, че спокойно може да се намира зад NAT. За да приемем, че е по пълна картината ако Рутер2 играе ролята на клиент можем да изпълним маршут през Рутер 1 за да прекараме този трафик през тунела, например:
ip route/add dst-address=8.8.8.8 gateway=192.168.100.1
Нека проверим това:

След като първия хоп ни е 192.168.100.1 имаме криптиран трафик през тунела до 8.8.8.8.

Как да конфигурираш WireGuard в Kali Linux?
Първо трябва да станем суперпотребител root.
sudo su
Реално операцията в терминала изглежда така:

След което трябва да инсталираме WireGuard.
apt install wireguard
Да влезем в конфигурационната директория и да променим правата и.
cd /etc/wireguard
umask 077
Да генерираме частен и публичен ключ.
wg genkey | tee privatekey | wg pubkey > publickey
Да създадем конфигурационен файл wg0.conf
vim /etc/wireguard/wg0.conf
Където „PrivateKey =“ е генерирания ключ от командата wg genkey по горе а „PublicKey =“ също но с разликата, че трябва да се постави в peer на отстрешната страна на тунела. Логично по същия начин генерирания публичен ключ на другото устройство в отсрешната страна на тунела се поставя в нашия конфигурационен файл в директивата [peer] с параметъра PublicKey.
[Interface]
PrivateKey = gHU0C65Vf+tJZXPlOhHOKnbhz9sE381WlhjRY8ZMokY=
Address = 192.168.111.102/30
DNS = 1.1.1.1
[Peer]
PublicKey = 4rRY9dmTk0bz/XCnEwEPxNbQdv8uUYG2uziJ8e1/+RI=
Endpoint = 87.246.47.91:55555
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 30
Вдигаме WireGuard с командата:
wg-quick up wg0
И получаваме следния резултат:

Можем да проверим интерфейса с командата wg show

И да проверим преминават ли пакети през криптирания тунел.

Какво прави AllowedIPs в конфигурационния файл на WireGuard?
Параметърът AllowedIPs в конфигурационния файл на WireGuard служи за определяне на трафика, който е разрешен да премине през VPN тунела. Конкретно, той указва кои IP адреси и/или диапазони от IP адреси могат да бъдат достъпвани от даден клиент или да преминават през даден VPN интерфейс.
Когато конфигурирате WireGuard, можете да зададете AllowedIPs за всеки клиент или VPN интерфейс във вашия VPN мрежов сетъп. Например, ако искате клиентът да има достъп само до определени мрежи или хостове през VPN, ще изберете съответните IP адреси или диапазони за AllowedIPs. Това може да включва както IPv4, така и IPv6 адреси.
Например:
- Ако искате клиентът да има достъп до цялата мрежа 10.0.0.0/24, задавате
AllowedIPs = 10.0.0.0/24. - Ако искате клиентът да има достъп само до един специфичен сървър с IP адрес 10.0.0.5, задавате
AllowedIPs = 10.0.0.5/32. - Ако искате целия трафик до глобалната мрежа Internet да преминава през VPN тунела задавате
AllowedIPs = 0.0.0.0/0
Този параметър е особено важен за сигурността и маршрутизацията на трафика във твоята WireGuard VPN мрежа, тъй като контролира къде могат да бъдат изпратени данните през VPN.
Как да конфигурираш WireGuard в Android?
WireGuard е достъпен и за Android устройства чрез официално приложение, което може да бъде изтеглено от Google Play Store. Ето как да настроиш и използваш WireGuard на твоето Android устройство:
Стъпки за Инсталиране и Конфигуриране на WireGuard на Android:
- Инсталиране на Приложението:
- Отиди на Google Play Store на твоето Android устройство.
- Търсете „WireGuard“ и инсталирайте официалното приложение.
- Генериране или Импортиране на Конфигурационен Файл:
- Приложението WireGuard позволява да генерирате нови конфигурационни файлове или да импортирате вече съществуващи.
- Ако имате предоставен конфигурационен файл от твоя VPN доставчик или мрежов администратор, можете директно да го импортирате.
- За генериране на нова конфигурация, трябва да имате вашия собствен WireGuard сървър или да използвате услуга на трета страна.
- Добавяне на Конфигурация в Приложението:
- Отворете приложението WireGuard и натиснете „+“ за да добавите нова конфигурация.
- Избери „Create from scratch“ (за създаване на нова) или „Import from file or archive“ (за импортиране на съществуваща).
- Настройка на Параметрите:
- Ако създавате нова конфигурация, въведете необходимите данни като приватен и публичен ключ, адрес на сървъра, порт и Allowed IPs.
- За импортираните конфигурации, тези данни вече трябва да са предварително зададени.
- Активиране на VPN Връзката:
- След като добавите конфигурацията, може да активирате VPN връзката чрез приложението.
- Просто изберете желаната конфигурация и натиснете „Activate“.
- Проверка на Връзката:
- След активиране на VPN, проверете дали връзката работи коректно.
- Можете да използвате уеб сайтове за проверка на IP адреса, за да видите дали вашият публичен IP адрес е променен според VPN сървъра.
Съвети:
- Увери се, че използваш най-новата версия на приложението за оптимална сигурност и стабилност.
- Винаги следвайте указанията на вашия VPN доставчик или мрежов администратор при конфигуриране на VPN връзката.
- За допълнителна сигурност, редовно проверявайте и обновявайте вашите VPN конфигурации.
WireGuard предлага проста и сигурна VPN връзка за Android устройства, като същевременно осигурява висока производителност и надеждност.


Как да конфигурираш WireGuard в Windows?

Конфигурирането на WireGuard на Windows е сравнително прост процес. Ето основните стъпки, които трябва да следвате:
Стъпки за Инсталиране и Конфигуриране на WireGuard в Windows:
- Инсталиране на WireGuard:
- Посетете официалния уебсайт на WireGuard (wireguard.com) и изтеглете WireGuard за Windows.
- Стартирайте инсталационния файл и следвайте инструкциите за инсталация.
- Генериране или Импортиране на Конфигурация:
- Вече инсталираният WireGuard клиент ще ви позволи да генерирате нови конфигурации или да импортирате съществуващи.
- Ако имате конфигурационен файл от VPN доставчик или мрежов администратор, можете да го импортирате директно.
- Добавяне на Конфигурация:
- Стартирайте WireGuard клиента.
- Натиснете бутона „Add Tunnel“ и изберете „Import tunnel(s) from file“ за да импортирате конфигурационен файл.
- Ако искате да създадете нова конфигурация, изберете „Add empty tunnel“ и въведете необходимите данни, включително приватен ключ, публичен ключ на сървъра, адрес на сървъра, порт и Allowed IPs.
- Активиране на VPN Връзката:
- След като добавите конфигурацията, кликнете върху нея в WireGuard клиента.
- Натиснете бутона „Activate“ за да стартирате VPN връзката.
- Проверка на Връзката:
- След активиране на VPN, проверете дали връзката работи правилно.
- Можете да използвате уебсайтове за проверка на IP адреса, за да се уверите, че вашият публичен IP адрес съответства на този на VPN сървъра.





Съвети и Препоръки:
- Увери се, че използваш актуална версия на WireGuard за най-добра сигурност и производителност.
- Следвайте инструкциите на вашия VPN доставчик или мрежов администратор за специфичните детайли относно конфигурацията.
- За по-добра сигурност, редовно обновявайте конфигурациите на вашия VPN.
- При проблеми, проверете фаеруола и антивирусната програма на вашия компютър, тъй като те могат да блокират VPN връзката.
WireGuard предлага лесен за използване и сигурен начин за създаване на VPN връзки на Windows, като едновременно осигурява висока производителност и надеждност.
Как да конфигурираш WireGuard в OpenWRT?
OpenWRT е популярен проект за алтернативния софтуер за маршрутизатори и оборудване за мрежи, и те включват поддръжка на WireGuard в своята платформа. За да настроите WireGuard на маршрутизатор, работещ с OpenWRT, трябва да инсталирате софтуера на устройството и да настроите настройките според вашите изисквания. Тъй като интерфейсът и процедурите могат да се различават в зависимост от версията на OpenWRT и модела на маршрутизатора, ви препоръчвам да следвате официалната документация на OpenWRT или на сайта на WireGuard за конкретни инструкции и насоки за настройката.




Преносим ли е конфигурационният файл на WireGuard?
Да, конфигурационният файл на WireGuard е преносим между различните операционни системи. Това означава, че един и същ конфигурационен файл може да бъде използван на различни платформи, където е инсталиран WireGuard, като Windows, Linux, macOS, iOS и Android.
Конфигурационният файл обикновено съдържа следните елементи:
- PrivateKey: Вашият личен ключ за WireGuard.
- Address: IP адреса, зададен на VPN интерфейса.
- DNS: DNS сървъри, които да се използват, докато VPN е активен.
- [Peer]: Секция, определяща информация за VPN сървъра (пиъра).
- PublicKey: Публичният ключ на сървъра.
- AllowedIPs: IP диапазоните, които ще се маршрутизират през VPN.
- Endpoint: Адресът и портът на сървъра.
- PersistentKeepalive: Настройка за поддържане на връзката.
[Interface]
PrivateKey = 'частен ключ'
Address = 'вътрешен IP адрес в тунела'
DNS = 'DNS сървър'
[Peer]
PublicKey = 'публичен ключ'
Endpoint = 'IP адрес':'порт'
AllowedIPs = 'разрешени адреси'
PersistentKeepalive = 'мониторинг в секунди'
Този конфигурационен файл обикновено е в прост текстов формат и може да бъде прехвърлян между различните системи. Основното, което трябва да имате предвид при прехвърлянето, е сигурността на вашите ключове. Частният ключ трябва да се съхранява в тайна и да не се предава небрежно между системи.
Заключение
WireGuard е най-простият съвременен VPN протокол за конфигуриране и поддържане. Малкото количество код, модерните криптографски алгоритми и поддръжката на множество платформи (MikroTik, Linux, Android, Windows, OpenWRT) го правят универсален избор — от домашна употреба до свързване на множество офис локации. Конфигурационният файл е един и същ независимо от платформата, което значително улеснява управлението на peer-to-peer VPN мрежи.