Все повече хора използват собствена VPN, вместо да разчитат на платени, готови услуги: това е по-евтино, по-добро за поверителност и ви дава пълен контрол над сървъра. Една от най-ефективните опции за региони с агресивно блокиране на мрежата е AmneziaWG, протокол, разработен от проекта Amnezia на базата на WireGuard.
Класическият WireGuard е бърз и надежден, но има фиксирана структура на пакетите и предвидимо ръкостискане, което DPI (Deep Packet Inspection) системите могат надеждно да отпечатат и блокират. AmneziaWG решава това: добавя ненужни пакети към обикновената WireGuard връзка, рандомизира заглавките и променя размера на полетата за ръкостискане — така характерният подпис на WireGuard изчезва и трафикът вече не се откроява от обикновения UDP трафик.
Вече използвате класически тунел и се чудите дали си струва да смените? Сравнете това с обикновена OpenVPN/PPTP настройка в Настройка на VPN сървър на Linux: PPTP или OpenVPN? или с обикновен WireGuard (без обфускация) в Как да настроите Wireguard VPN на вашия сървър.
Това ръководство настройва сървър AmneziaWG ръчно, без Docker или уеб панел — възможно най-малкият размер на самия VPS, конфигуриран изцяло от командния ред. Това е най-лекият вариант и работи добре на бюджетен VPS, тъй като не се нуждае от графичен потребителски интерфейс, база данни и обратен прокси. Примерният сървър по-долу използва заместващ IP адрес — заменете го с адреса на вашия собствен VPS, където и да се появи.
Какво ви е необходимо: VPS с Ubuntu 22.04/24.04 или Debian 11/12, root достъп и IP адрес на вашия VPS. Не е необходимо име на домейн — AmneziaWG не използва сертификати, така че няма нищо за подновяване и нищо, което DPI да маркира като TLS ръкостискане.
Все още нямате сървър? Вижте как да поръчате сървър
Свързване със сървъра
Windows (PuTTY)
Отворете PuTTY, въведете IP адреса на вашия VPS в полето Host Name (Име на хост), задайте порт на 22 и влезте като root, използвайки паролата, която вашият VPS доставчик ви е изпратил по имейл.
IP адрес на сървъра: вашият IP адрес
влезте като: root
Парола: вашата парола
1. Отворете PuTTY, въведете IP адреса на вашия VPS в полето „Име на хост“.
2. Задайте порта на 22.
3. Влезте като root.
4. Използвайки паролата, която вашият VPS доставчик ви е изпратил по имейл.
Резултатът трябва да бъде както следва:
За подробно ръководство за свързване чрез PuTTY/SSH вижте Как да се свържете към Linux сървър чрез SSH
Linux / macOS (терминал)
ssh root@YOUR_SERVER_IP
Всички команди по-долу се изпълняват на сървъра, в същата SSH сесия — която обхваща раздели от 2 до 5, плюс проверките от страна на сървъра в раздел 9. Раздели 6–8 (инсталиране и конфигуриране на VPN клиента) се изпълняват на вашето собствено устройство с Windows/macOS/Linux, тъй като това е устройството, на което VPN трябва да работи; всеки от тези раздели изрично посочва кои линии, ако има такива, все още докосват сървъра.
Подготовка на сървъра
Актуализирайте системата
Преди да инсталирате каквото и да е, обновете списъка с пакети и актуализирайте инсталираните пакети:
apt update -y && apt upgrade -y
Ако това надгражда ядрото, рестартирайте компютъра, преди да изградите модула на ядрото AmneziaWG в Раздел 3, в противен случай DKMS може да изгради с грешни заглавки на ядрото и модулът няма да се зареди. (За опресняване на apt и как работят мениджърите на пакети в Linux, вижте Мениджъри на пакети в Linux .) Проверете с:
cat /var/run/reboot-required
Активиране на пренасочване на IP
Тази настройка позволява на сървъра да препраща пакетите на клиентите към интернет - без нея тунелът ще се появи, но трафикът няма да преминава през него.
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf
sysctl --system
Първата команда създава специален конфигурационен файл; втората го прилага без рестартиране на сървъра.
Конфигуриране на защитната стена (UFW)
За повече информация относно правилата за UFW вижте „ Конфигуриране на защитна стена в Linux“.
Отворете двата порта, от които се нуждаете: 22/tcp за SSH (пропуснете това правило и рискувате да загубите достъп до сървъра) и 42666/udp, портът, на който AmneziaWG ще слуша.
apt install ufw -y
ufw allow 22/tcp
ufw allow 42666/udp
ufw --force enable
ufw status
И двете правила трябва да се показват като ALLOW в изхода за състоянието на ufw.
Инсталиране на AmneziaWG
Debian не поддържа директно PPA-та в стил Ubuntu, така че хранилището трябва да се добави ръчно, а не с add-apt-repository. Това работи по същия начин в Ubuntu.
Добавете хранилището ръчно
echo "deb [arch=amd64] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
Добавете GPG ключ за подписване
Използвайте файл с ключове Dearmored, вместо остарялата команда apt-key, и вземете истинския ключ за подписване на PPA (пръстов отпечатък 75C9DD72C799870E310542E24166F2C257290828):
apt install -y gnupg2
gpg --keyserver keyserver.ubuntu.com --recv-keys 57290828
gpg --export 57290828 | tee /usr/share/keyrings/amnezia.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/amnezia.gpg] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
Актуализиране и инсталиране
apt update
apt install -y amneziawg
Проверете заредения модул
modprobe amneziawg
lsmod | grep amnezia
Генериране на конфигурация на сървър и клиент
Инсталиране на помощни програми
Инсталирайте зависимостта qrcode, след което създайте специална работна директория и изтеглете скрипта community config-generator в нея:
apt install -y python3-qrcode
mkdir -p ~/awg && cd ~/awg
wget -O awgcfg.py \
https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py
Ако python3-qrcode не е наличен в хранилищата на вашата дистрибуция, използвайте pip3 install qrcode --break-system-packages (флагът е задължителен в Debian 12+/Ubuntu 24.04, които блокират неуправляваните инсталации на pip по подразбиране). Не стартирайте и двете инсталации — изберете една.
Генериране на конфигурацията на сървъра
Създайте /etc/amnezia/amneziawg/awg0.conf. Можете да оставите вътрешната подмрежа и UDP порта на тунела по подразбиране или да зададете свои собствени:
python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf \
-i 10.10.8.1/24 -p 42666
Флагът -i задава вътрешния мрежов адрес и маска на тунела; -p задава UDP порта на сървъра (същият, който е отворен в стъпка 2.3).
Създаване на шаблона за конфигурация на клиента
python3 awgcfg.py --create
Това запазва шаблон в същата папка, от която се изграждат отделните клиентски конфигурации — той вече включва публичния ключ на сървъра, неговия IP адрес и параметрите за обфускация (Jc, Jmin, Jmax, S1, S2, H1–H4), които отличават AmneziaWG от обикновения WireGuard.
Добавяне на клиенти
Създайте по един запис за всяко устройство — името може да бъде всяко, например името на устройството:
python3 awgcfg.py -a "laptop"
python3 awgcfg.py -a "phone"
Генериране на клиентски файлове и QR кодове
python3 awgcfg.py -c -q
Папката ~/awg вече ще съдържа файлове като laptop.conf и phone.conf, както и съответстващи PNG QR кодове, които можете да сканирате директно в мобилно приложение.
Папката ~/awg вече ще съдържа файлове като laptop.conf и phone.conf, както и съответстващи PNG QR кодове, които можете да сканирате директно в мобилно приложение.
Стартиране на услугата и активиране на автоматичното стартиране
Отворете интерфейса awg0 и го активирайте да се стартира автоматично при рестартиране:
systemctl enable --now awg-quick@awg0
systemctl restart [email protected]
systemctl status [email protected]
Състоянието трябва да показва „активен“ (излязъл), като устройството е активирано при зареждане. Ако конзолата изглежда „зависва“, показвайки лог файлове, натиснете Q, за да излезете.
Проверете списъка с активни пиъри и трафика на пиър с:
awg show
Свързване от Windows
Всичко в този раздел се случва на вашия компютър с Windows, а не през SSH — VPN клиентът трябва да бъде инсталиран на устройството, което действително ще използва тунела. Единствената стъпка, която засяга сървъра, е изтеглянето на scp в 6.2 и дори тази команда се въвежда на вашия компютър, изтегляйки файл, който сървърът вече е генерирал в Раздел 4.
Инсталирайте клиента
AmneziaWG има специално приложение за Windows — интерфейсът му е подобен на стандартния клиент на WireGuard, но разбира параметрите за обфускация. Изтеглете инсталатора от официалното хранилище на проекта:
https://github.com/amnezia-vpn/amneziawg-windows-client/releases
Връзката по-горе е страницата с издания на поддържания клиент за Windows — изтеглете най-новия .msi/.exe ресурс оттам. Това е страница, която да отворите в браузъра си, а не команда, която да поставите в терминал.
Стартирайте инсталатора и преминете през стъпките на съветника за настройка; настройките по подразбиране не е необходимо да се променят.
Импортиране на конфигурацията
Копирайте конфигурационния файл на клиента от сървъра на вашия компютър — най-лесният начин е scp, стартирайте го в PowerShell на вашия компютър, а не на сървъра:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
В приложението AmneziaWG щракнете върху „Импортиране на тунели от файл“, изберете laptop.conf и включете превключвателя до новия тунел.
Свързване от macOS
Съществуват две поддържани опции:
- AmneziaWG (Mac App Store): лек клиент, работи на macOS 12 и по-нови версии. Потърсете „AmneziaWG“ в App Store, инсталирайте го, след което използвайте „Импортиране на тунели от файл“ и изберете вашия .conf файл — същият работен процес като клиента за Windows.
- AmneziaVPN (пълно приложение, macOS 14+): изтеглете .pkg файла от github.com/amnezia-vpn/amnezia-client/releases/latest, ако предпочитате да използвате пълнофункционалното приложение Amnezia вместо лекия клиент, достъпен само за AmneziaWG.
Първо копирайте конфигурацията на клиента, ако е необходимо, както в стъпка 6.2:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
Свързване от Linux
На настолен компютър или лаптоп с Linux имате две възможности:
- GUI: инсталирайте пълния десктоп клиент на AmneziaVPN от github.com/amnezia-vpn/amnezia-client/releases, след което импортирайте .conf файла по същия начин, както в Windows/macOS.
- CLI, използвайки същите инструменти amneziawg, използвани на сървъра (awg / awg-quick):
apt install -y amneziawg
cp laptop.conf /etc/amnezia/amneziawg/awg0.conf
awg-quick up awg0
Изпълнете този код, за да прекъснете връзката.
awg-quick down awg0
За да се стартира тунелът автоматично при влизане в системата, активирайте го като услуга:
systemctl enable --now awg-quick@awg0
Проверка на връзката
След като тунелът е активен от раздел 6, 7 или 8, върнете се на вашето устройство (не на SSH сесията) и отворете всяка програма за проверка „какъв е моят IP адрес“ в браузър — показаният адрес трябва да съвпада с IP адреса на вашия VPS. За да проверите от SSH сесията, изпълнете awg show на сървъра и потвърдете, че партньорската връзка на клиента показва скорошно ръкостискане и ненулев трафик.
справка:
|
Област |
Стойност |
|
Адрес |
ВАШИЯТ_IP_НА_ТУНЕЛА (адресът на клиента в тунела, например 10.10.8.2/32 — задава се автоматично при добавяне на клиента в стъпка 4.4) |
|
Endpoint |
ВАШИЯТ_IP_АДРЕС_НА_СЪРВЪРА:42666 (Външният IP адрес на сървъра и UDP портът, към който се свързва клиентът.) |
|
DNS |
8.8.8.8 |
|
Jc / Jmin / Jmax |
брой и размер на „нежелани“ пакети, изпратени преди ръкостискането — може да се различава между сървъра и клиента, без да се прекъсва връзката |
|
S1 / S2 |
размерът на полетата за допълване при ръкостискане — трябва да съвпада байт по байт между сървъра и всеки клиент |
|
H1 – H4 |
заглавките от тип пакети, които маскират протокола като обикновен трафик — също трябва да съвпадат точно и да са уникални един от друг |
Само S1/S2 и H1–H4 трябва да са идентични в двата края на тунела; Jc, Jmin и Jmax са чисто и просто за това как всяка страна добавя собствен изходящ нежелан трафик, така че стойностите на клиента и сървъра могат легитимно да се различават, както е в горния пример.
Заключение
Следването на това ръководство оставя вашия VPS да работи със собствен AmneziaWG сървър: протокол, съвместим с WireGuard, с обфускация на трафика, която е значително по-трудна за DPI системите да различат от обикновения UDP трафик, отколкото обикновения WireGuard. Услугата работи като системна единица awg-quick@awg0 и оцелява след рестартиране на сървъра без никакви действия от ваша страна.
Получените .conf файлове и QR кодове в ~/awg работят не само с клиента за Windows, но могат да бъдат импортирани и в приложенията AmneziaWG или Amnezia за Android, iOS, macOS и Linux, както и в рутери Keenetic и OpenWrt.
Добавяйте нови клиенти по всяко време, като повтаряте стъпки 4.4–4.5 (python3 awgcfg.py -a "name", след това awgcfg.py -c -q) и рестартирате интерфейса със systemctl restart [email protected].
Няколко навика, които си струва да се спазват, след като сървърът е стартиран:
- Поддържайте системата актуализирана. Периодично изпълнявайте отново apt update -y && apt upgrade -y и рестартирайте след актуализации на ядрото, за да може DKMS да преизгради модула amneziawg спрямо новото ядро.
- Направете резервно копие на ~/awg. Той съдържа частния ключ на всеки клиент и собствената двойка ключове на сървъра в awg0.conf; загубата му означава регенериране на конфигурациите за всяко устройство.
- Незабавно отменете загубените устройства. Премахнете съответния блок [Peer] от /etc/amnezia/amneziawg/awg0.conf и изпълнете systemctl restart. [имейл защитен].
Ако връзката не се осъществи, проверете по ред:
- състоянието на услугата (systemctl status [имейл защитен])
- правилата на защитната стена (състояние на ufw — порт 42666/udp трябва да е отворен)
- състоянието на DKMS/модула, ако интерфейсът дори не стартира (dkms status, lsmod | grep amnezia)
- списъкът с активни пиъри на сървъра (awg show)
- че конфигурацията на клиента сочи към правилния IP адрес на външен сървър
Сравнявате AmneziaWG с други опции, преди да се ангажирате? Вижте Настройка на VPN сървър на Linux: PPTP или OpenVPN? и Как да настроите Wireguard VPN на вашия сървър . Ако имате нужда само от обикновен прокси, а не от пълен VPN тунел, конфигурацията на 3proxy на CentOS/ArchLinux е по-лека алтернатива. За общо втвърдяване на сървъра, след като VPN е активен, вижте Потребители на Linux: Управление и разрешения.