WireGuard болашақтың керемет VPNі ме?

WireGuard болашақтың керемет VPNі ме?

VPN енді сақалды жүйе әкімшілерінің кейбір экзотикалық құралы болып табылмайтын уақыт келді. Пайдаланушылардың әртүрлі тапсырмалары бар, бірақ бәрібір VPN қажет.

Ағымдағы VPN шешімдерінің мәселесі - оларды дұрыс конфигурациялау қиын, техникалық қызмет көрсету қымбат және сапасы күмәнді ескі кодқа толы.

Бірнеше жыл бұрын канадалық ақпараттық қауіпсіздік маманы Джейсон А. Доненфельд оған жеткілікті болды деп шешіп, жұмыс істей бастады. WireGuard. WireGuard қазір Linux ядросына қосуға дайындалуда және тіпті мақтауларға ие болды Линус Торвальдс мен АҚШ сенаты.

WireGuard-тың басқа VPN шешімдеріне қарағанда мәлімделген артықшылықтары:

  • Пайдалану оңай.
  • Заманауи криптографияны қолданады: Шуыл протоколының негізі, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF және т.б.
  • Ықшам, оқылатын код, осалдықтарды зерттеу оңай.
  • Жоғары өнімділік.
  • Түсінікті және егжей-тегжейлі спецификация.

Күміс оқ табылды ма? OpenVPN және IPSec файлдарын көму уақыты келді ме? Мен мұнымен айналысуды шештім, сонымен бірге мен де солай істедім жеке VPN серверін автоматты түрде орнатуға арналған сценарий.

Жұмыстың принциптері

Жұмыс істеу принциптерін келесідей сипаттауға болады:

  • WireGuard интерфейсі жасалып, оған жеке кілт пен IP мекенжайы тағайындалады. Басқа құрдастардың параметрлері жүктеледі: олардың ашық кілттері, IP мекенжайлары және т.б.
  • WireGuard интерфейсіне келетін барлық IP пакеттері UDP және инкапсуляцияланған аман-есен жеткізілді басқа құрдастар.
  • Клиенттер сервердің жалпы IP мекенжайын параметрлерде көрсетеді. Сервер клиенттерден дұрыс аутентификацияланған деректер алынған кезде олардың сыртқы мекенжайларын автоматты түрде таниды.
  • Сервер жалпыға ортақ IP мекенжайын жұмысын тоқтатпай өзгерте алады. Сонымен бірге ол қосылған клиенттерге ескерту жібереді және олар конфигурациясын жылдам жаңартады.
  • Маршруттау түсінігі қолданылады Криптокілтті бағыттау. WireGuard серіктестің ашық кілтіне негізделген пакеттерді қабылдайды және жібереді. Сервер дұрыс аутентификацияланған пакеттің шифрын ашқанда, оның src өрісі тексеріледі. Егер ол конфигурацияға сәйкес келсе allowed-ips аутентификацияланған тең, пакетті WireGuard интерфейсі қабылдайды. Шығыс пакетті жіберу кезінде сәйкес процедура орын алады: пакеттің dst өрісі алынады және оның негізінде сәйкес теңдік таңдалады, пакетке өз кілтімен қол қойылады, тең кілтпен шифрланады және қашықтағы соңғы нүктеге жіберіледі. .

WireGuard-тың барлық негізгі логикасы кодтың 4 мыңнан аз жолын алады, ал OpenVPN және IPSec-те жүздеген мың жолдар бар. Заманауи криптографиялық алгоритмдерді қолдау үшін Linux ядросына жаңа криптографиялық API қосу ұсынылады. мырыш. Қазір бұл жақсы идея ма, жоқ па деген пікірталас жүріп жатыр.

өнімділік

