Съдържание
Сравнение на 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 = 'мониторинг в секунди'
Този конфигурационен файл обикновено е в прост текстов формат и може да бъде прехвърлян между различните системи. Основното, което трябва да имате предвид при прехвърлянето, е сигурността на вашите ключове. Частният ключ трябва да се съхранява в тайна и да не се предава небрежно между системи.
Блестяща статия, като по учебник, с реални примери и красиви скрийншоти. БЛАГОДАРЯ ВИ !!!
С тия ключове и сертификати все ви джаса параноята, всеки вече си измисля негови си ВиПиЕни кой от кого по завъртян … то интернет не остана ве братче, всичко е VPN
Много добре е обяснено всичко, само малко са ми дребни снимките на Микротика но е супер всичко.
Много професионално написана статия, вече почти няма такива, обикновенно са 50-60 реда на лош Индо-Английски с прикачено клипче на мякащ индиец. Ползвам WireGuard мисля вече втора година – инсталиран от администратор в нашата фирма, чудех се какво е това WireGuard и защо ни мъчат с него, какво му беше на OpenVPN. Сега с удоволствие допълних знанията си. При така сбитата и подредена техническа информация вече съм наясно, че нашите “админи” си знаят работата а си мислех, че си клатят краката по цял ден и не знаят на кой свят се намират (те били професионалисти) 🙂
Аз като придобил вече малко опит да кажа няколко неща основно за мобилните устройства (лаптопи, телефони, таблети). За разлика от всички други VPN платформи, WireGuard не изтощава толкова бързо живота на батерията, освен това има по-добър роуминг заради UDP протокола, както и по-бързо установяване на връзка.
Изглежда че нещата вървят доста добре в рамките на проекта WireGuard, защо разработчиците поеха ангажимента да прехвърлят част от кода в ядрото на Linux а не като отделен API е загадка за мен. Явно е, че му чертаят бъдеще. Простотата е силен аргумент но да не мога да си избера метода на криптиране не ме кефи.
Ако добре съм разбрал схемата в Микротик е генерирания публичен ключ на рутер1 се поставя в рутер2 на таба peer и обратното генерирания публичен ключ от Рутер2 се поставя в Рутер1 в таба peer 😛
Ха, много добро хау-ту 🙂 Съдържанието е много професионално, събирам смелост за миграция. Може ли някой да гарантира “перформънса” пред OpenVPN, в моя сценарии има случаи на прехвърляне на големи файлове и е мъка голяма. Уж, екселкси – мекселски таблици и все и е бавно, като погледна цели директории с какво ли не копират от офисите.
Аз гарантирам за 20Mbits OpenVPN срещу над 100Mbits за WireGuard което е може пи пет пъти по висока скорост но не мисля, че това е големия плюс. Много по лесен е за конфигурация и при мен поне по бързо се свързва и преминава през всякакви NAT-ве и тесни места в Интернет !!!
ПОНЕЖЕ ПОСТОННО МЕ ПИТАТ:
Срокът на валидност на ключовете на WireGuard зависи от начина, по който са конфигурирани. В WireGuard, обикновено ключовете се генерират статично и не изтичат автоматично след определен период от време, за разлика от някои други VPN технологии, които използват временни или сесийни ключове.
Ако сте настроили WireGuard самостоятелно или чрез VPN доставчик, който използва WireGuard, трябва да проверите конкретната конфигурация или политиката на доставчика за управление на ключовете. Някои организации или индивиди могат да изберат да ротират ключовете си редовно за подобряване на сигурността, но това не е част от стандартната функционалност на WireGuard.
А имаш ли обяснение защо при набит частен ключ:
“1234567890123456789012345678901234567890123=” всъщност се записва:
“0G34567890123456789012345678901234567890120=”
😉
@INN , предполагам си с прозоречната операционна система 🙂
Добре са описани нещата като за начало, въпреки това то си не стига само с това обяснение, трябва изначало да си наясно с VPN-те, аз само на Android телефони ползвам WireGuard и за едно съм много доволен, пренасянето на друг телефон, супер лесно е – само едно .zip-че 🙂