يرمز OVPN-DCO-WAIN إلى "تفريغ قناة OpenVPN Data لنظام التشغيل Windows". إنه برنامج تشغيل Windows الحديث ، والذي يعمل كمحول شبكة افتراضية ويقوم بتنفيذ الوظائف المطلوبة للتعامل مع قناة بيانات OpenVPN. عند استخدام OVPN-DCO-WAIN ، لا يرسل برنامج OPERVPN حركة مرور البيانات ذهابًا وإيابًا بين مساحة المستخدم والكيرنيل (للتشفير ، فك التشفير والتوجيه) ، ولكن يتم إجراء عمليات على حمولة Windows Kernel. يتم تطوير السائق باستخدام الأطر الحديثة - WDF و NetAdapterCX. ولهذا السبب ، من الأسهل قراءة الكود والمقارنة مع برامج تشغيل Miniport الحالية NDIS. من الحكمة ، يؤدي برنامج التشغيل الجديد مقارنة بشكل أفضل بشكل كبير مع Windows6 ، لذلك يجب أن يزيل عنق الزجاجة الذي يعوق أداء OpenVPN على Windows.
OVPN-DCO-WAIN هو برنامج تشغيل افتراضي يبدأ من OpenVPN 2.6.
يمكنك فقط تثبيت أحدث إصدار من OpenVPN 2.6 ، والذي يتضمن برنامج تشغيل موقّع.
بدلاً من ذلك ، يمكنك الحصول على إصدارات من جيثب.
يمكنك استخدام أداة DevCon (متوفرة كجزء من WDK) لتثبيت برنامج التشغيل:
devcon install ovpn-dco.inf ovpn-dco
يشتمل المشروع على أداة سطر أوامر OVPN-DCO-CLI ، والتي تعمل كأسرة اختبار للتطوير ، ومثال عميل مرجعي ومثال على استخدام واجهة برمجة التطبيقات. مع ذلك ، يمكنك إعداد نفق VPN بين مضيفين Windows أو بين Windows ومضيف Linux باستخدام.
لإعداد Windows <-> Tunnel Windows ، في أول مضيف تشغيل:
ovpn-dco-cli.exe udp i4 0.0.0.0 1194 192.168.100.200 1194 10.8.0.2 255.255.255.0 10.8.0.1 data64.key 0
حيث "0.0.0.0 1194" عنوان/منفذ IP المحلي لربط المقبس ، "192.168.100.200 1194" العنوان البعيد/المنفذ ، "10.8.0.2" هو IP محلي VPN.
في تشغيل مضيف Windows الثاني:
ovpn-dco-cli.exe udp i4 0.0.0.0 1194 192.168.100.100 1194 10.8.0.1 255.255.255.0 10.8.0.1 data64.key 1
لاحظ أن IP عن بُعد ، VPN IP واتجاه المفتاح (آخر 0/1 رقم) مختلفان.
لإعداد النفق بين Windows و Linux ، قم بتشغيله على المضيف الثاني (Linux):
# ip link add dev ovpn0 type ovpn-dco
# ip link set ovpn0 up
# ip link set mtu 1428 dev ovpn0
# ip addr add dev ovpn0 10.8.0.1/24
# tests/ovpn-cli ovpn0 new_peer 1194 0 192.168.100.100 1194 10.8.0.2
# tests/ovpn-cli ovpn0 new_key 0 aes 1 tests/data64.key
حيث 192.168.100.150 هو عنوان IP لمضيف Linux ، 192.168.100.100 هو عنوان IP لمضيف Windows.
بعد إنشاء نفق ، يجب أن تكون قادرًا على مضيفات Ping (10.8.0.1 < -> 10.8.0.1) وتشغيل اختبارات IPerf (IPerf3 -S 10.8.0.2 على المضيف الأول ، IPERF3 -C 10.8.0.2 في الثانية ) عبر نفق VPN.
يرجى ملاحظة أن استخدام أداة OVPN-DCO-CLI في الإنتاج فكرة سيئة للغاية ، لأنها لا تقوم بأي مفاوضات مفتاح واستخدام مفتاح ثابت (data64.key) بدلاً من ذلك.
لاستخدام برنامج التشغيل ، يحتاج العميل إلى الحصول على مقبض الملف عن طريق الاتصال CreateFile. يمكن للمرء إما استخدام ارتباط رمزي أو واجهة الجهاز للحصول على مسار الملف. فيما يلي مثال من أداة OVPN-DCO (انظر أدناه):
HANDLE h = CreateFileA("\\.\ovpn-dco", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED, NULL);
بعد الحصول على المقبض ، يستخدم العميل DeviceIoconTrol ومكالمات قراءة/كتابة لإنشاء اتصال وإرسال/استلام حزم التحكم. راجع uapi.h للحصول على قائمة أوامر IOCTL و OVPN-DCO-CLI.CPP حول كيفية استخدامها.
أولاً ، يحتاج العميل إلى تهيئة الأقران باستخدام أمر OVPN_IOCTL_NEW_PEER. يمرر العميل بنية OVPN_NEW_PEER ، التي تحتوي على عنوان/منفذ IP محلي/عن بعد (إما IPv4 أو IPv6) وبروتوكول النقل (TCP أو UDP).
بعد تهيئة الأقران ، مرت العميل خوارزمية التشفير (المدعومة "لا شيء" و "AES-GCM") ، ومفاتيح التشفير ومعرّف الأقران كجزء من بنية OVPN_CRYPTO_DATA باستخدام أمر OVPN_IOCTL_NEW_KEY. وصف OpenVPN Crypto خارج نطاق هذا المستند.
بعد إعداد التشفير ، قد يقوم العميل بتعيين معلمات keepalive (OVPN_SET_PEER struct) للجلسة عبر الأمر OVPN_IOCTL_SET_PEER. يحدد الفاصل الزمني Keepalive عدد المرات التي ترسل فيها حزمة keepalive خاصة في حالة عدم وجود حركة مرور بيانات صادرة. تحدد TimeOut KeepAlive وقت إخطار AssetPace (عن طريق إكمال طلب القراءة بخطأ) في حالة عدم وجود حركة بيانات واردة.
لبدء جلسة VPN ، يرسل العميل أمر OVPN_IOCTL_START_VPN. هذا السائق يشير لبدء محول الشبكة.
بعد بدء جلسة VPN ، يقوم العميل بإعداد محول الشبكة (عنوان IP ، Netmask ، Gateway) والتوجيه.
لإرسال واستقبال حزم قناة التحكم ، يستخدم العميل مكالمات القراءة/الكتابة. يوصى باستخدام IO المتداخلة عن طريق تمرير File_FLAG_OVERLIPTED لإنشاء مكالمة FILL والهيكل المتداخل لقراءة/مكالمات الكتابة. يستخدم OVPN-DCO-Cli ASIO ، الذي يرفع تلك التفاصيل منخفضة المستوى.
يتم استخدام برنامج التشغيل OVPN-DCO بشكل افتراضي OpenVPN بدءًا من 2.6 إصدار.
يدعم OpenVPN3 أيضًا OVPN-DCO-WAIN في أحدث فرع رئيسي.
يتم تنفيذ قطع الأشجار عبر API Tracelogging ، والذي يعتمد على ETW. لرؤية سجلات على جهاز مستهدف:
traceview.exe
كمسؤول4970F9cf-2c0c-4f11-b1cc-e3a1e9958833
> OKلجمع سجلات التحليل:
wpr -start ovpn-dco-win.wprp
(ملف WPRP في شجرة مصدر السائق)wpr -stop ovpn-dco-win.etl
يمكن فتح ملف ETL ، على سبيل المثال ، بواسطة Windows Performance Analyzer ( wpa.exe
).
للاطلاع على سجلات في Debbuger (Windbg) ، استخدم tracelog.exe
في موجه أوامر المسؤول:
tracelog -start MyTrace -guid #4970F9cf-2c0c-4f11-b1cc-e3a1e9958833 -rt -kd
إذا واجهت مشكلات التمهيد ، فقد ترغب في تمكين جلسة Autologger. قم بتشغيل ملف ovpn-dco-autologger.reg
، والذي سيقوم بإنشاء مفاتيح التسجيل الوهمية ، ثم إعادة التشغيل.
سيتم تخزين سجلات برنامج التشغيل في %SystemRoot%System32LogFilesWMIovpn-dco.etl
.
إن عمليات الإصدار من OVPN-DCO-WAIN قابلة للتكرار ، مما يعني أنه عند استخدام نفس بيئة البناء ، يجب أن تحصل على نفس OVPN-DCO. وبهذه الطريقة ، يمكنك التحقق من أن السائق الذي تم إصداره في شكل ثنائي يتم تجميعه بالفعل من رمز المصدر في هذا المستودع. هذا مفيد لأن متطلبات توقيع سائق Microsoft تجعل من الصعب تشغيل برامج تشغيل مجهز ذاتيًا.
تم تصميم برامج التشغيل التي تم إصدارها باستخدام Windows 11 EWDK (مجموعة برنامج تشغيل Windows Enterprise). على الرغم من الاسم ، فإنه يعمل أيضًا على Windows 10. يمكنك تنزيله هنا: https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
إذا كنت قد حصلت على ملف OVPN-dco.sys ، فيمكنك التحقق منه على النحو التالي:
signtool remove /s ovpn-dco.sys
LaunchBuildEnv.cmd
.msbuild /p:platform=<arch> /p:configuration=release /p:signmode=off ovpn-dco-win.vcxproj /t:Build
Where <arch>
هو Win32
أو x64
أو ARM
أو ARM64
.<arch>/Release/ovpn-dco.sys
والملف من الخطوة 1 لديهم نفس تجزئة SHA256.اتصل بـ Lev Stipakov [email protected] (Lev__ على #OpenVPN-Devel)