Ең жоғары өнімділік артықшылығы (OpenVPN және IPSec-пен салыстырғанда) Linux жүйелерінде байқалады, өйткені WireGuard ядро ​​модулі ретінде іске асырылады. Сонымен қатар, macOS, Android, iOS, FreeBSD және OpenBSD қолдау көрсетеді, бірақ оларда WireGuard барлық келесі өнімділік салдарымен пайдаланушы кеңістігінде жұмыс істейді. Жақын арада Windows қолдауы қосылады деп күтілуде.

Менчмарк нәтижелері ресми сайты:

WireGuard болашақтың керемет VPNі ме?

Менің пайдалану тәжірибем

Мен VPN сарапшысы емеспін. Мен бір кездері OpenVPN-ді қолмен орнатқанмын және бұл өте жалықтырады, мен IPSec қолданбадым. Шешім қабылдау тым көп, аяққа ату өте оңай. Сондықтан мен серверді конфигурациялау үшін әрқашан дайын сценарийлерді қолдандым.

Сонымен, WireGuard, менің көзқарасым бойынша, пайдаланушы үшін өте қолайлы. Барлық төмен деңгейдегі шешімдер спецификацияда қабылданады, сондықтан әдеттегі VPN инфрақұрылымын дайындау процесі бірнеше минутты алады. Конфигурацияда алдау мүмкін емес.

Орнату процесі егжей-тегжейлі сипатталған Ресми веб-сайтта мен тамашаны бөлек атап өткім келеді OpenWRT қолдауы.

Шифрлау кілттері қызметтік бағдарлама арқылы жасалады wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

Содан кейін сервер конфигурациясын жасау керек /etc/wireguard/wg0.conf келесі мазмұндағы:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

және туннельді сценариймен көтеріңіз wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

Оның орнына systemd жүйесі бар жүйелерде оны пайдалануға болады sudo systemctl start [email protected].

Клиенттік құрылғыда конфигурация жасаңыз /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Внешний IP сервера
PersistentKeepalive = 25 

Туннельді дәл осылай көтеріңіз:

sudo wg-quick up /etc/wireguard/wg0.conf

Клиенттер Интернетке қол жеткізе алатындай серверде NAT конфигурациялау ғана қалды, және сіз аяқтадыңыз!

Бұл пайдаланудың қарапайымдылығы мен кодтық базаның ықшамдылығына негізгі тарату функционалдығын жою арқылы қол жеткізілді. Күрделі сертификат жүйесі жоқ және бұл корпоративтік қорқыныш; қысқа шифрлау кілттері SSH кілттері сияқты таратылады. Бірақ бұл мәселе туғызады: WireGuard кейбір қолданыстағы желілерге енгізу оңай болмайды.

Кемшіліктердің арасында WireGuard HTTP проксиі арқылы жұмыс істемейтінін атап өткен жөн, өйткені тасымалдау ретінде тек UDP протоколы қол жетімді. Сұрақ туындайды: хаттаманы бұрмалау мүмкін бе? Әрине, бұл VPN-дің тікелей міндеті емес, бірақ OpenVPN үшін, мысалы, тоталитарлық елдердің тұрғындарына Интернетті толығымен пайдалануға көмектесетін HTTPS ретінде жасырынудың жолдары бар.

қорытындылар

Қорытындылай келе, бұл өте қызықты және перспективалы жоба, сіз оны жеке серверлерде пайдалана аласыз. Пайдасы қандай? Linux жүйелерінде жоғары өнімділік, орнату және қолдаудың қарапайымдылығы, ықшам және оқылатын код базасы. Дегенмен, WireGuard-қа күрделі инфрақұрылымды беруге асығуға әлі ерте, оны Linux ядросына қосуды күту керек.

Менің (және сіздің) уақытыңызды үнемдеу үшін мен әзірледім WireGuard автоматты орнатушысы. Оның көмегімен сіз өзіңізге және достарыңызға бұл туралы ештеңе түсінбестен жеке VPN орнатуға болады.

Ақпарат көзі: www.habr.com

пікір қалдыру