WireGuard به هسته لینوکس "می آید" - چرا؟

در پایان ماه جولای، توسعه دهندگان تونل WireGuard VPN پیشنهاد کردند مجموعه پچ، که نرم افزار تونل زنی VPN آنها را به بخشی از هسته لینوکس تبدیل می کند. با این حال، تاریخ دقیق اجرای "ایده" ناشناخته باقی مانده است. در زیر برش، در مورد این ابزار با جزئیات بیشتر صحبت خواهیم کرد.

WireGuard به هسته لینوکس "می آید" - چرا؟
/ عکس تامباکو جگوار CC

مختصری در مورد پروژه

WireGuard یک تونل VPN نسل بعدی است که توسط Jason A. Donenfeld، مدیر عامل Edge Security ایجاد شده است. این پروژه به عنوان توسعه یافته است ساده شده و یک جایگزین سریع برای OpenVPN و IPsec. نسخه اول محصول فقط 4 هزار خط کد داشت. برای مقایسه، OpenVPN حدود 120 هزار خط دارد و IPSec - 420 هزار.

بر طبق توسعه دهندگان، پیکربندی WireGuard آسان است و امنیت پروتکل به دست می آید از طریق الگوریتم های رمزنگاری اثبات شده. هنگام تغییر شبکه: Wi-Fi، LTE یا Ethernet باید هر بار دوباره به سرور VPN متصل شوند. سرورهای WireGuard اتصال را قطع نمی کنند، حتی اگر کاربر یک آدرس IP جدید دریافت کرده باشد.

با وجود این واقعیت که WireGuard در ابتدا برای هسته لینوکس طراحی شده بود، توسعه دهندگان مراقبت شده است و در مورد نسخه قابل حمل این ابزار برای دستگاه های اندرویدی. این برنامه هنوز به طور کامل توسعه نیافته است، اما اکنون می توانید آن را امتحان کنید. برای این شما نیاز دارید یکی از آزمایش کننده ها شوید.

به طور کلی، WireGuard بسیار محبوب است و حتی بوده است اجرا شد چندین ارائه دهنده VPN، مانند Mullvad و AzireVPN. به صورت آنلاین منتشر شد تعداد زیادی راهنماهای راه اندازی این تصمیم. مثلا، راهنما وجود دارد، که توسط کاربران ایجاد شده اند و راهنماهایی وجود دارد، تهیه شده توسط نویسندگان پروژه.

فنی

В اسناد رسمی (ص 18) اشاره شده است که توان عملیاتی WireGuard چهار برابر بیشتر از OpenVPN است: به ترتیب 1011 مگابیت بر ثانیه در مقابل 258 مگابیت بر ثانیه. WireGuard همچنین از راه حل استاندارد برای IPsec لینوکس جلوتر است - 881 مگابیت بر ثانیه دارد. همچنین در سهولت نصب از آن پیشی می گیرد.

پس از رد و بدل شدن کلیدها (اتصال VPN بسیار شبیه به SSH اولیه شده است) و اتصال برقرار شد، WireGuard به تنهایی تمام وظایف دیگر را انجام می دهد: نیازی به نگرانی در مورد مسیریابی، کنترل وضعیت و غیره نیست. تلاش های اضافی برای پیکربندی فقط انجام خواهد شد. اگر می خواهید از رمزگذاری متقارن استفاده کنید لازم است.

WireGuard به هسته لینوکس "می آید" - چرا؟
/ عکس آندرس هوجبیرگ CC

برای نصب، به توزیعی با هسته لینوکس قدیمی‌تر از 4.1 نیاز دارید. می توان آن را در مخازن توزیع های اصلی لینوکس یافت.

$ sudo add-apt-repository ppa:hda-me/wireguard
$ sudo apt update
$ sudo apt install wireguard-dkms wireguard-tools

همانطور که ویراستاران xakep.ru خاطرنشان می کنند، خود مونتاژ از متون منبع نیز آسان است. کافی است رابط را باز کنید و کلیدهای عمومی و خصوصی تولید کنید:

$ sudo ip link add dev wg0 type wireguard
$ wg genkey | tee privatekey | wg pubkey > publickey

WireGuard استفاده نمی کند رابط برای کار با یک ارائه دهنده رمزنگاری CryptoAPI. در عوض، از رمز جریان استفاده می شود چاچا20، رمزنگاری درج تقلیدی Poly1305 و توابع هش رمزنگاری اختصاصی.

کلید مخفی با استفاده از پروتکل دیفی-هلمن بر اساس منحنی بیضوی منحنی 25519. هنگام هش استفاده می کنند توابع هش بلک 2 и SipHash. با توجه به قالب مهر زمان TAI64N در نتیجه پروتکل بسته هایی را با مقدار زمان کمتری دور می اندازد جلوگیری از DoS- и تکرار حملات.

در این مورد، WireGuard از تابع ioctl برای کنترل I/O (که قبلا استفاده می شد) استفاده می کند نت لینک) که کد را تمیزتر و ساده تر می کند. شما می توانید این را با نگاه کردن به آن تأیید کنید کد پیکربندی.

برنامه های توسعه دهنده

در حال حاضر، WireGuard یک ماژول هسته خارج از درخت است. اما نویسنده پروژه جیسون دوننفلد است می گوید، که زمان اجرای کامل در هسته لینوکس فرا رسیده است. زیرا ساده تر و قابل اعتمادتر از راه حل های دیگر است. جیسون در این زمینه پشتیبانی می کند حتی خود لینوس توروالدز نیز کد WireGuard را "اثر هنری" نامید.

اما هیچ کس در مورد تاریخ های دقیق برای معرفی WireGuard به هسته صحبت نمی کند. و به ندرت این با انتشار هسته لینوکس آگوست 4.18 اتفاق می افتد. با این حال، این احتمال وجود دارد که در آینده بسیار نزدیک این اتفاق بیفتد: در نسخه 4.19 یا 5.0.

هنگامی که WireGuard به هسته اضافه می شود، توسعه دهندگان می خواهم برنامه را برای دستگاه های اندروید نهایی کنید و شروع به نوشتن یک برنامه برای iOS کنید. همچنین برنامه‌هایی برای تکمیل پیاده‌سازی در Go and Rust و پورت آنها به macOS، Windows و BSD وجود دارد. همچنین برنامه ریزی شده است که WireGuard را برای "سیستم های عجیب و غریب" بیشتر پیاده سازی کند: DPDK, FPGA، و همچنین بسیاری از چیزهای جالب دیگر. همه آنها در فهرست شده اند لیست برای انجام کار نویسندگان پروژه

PS چند مقاله دیگر از وبلاگ شرکت ما:

جهت اصلی فعالیت ما ارائه خدمات ابری است:

زیرساخت مجازی (IaaS) | میزبانی PCI DSS | ابر FZ-152 | میزبانی SAP | ذخیره سازی مجازی | رمزگذاری داده ها در فضای ابری | فضای ذخیره ابری

منبع: www.habr.com

اضافه کردن نظر