.\" Man page generated from reStructuredText .\" by the Docutils 0.23 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "openvpn" "8" "" "" "System Manager's Manual" .SH "نام (NAME)" openvpn \- دیمن تونل امن IP و شبکه خصوصی مجازی (VPN) .SH "خلاصه دستور (SYNOPSIS)" .nf \fBopenvpn\fP [ options ... ] \fBopenvpn\fP \fB\-\-help\fP .fi .sp .SH "مقدمه (INTRODUCTION)" .sp برنامه OpenVPN یک دیمن VPN متن‌باز اثر James Yonan است. از آنجا که OpenVPN تلاش می‌کند یک ابزار فراگیر VPN با انعطاف‌پذیری بسیار بالا باشد، گزینه‌های فراوانی در این صفحه راهنما وجود دارد. اگر در استفاده از OpenVPN تازه‌کار هستید، شاید بهتر باشد مستقیماً به بخش مثال‌ها بروید تا نحوه ساخت VPNهای ساده در خط فرمان را بدون نیاز به فایل پیکربندی مشاهده کنید. .sp همچنین توجه داشته باشید که مستندات و مثال‌های بیشتری در وب‌سایت OpenVPN وجود دارد: \% .sp و اگر مایلید نسخه کوتاه‌تری از این راهنما را ببینید، پیام نحوه استفاده openvpn را بررسی کنید که با اجرای \fBopenvpn\fP بدون هیچ پارامتری قابل مشاهده است. .SH "توضیحات (DESCRIPTION)" .sp برنامه OpenVPN یک دیمن VPN قدرتمند و بسیار منعطف است. OpenVPN از امنیت SSL/TLS، پل‌زدن اترنت (ethernet bridging)، انتقال تونل TCP یا UDP از طریق پروکسی‌ها یا NAT، پشتیبانی از آدرس‌های IP پویا و DHCP، مقیاس‌پذیری برای صدها یا هزاران کاربر، و سازگاری با اکثر پلتفرم‌های اصلی سیستم‌عامل پشتیبانی می‌کند. .sp برنامه OpenVPN وابستگی نزدیکی به کتابخانه OpenSSL دارد و بیشتر قابلیت‌های رمزنگاری خود را از آن می‌گیرد. .sp برنامه OpenVPN از رمزنگاری سنتی با استفاده از کلید مخفی از پیش به‌اشتراک‌گذاشته‌شده \fB(حالت Static Key)\fP یا امنیت کلید عمومی \fB(حالت SSL/TLS)\fP با استفاده از گواهی‌های کلاینت و سرور پشتیبانی می‌کند. OpenVPN همچنین از تونل‌های رمزنگاری‌نشده TCP/UDP پشتیبانی می‌کند. .sp برنامه OpenVPN برای کار با رابط شبکه مجازی \fBTUN/TAP\fP که روی بیشتر پلتفرم‌ها وجود دارد طراحی شده است. .sp در مجموع، OpenVPN قصد دارد بسیاری از ویژگی‌های کلیدی IPSec را همراه با ردپای نسبتاً سبکی ارائه دهد. .SH "گزینه‌ها (OPTIONS)" .sp برنامه OpenVPN اجازه می‌دهد هر گزینه‌ای چه در خط فرمان و چه در یک فایل پیکربندی قرار گیرد. اگرچه تمام گزینه‌های خط فرمان با یک خط‌تیره دوگانه آغازین (\(dq\-\-\(dq) شروع می‌شوند، اما این پیشوند هنگام قرار گرفتن گزینه در فایل پیکربندی می‌تواند حذف شود. .SS "گزینه‌های عمومی (Generic Options)" .sp این بخش گزینه‌های عمومی را پوشش می‌دهد که بدون در نظر گرفتن حالت پیکربندی OpenVPN در دسترس هستند. .INDENT 0.0 .TP .B \-\-help نمایش گزینه‌ها. .TP .B \-\-auth\-nocache نام‌های کاربری/گذرواژه‌های \fB\-\-askpass\fP یا \fB\-\-auth\-user\-pass\fP را در حافظه مجازی کش نکنید. .sp در صورت تعیین شدن، این دستورالعمل باعث می‌شود OpenVPN بلافاصله ورودی‌های نام‌کاربری/گذرواژه را پس از استفاده فراموش کند. در نتیجه، هر زمان که OpenVPN به نام‌کاربری/گذرواژه نیاز داشته باشد، ورودی را از stdin درخواست می‌کند که ممکن است چندین بار در طول مدت نشست OpenVPN اتفاق بیفتد. .sp هنگام استفاده از \fB\-\-auth\-nocache\fP در ترکیب با یک فایل کاربر/گذرواژه و \fB\-\-chroot\fP یا \fB\-\-daemon\fP، حتماً از یک مسیر مطلق استفاده کنید. .TP .BI \-\-cd \ dir تغییر دایرکتوری به \fBdir\fP پیش از خواندن هرگونه فایل مانند فایل‌های پیکربندی، فایل‌های کلید، اسکریپت‌ها و غیره. \fBdir\fP باید یک مسیر مطلق همراه با \(dq/\(dq در ابتدا و بدون هرگونه ارجاع به دایرکتوری فعلی مانند \fB\&.\fP یا \fB\&..\fP\& باشد. .sp این گزینه زمانی مفید است که OpenVPN را در حالت \fB\-\-daemon\fP اجرا می‌کنید و می‌خواهید تمام فایل‌های کنترلی OpenVPN خود را در یک مکان تجمیع نمایید. .TP .BI \-\-chroot \ dir اجرای chroot به \fBdir\fP پس از مقداردهی اولیه. گزینه \fB\-\-chroot\fP اساساً \fBdir\fP را به عنوان ریشه درخت دایرکتوری (/) بازتعریف می‌کند. بنابراین OpenVPN قادر نخواهد بود به هیچ فایلی خارج از این درخت دسترسی پیدا کند. این امر از دیدگاه امنیتی می‌تواند مطلوب باشد. .sp از آنجا که عملیات chroot تا پس از مقداردهی اولیه به تعویق می‌افتد، بیشتر گزینه‌های OpenVPN که به فایل‌ها ارجاع می‌دهند در بستر پیش از chroot عمل خواهند کرد. .sp در بسیاری از موارد، پارامتر \fBdir\fP می‌تواند به یک دایرکتوری خالی اشاره کند، با این حال ممکن است هنگام اجرای اسکریپت‌ها یا راه‌اندازی‌های مجدد پس از عملیات chroot پیچیدگی‌هایی ایجاد شود. .sp نکته: کتابخانه SSL احتمالاً نیاز دارد که \fB/dev/urandom\fP در داخل دایرکتوری chroot یعنی \fBdir\fP\& در دسترس باشد. این به این دلیل است که کتابخانه‌های SSL گاهی نیاز به جمع‌آوری تصادفی‌سازی تازه دارند. هسته‌های لینوکس جدیدتر و برخی از BSDها یک فراخوان سیستمی getrandom() یا getentropy() پیاده‌سازی کرده‌اند که نیاز به در دسترس بودن \fB/dev/urandom\fP را برطرف می‌سازد. .UNINDENT .INDENT 0.0 .TP .BI \-\-compat\-mode \ version این گزینه روشی راحت برای تغییر مقادیر پیش‌فرض OpenVPN جهت سازگاری بیشتر با نسخه مشخص‌شده \fBversion\fP فراهم می‌کند. تمام تغییراتی که این گزینه اعمال می‌کند را می‌توان با استفاده از گزینه‌های پیکربندی جداگانه نیز به دست آورد. .sp نسخه مشخص‌شده با این گزینه، نسخه همتای OpenVPN است که OpenVPN باید تلاش کند با آن سازگار باشد. به‌طور کلی OpenVPN باید بدون این گزینه با دو نسخه قبلی سازگار باشد. برای نمونه OpenVPN 2.6.0 باید بدون این گزینه با 2.5.x و 2.4.x سازگار باشد. با این حال، ممکن است موارد خاصی وجود داشته باشد که حتی در این حالت‌ها نیز به این گزینه نیاز داشته باشند. .sp نکته: استفاده از این گزینه، مقادیر پیش‌فرض را به مقادیری که دیگر توصیه نمی‌شوند بازمی‌گرداند و در صورت امکان باید از آن اجتناب شود. .sp جدول زیر جزئیات تغییرات پیش‌فرض‌ها را بر اساس نسخه مشخص‌شده نشان می‌دهد. .INDENT 7.0 .IP \(bu 2 2.5.x یا پایین‌تر: اگر هیچ گزینه فشرده‌سازی دیگری وجود نداشته باشد، \fB\-\-allow\-compression asym\fP به‌طور خودکار به پیکربندی اضافه می‌شود. .IP \(bu 2 2.4.x یا پایین‌تر: رمزنگار موجود در \fB\-\-cipher\fP به \fB\-\-data\-ciphers\fP اضافه می‌شود. .IP \(bu 2 2.3.x یا پایین‌تر: \fB\-\-data\-ciphers\-fallback\fP به‌طور خودکار با همان رمزنگار \fB\-\-cipher\fP اضافه می‌شود. .IP \(bu 2 2.3.6 یا پایین‌تر: زمانی که \fB\-\-tls\-version\-min\fP به‌طور صریح تنظیم نشده باشد، \fB\-\-tls\-version\-min 1.0\fP به پیکربندی اضافه می‌شود. .UNINDENT .sp در صورت عدم نیاز، باید از این گزینه اجتناب شود. تنظیم این گزینه می‌تواند امنیت را کاهش دهد یا ویژگی‌هایی مانند data\-channel offloading را غیرفعال کند. .TP .BI \-\-config \ file بارگذاری گزینه‌های پیکربندی اضافی از \fBfile\fP که در آن هر خط معادل یک گزینه خط فرمان است، اما \fB\-\-\fP ابتدایی حذف شده است. .sp اگر \fB\-\-config file\fP تنها گزینه برای دستور openvpn باشد، می‌توان \fB\-\-config\fP را حذف کرد و دستور را به صورت \fBopenvpn file\fP اجرا کرد. .sp توجه داشته باشید که پرونده‌های پیکربندی می‌توانند تا عمق معقولی تو در تو باشند. .sp می‌توان از نویسه‌های نقل‌قول دوگانه یا تکی (\(dq\(dq، \(aq\(aq) برای در بر گرفتن پارامترهای تکی شامل فاصله‌های خالی استفاده کرد، و نویسه‌های \(dq#\(dq یا \(dq;\(dq در ستون اول می‌توانند برای نشان دادن توضیحات به کار روند. .sp توجه داشته باشید که OpenVPN 2.0 و بالاتر برای نویسه‌هایی که درون نقل‌قول تکی نیستند، گریز شل مبتنی بر بک‌اسلش را انجام می‌دهد، بنابراین نگاشت‌های زیر باید رعایت شوند: .INDENT 7.0 .INDENT 3.5 .sp .EX \e\e Maps to a single backslash character (\e). \e\(dq Pass a literal doublequote character (\(dq), don\(aqt interpret it as enclosing a parameter. \e[SPACE] Pass a literal space or tab character, don\(aqt interpret it as a parameter delimiter. .EE .UNINDENT .UNINDENT .sp برای نمونه در Windows، از دو بک‌اسلش برای نمایش مسیرها استفاده کنید: .INDENT 7.0 .INDENT 3.5 .sp .EX secret \(dqc:\e\eOpenVPN\e\esecret.key\(dq .EE .UNINDENT .UNINDENT .sp برای نمونه‌های پرونده‌های پیکربندی، نگاه کنید به \% .sp در اینجا یک پرونده پیکربندی نمونه آمده است: .INDENT 7.0 .INDENT 3.5 .sp .EX # # Sample OpenVPN configuration file for # using a pre\-shared static key. # # \(aq#\(aq or \(aq;\(aq may be used to delimit comments. # Use a dynamic tun device. dev tun # Our remote peer remote mypeer.mydomain # 10.1.0.1 is our local VPN endpoint # 10.1.0.2 is our remote VPN endpoint ifconfig 10.1.0.1 10.1.0.2 # Our pre\-shared static key secret static.key .EE .UNINDENT .UNINDENT .TP .BI \-\-daemon \ progname پس از تکمیل تمام توابع مقداردهی اولیه، به یک دیمن تبدیل شود. .sp نحو‌های معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX daemon daemon progname .EE .UNINDENT .UNINDENT .sp این گزینه باعث می‌شود تمام پیام‌ها و خروجی‌های خطا به پرونده syslog (مانند \fB/var/log/messages\fP) ارسال شوند، به جز خروجی اسکریپت‌ها و دستورهای ifconfig، که مگر در صورت تغییر مسیر، به \fB/dev/null\fP خواهند رفت. تغییر مسیر syslog بلافاصله در نقطه‌ای که \fB\-\-daemon\fP در خط فرمان تجزیه می‌شود رخ می‌دهد، هرچند نقطه تبدیل به دیمن شدن بعداً انجام می‌شود. اگر یکی از گزینه‌های \fB\-\-log\fP وجود داشته باشد، جایگزین تغییر مسیر syslog خواهد شد. .sp پارامتر اختیاری \fBprogname\fP باعث می‌شود OpenVPN نام برنامه خود را به صورت \fBprogname\fP به ثبت‌کننده سیستم گزارش دهد. این امر می‌تواند در پیوند دادن پیام‌های OpenVPN در پرونده syslog با تونل‌های خاص مفید باشد. در صورت مشخص نشدن، \fBprogname\fP به صورت پیش‌فرض برابر با \fBopenvpn\fP است. .sp هنگامی که OpenVPN با گزینه \fB\-\-daemon\fP اجرا می‌شود، تلاش می‌کند تبدیل به دیمن شدن را تا تکمیل اکثر توابع مقداردهی اولیه که قادر به ایجاد خطاهای مهلک هستند، به تاخیر بیندازد. این بدان معناست که اسکریپت‌های مقداردهی اولیه می‌توانند وضعیت بازگشتی دستور openvpn را برای یک نشانه نسبتاً قابل اعتماد از اینکه آیا دستور به درستی مقداردهی اولیه شده و وارد حلقه رخداد ارسال بسته شده است یا خیر، بررسی کنند. .sp در OpenVPN، اکثریت قریب به اتفاق خطاهایی که پس از مقداردهی اولیه رخ می‌دهند، غیرمهلک هستند. .sp نکته: به محض اینکه OpenVPN به دیمن تبدیل شد، دیگر نمی‌تواند نام کاربری، گذرواژه یا عبارت عبور کلید را درخواست کند. این امر پیامدهای خاصی دارد، از جمله اینکه استفاده از یک کلید خصوصی محافظت‌شده با گذرواژه با شکست مواجه خواهد شد، مگر اینکه از گزینه \fB\-\-askpass\fP برای اعلام به OpenVPN جهت درخواست عبارت عبور استفاده شود. .sp علاوه بر این، استفاده از \fB\-\-daemon\fP همراه با \fB\-\-auth\-user\-pass\fP (وارد شده در کنسول) و \fB\-\-auth\-nocache\fP به محض انجام مذاکره مجدد کلید (و احراز هویت مجدد) با شکست مواجه خواهد شد. .UNINDENT .INDENT 0.0 .TP .B \-\-disable\-occ \fBمنسوخ‌شده\fP غیرفعال‌سازی \(dqبررسی سازگاری گزینه‌ها\(dq (OCC) در پیکربندی‌هایی که از TLS استفاده نمی‌کنند. .sp در صورت شناسایی ناسازگاری گزینه‌ها بین همتاها، پیام هشداری ارسال نمی‌شود. یک مثال از ناسازگاری گزینه زمانی است که یک همتا از \fB\-\-dev tun\fP و همتای دیگر از \fB\-\-dev tap\fP استفاده کند\&. .sp استفاده از این گزینه توصیه نمی‌شود، اما به‌عنوان راه‌حلی موقت در شرایطی که نسخه جدید OpenVPN باید به یک نسخه قدیمی متصل شود فراهم شده است. .TP .BI \-\-engine \ engine\-name فعال‌سازی قابلیت موتور رمزنگاری سخت‌افزاری OpenSSL. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX engine engine engine\-name .EE .UNINDENT .UNINDENT .sp اگر \fBengine\-name\fP مشخص شده باشد، از یک موتور رمزنگاری خاص استفاده می‌شود. از گزینه مستقل \fB\-\-show\-engines\fP برای فهرست کردن موتورهای رمزنگاری پشتیبانی‌شده توسط OpenSSL استفاده کنید. .TP .BI \-\-group \ group مشابه گزینه \fB\-\-user\fP، این گزینه شناسه گروه (GID) فرایند OpenVPN را پس از راه‌اندازی اولیه به \fBgroup\fP تغییر می‌دهد. .TP .BI \-\-ignore\-unknown\-option \ args نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX ignore\-unknown\-option opt1 opt2 opt3 ... optN .EE .UNINDENT .UNINDENT .sp هنگامی که یکی از گزینه‌های \fBopt1 ... optN\fP در پرونده پیکربندی مشاهده شود، اگر این نسخه از OpenVPN از آن گزینه پشتیبانی نکند، پردازش پرونده پیکربندی شکست نمی‌خورد. برای پشتیبانی از تعداد بیشتری از گزینه‌ها جهت نادیده‌گرفتن، می‌توان چندین گزینه \fB\-\-ignore\-unknown\-option\fP را مشخص کرد. .sp این گزینه باید با احتیاط استفاده شود، زیرا دلایل امنیتی موجهی وجود دارد که اگر OpenVPN مشکلی در پرونده پیکربندی تشخیص دهد متوقف شود. با این حال، دلایل موجهی نیز وجود دارد که ویژگی‌های نرم‌افزاری جدید هنگام مواجهه با نسخه‌های قدیمی‌تر به‌آرامی تنزل یابند. .sp گزینه \fB\-\-ignore\-unknown\-option\fP از OpenVPN 2.3.3 به بعد در دسترس است. .TP .BI \-\-iproute \ cmd تنظیم دستور جایگزین برای اجرا به جای دستور پیش‌فرض \fBiproute2\fP. ممکن است به‌منظور اجرای OpenVPN در یک محیط بدون دسترسی ممتاز استفاده شود. .TP .BI \-\-keying\-material\-exporter \ args ذخیره Exported Keying Material [RFC5705] با اندازه \fBlen\fP بایت (باید بین ۱۶ و ۴۰۹۵ بایت باشد) با استفاده از \fBlabel\fP در محیط (\fBexported_keying_material\fP) جهت استفاده توسط افزونه‌ها در فراخوانی برگشتی \fBOPENVPN_PLUGIN_TLS_FINAL\fP. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX keying\-material\-exporter label len .EE .UNINDENT .UNINDENT .sp توجه داشته باشید که \fBlabels\fP برون‌ریزنده پتانسیل تداخل با برچسب‌های موجود PRF را دارند. به‌منظور جلوگیری از این مسئله، برچسب‌ها \fIباید\fP با \fBEXPORTER\fP آغاز شوند\&. .TP .B \-\-mlock غیرفعال‌سازی صفحه‌بندی حافظه با فراخوانی تابع POSIX mlockall. مستلزم این است که OpenVPN در ابتدا با دسترسی root اجرا شود (اگرچه OpenVPN می‌تواند بعداً با استفاده از گزینه \fB\-\-user\fP شناسه کاربری (UID) خود را کاهش دهد). .sp استفاده از این گزینه تضمین می‌کند که داده‌های کلید و داده‌های تونل به دلیل عملیات صفحه‌بندی حافظه مجازی که در اکثر سیستم‌های عامل مدرن رخ می‌دهد، هرگز بر روی دیسک نوشته نشوند. این گزینه تضمین می‌کند حتی اگر مهاجمی بتواند سیستم اجراکننده OpenVPN را هک کند، نتواند پرونده swap سیستم را برای بازیابی کلیدهای موقت (ephemeral) قبلی که برای بازه‌ای زمانی تحت کنترل گزینه‌های \fB\-\-reneg\fP (به زیر مراجعه کنید) استفاده و سپس دور ریخته شده‌اند، پویش کند. .sp نقطه ضعف استفاده از \fB\-\-mlock\fP این است که میزان حافظه فیزیکی موجود برای سایر برنامه‌ها را کاهش می‌دهد. .sp محدودیت میزان حافظه‌ای که می‌توان قفل کرد و نحوه اعمال این محدودیت به سیستم‌عامل وابسته است. در لینوکس محدودیت پیش‌فرضی که یک فرایند غیرممتاز می‌تواند قفل کند (RLIMIT_MEMLOCK) پایین است، و اگر دسترسی‌ها بعداً کاهش یابند، تخصیص‌های حافظه در آینده به‌احتمال بسیار زیاد با شکست مواجه خواهند شد. این محدودیت را می‌توان با استفاده از ulimit یا دستورات systemd بسته به نحوه راه‌اندازی OpenVPN افزایش داد. .sp اگر پلتفرم دارای فراخوانی سیستمی getrlimit(2) باشد، OpenVPN پیش از فراخوانی mlockall(2) میزان حافظه قابل قفل با mlock را بررسی می‌کند و اگر کمتر از ۱۰۰ مگابایت پیکربندی شده باشد، تلاش می‌کند محدودیت را به ۱۰۰ مگابایت افزایش دهد. مقدار ۱۰۰ مگابایت تا حدی دلخواه است \- برای یک استقرار متوسط OpenVPN کافی است، اما اگر تعداد کلاینت‌های هم‌زمان بالا باشد، مصرف حافظه ممکن است فراتر از آن برود. .TP .BI \-\-nice \ n تغییر اولویت فرایند پس از راه‌اندازی اولیه (\fBn\fP بزرگ‌تر از 0 اولویت پایین‌تر و \fBn\fP کمتر از صفر اولویت بالاتر است). .TP .BI \-\-providers \ providers بارگیری فهرست ارائه‌دهندگان (OpenSSL). این گزینه عمدتاً برای استفاده از یک ارائه‌دهنده خارجی جهت مدیریت کلید مانند tpm2\-openssl یا برای بارگیری ارائه‌دهنده legacy با دستور زیر کاربرد دارد: .INDENT 7.0 .INDENT 3.5 .sp .EX \-\-providers legacy default .EE .UNINDENT .UNINDENT .sp رفتار تغییر این گزینه در حین ارسال \fBSIGHUP\fP ممکن است مناسب نباشد. اگر نیاز به تغییر/افزودن/حذف این گزینه دارید، OpenVPN را به‌طور کامل بازراه‌اندازی کنید. .UNINDENT .INDENT 0.0 .TP .BI \-\-remap\-usr1 \ signal کنترل اینکه سیگنال‌های \fBSIGUSR1\fP تولیدشده به صورت داخلی یا خارجی به \fBSIGHUP\fP (راه‌اندازی مجدد بدون حفظ وضعیت) یا \fBSIGTERM\fP (خروج) نگاشت مجدد شوند یا خیر. .sp \fBsignal\fP می‌تواند روی \fBSIGHUP\fP یا \fBSIGTERM\fP تنظیم شود\&. به صورت پیش‌فرض، هیچ نگاشت مجددی رخ نمی‌دهد. .TP .BI \-\-script\-security \ level این دستورالعمل امکان کنترل در سطح خط‌مشی (policy) را بر استفادهٔ OpenVPN از برنامه‌ها و اسکریپت‌های خارجی فراهم می‌کند. مقادیر کمتر \fBlevel\fP محدودکننده‌تر و مقادیر بالاتر آزادتر هستند. تنظیمات برای \fBlevel\fP: .INDENT 7.0 .TP .B \fB0\fP اکیداً بدون فراخوانی برنامه‌های خارجی. .TP .B \fB1\fP (پیش‌فرض) تنها فراخوانی فایل‌های اجرایی توکار مانند ifconfig، ip، route، یا netsh. .TP .B \fB2\fP اجازه فراخوانی فایل‌های اجرایی توکار و اسکریپت‌های تعریف‌شده توسط کاربر. .TP .B \fB3\fP اجازه ارسال گذرواژه‌ها به اسکریپت‌ها از طریق متغیرهای محیطی (به طور بالقوه ناامن). .UNINDENT .sp نسخه‌های OpenVPN قبل از v2.3 همچنین از یک پرچم \fBmethod\fP پشتیبانی می‌کردند که مشخص می‌کرد OpenVPN چگونه باید دستورات و اسکریپت‌های خارجی را فراخوانی کند. این می‌توانست \fBexecve\fP یا \fBsystem\fP باشد\&. از نسخه OpenVPN 2.3 به بعد، این پرچم دیگر پذیرفته نمی‌شود. .sp برخی دستورالعمل‌ها مانند \fB\-\-up\fP اجازه می‌دهند گزینه‌ها به اسکریپت خارجی ارسال شوند. در این موارد اطمینان حاصل کنید که نام اسکریپت حاوی هیچ فاصله‌ای (space) نباشد، در غیر این صورت تجزیه‌کنندهٔ پیکربندی دچار خطا خواهد شد چون نمی‌تواند تشخیص دهد نام اسکریپت در کجا پایان می‌یابد و گزینه‌های اسکریپت از کجا شروع می‌شوند. .sp در ویندوز هنگام اجرای پرونده‌های غیر اجرایی، داشتن مسیر کامل به مفسر اسکریپت یک الزام قطعی است. این مورد برای پرونده‌های اجرایی مانند فایلهای .exe، .com، .bat یا .cmd لازم نیست. به عنوان مثال، اگر یک اسکریپت Visual Basic دارید، باید از این نحو استفاده کنید: .INDENT 7.0 .INDENT 3.5 .sp .EX \-\-up \(aqC:\e\eWindows\e\eSystem32\e\ewscript.exe C:\e\eProgram\e Files\e\eOpenVPN\e\econfig\e\emy\-up\-script.vbs\(aq .EE .UNINDENT .UNINDENT .sp لطفاً به علامت‌های نقل‌قول تکی و اسکیپ کردن بک‌اسلش‌ها (\fB\e\e\fP) و نویسهٔ فاصله توجه داشته باشید. .TP .BI \-\-setcon \ context اعمال \fBcontext\fP مربوط به SELinux پس از مقداردهی اولیه. این اساساً به لطف SELinux، امکان محدود کردن حقوق دسترسی OpenVPN تنها به عملیات I/O شبکه را فراهم می‌کند. این فراتر از \fB\-\-user\fP و \fB\-\-chroot\fP عمل می‌کند، چرا که آن دو با وجود اینکه ویژگی‌های امنیتی عالی هستند، متأسفانه در برابر ارتقای سطح دسترسی (privilege escalation) از طریق اکسپلویت یک فراخوانی سیستمیِ آسیب‌پذیر محافظت نمی‌کنند. البته می‌توانید هر سه را ترکیب کنید، اما توجه داشته باشید از آنجا که setcon نیاز به دسترسی به /proc دارد، باید آن را درون پوشه chroot فراهم کنید (مثلاً با mount \-\-bind). .sp از آنجا که عملیات setcon تا پس از مقداردهی اولیه به تعویق می‌افتد، OpenVPN می‌تواند تنها به فراخوانی‌های سیستمی مربوط به شبکه محدود شود، در حالی که با اعمال context پیش از راه‌اندازی (مانند موردی که برای OpenVPN در SELinux Reference Policies ارائه شده است) مجبور خواهید بود مواردی را که فقط هنگام مقداردهی اولیه لازم هستند نیز مجاز کنید. .sp مانند chroot، اجرای اسکریپت‌ها یا راه‌اندازی‌های مجدد پس از عملیات setcon می‌تواند پیچیدگی‌هایی ایجاد کند، به همین دلیل باید استفاده از گزینه \fB\-\-persist\-tun\fP را جداً مد نظر قرار دهید. .TP .BI \-\-status \ args نوشتن وضعیت عملیاتی در \fBfile\fP هر \fBn\fP ثانیه یک‌بار. در صورت مشخص نشدن، \fBn\fP به صورت پیش‌فرض \fB60\fP است. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX status file status file n .EE .UNINDENT .UNINDENT .sp همچنین با ارسال سیگنال \fBSIGUSR2\fP می‌توان وضعیت را در syslog نوشت. .sp با فعال بودن قابلیت چند-کاربری (multi\-client) روی یک سرور، پرونده وضعیت شامل فهرستی از کلاینت‌ها و یک جدول مسیریابی است. در این حالت قالب خروجی را می‌توان با گزینه \fB\-\-status\-version\fP کنترل کرد. .sp برای کلاینت‌ها یا نمونه‌های در حال اجرا در حالت point\-to\-point، این پرونده شامل آمار ترافیک خواهد بود. .TP .BI \-\-status\-version \ n تنظیم شماره نسخه قالب پرونده وضعیت به \fBn\fP\&. .sp این گزینه تنها بر پرونده وضعیت در سرورهایی تأثیر می‌گذارد که قابلیت multi\-client روی آن‌ها فعال است. مقادیر معتبر برای نسخه وضعیت: .INDENT 7.0 .TP .B \fB1\fP قالب سنتی (پیش‌فرض). فهرست کلاینت شامل فیلدهای زیر است که با کاما از هم جدا شده‌اند: Common Name، Real Address، Bytes Received، Bytes Sent، Connected Since. .TP .B \fB2\fP قالبی مطمئن‌تر برای پردازش خارجی. در مقایسه با نسخه \fB1\fP، فهرست کلاینت شامل چند فیلد اضافی است: Virtual Address، Virtual IPv6 Address، Username، Client ID، Peer ID، Data Channel Cipher. نسخه‌های آینده ممکن است تعداد فیلدها را افزایش دهند. .TP .B \fB3\fP همانند \fB2\fP، اما فیلدها با تب (tab) جدا شده‌اند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-\-test\-crypto یک خودآزمایی (self\-test) از گزینه‌های رمزنگاری OpenVPN با رمزگذاری و رمزگشایی بسته‌های آزمایشی با استفاده از گزینه‌های رمزنگاری کانال داده که در بالا مشخص شده‌اند، انجام می‌دهد. این گزینه برای کارکرد به یک همتا (peer) نیاز ندارد، بنابراین می‌تواند بدون \fB\-\-dev\fP یا \fB\-\-remote\fP مشخص شود\&. .sp کاربرد معمول \fB\-\-test\-crypto\fP چیزی شبیه به این خواهد بود: .INDENT 7.0 .INDENT 3.5 .sp .EX openvpn \-\-test\-crypto .EE .UNINDENT .UNINDENT .sp یا .INDENT 7.0 .INDENT 3.5 .sp .EX openvpn \-\-test\-crypto \-\-verb 9 .EE .UNINDENT .UNINDENT .sp این گزینه برای آزمایش OpenVPN پس از پورت شدن آن به یک بستر (پلتفرم) جدید، یا جداسازی مشکلات در کامپایلر، کتابخانه رمزنگاری OpenSSL یا کد رمزنگاری OpenVPN بسیار مفید است. از آنجا که این یک حالت خودآزمایی است، مشکلات رمزگذاری و احراز هویت را می‌توان مستقل از مسائل شبکه و تونل اشکال‌زدایی کرد. .sp نسخه‌های قدیمی‌تر OpenVPN از آرگومان \fB\-\-secret\fP برای مشخص کردن یک کلید ایستا برای این آزمایش استفاده می‌کردند. نسخه‌های جدیدتر یک کلید تصادفی برای آزمایش تولید می‌کنند. .TP .BI \-\-tmp\-dir \ dir یک دایرکتوری \fBdir\fP را برای پرونده‌های موقت به جای مقدار پیش‌فرض \fBTMPDIR\fP (یا \(dq/tmp\(dq در صورت تنظیم نشدن) مشخص می‌کند. توجه داشته باشید که این مسیر باید پس از واگذاری دسترسی‌های ریشه (root privileges) توسط پردازش اصلی قابل نوشتن باشد. .sp این دایرکتوری برای ارتباط با اسکریپت‌ها و افزونه‌ها استفاده خواهد شد: .INDENT 7.0 .IP \(bu 2 اسکریپت‌های \fB\-\-client\-connect\fP و قلاب افزونه \fBOPENVPN_PLUGIN_CLIENT_CONNECT\fP برای تولید پویای پیکربندی ویژه کلاینت \fBclient_connect_config_file\fP و بازگرداندن موفقیت/شکست از طریق \fBclient_connect_deferred_file\fP هنگام استفاده از روش اتصال کلاینت معوق (deferred) .IP \(bu 2 قلاب‌های افزونه \fBOPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY\fP که موفقیت/شکست را از طریق \fBauth_control_file\fP هنگام استفاده از روش احراز هویت معوق و احراز هویت در انتظار از طریق \fBauth_pending_file\fP بازمی‌گردانند\&. .UNINDENT .TP .B \-\-use\-prediction\-resistance مقاومت در برابر پیش‌بینی (prediction resistance) را در RNG مربوط به mbed TLS فعال می‌کند. .sp فعال‌سازی مقاومت در برابر پیش‌بینی باعث می‌شود RNG در هر فراخوانی برای داده تصادفی، مقداردهی اولیه مجدد (reseed) شود. مقداردهی مجدد مکرر می‌تواند استخر آنتروپی (entropy pool) هسته را به سرعت تخلیه کند. .sp اگر به این گزینه نیاز دارید، لطفاً اجرای دیمنی را در نظر بگیرید که به استخر هسته، آنتروپی اضافه می‌کند. .TP .BI \-\-user \ user شناسه کاربری (User ID) پردازش OpenVPN را پس از مقداردهی اولیه به \fBuser\fP تغییر داده و دسترسی‌ها را در طول پردازش کاهش می‌دهد. این گزینه برای محافظت از سیستم در حالتی که یک طرف متخاصم بتواند کنترل یک نشست OpenVPN را به دست آورد مفید است. اگرچه ویژگی‌های امنیتی OpenVPN این اتفاق را نامحتمل می‌سازد، اما به عنوان خط دفاعی دوم ارائه شده است. .sp با تنظیم \fBuser\fP روی یک کاربر بدون دسترسی ویژه که به اجرای openvpn اختصاص داده شده است، میزان آسیبی که طرف متخاصم می‌تواند ایجاد کند محدود می‌شود. البته پس از سلب دسترسی‌ها، نمی‌توانید آن‌ها را به یک نشست OpenVPN بازگردانید. این بدان معناست که برای مثال، اگر می‌خواهید دیمن OpenVPN را با یک سیگنال \fBSIGUSR1\fP بازنشانی کنید (برای نمونه در پاسخ به بازنشانی DHCP)، باید از یک یا چند گزینه از گزینه‌های \fB\-\-persist\fP استفاده کنید تا اطمینان حاصل شود که OpenVPN برای راه‌اندازی مجدد نیازی به اجرای هیچ عملیات دارای دسترسی ویژه ندارد (مانند خواندن مجدد پرونده‌های کلید یا اجرای \fBifconfig\fP روی دستگاه TUN). .sp نکته: نسخه‌های قبلی openvpn از \fBnobody\fP به عنوان نمونه کاربر بدون دسترسی ویژه استفاده می‌کردند. استفاده واقعی از این کاربر توصیه نمی‌شود زیرا معمولاً از قبل توسط سایر سرویس‌های سیستم استفاده می‌شود. همیشه یک کاربر اختصاصی برای openvpn ایجاد کنید. .TP .BI \-\-writepid \ file شناسه پردازش اصلی (PID) مربوط به OpenVPN را در پرونده \fBfile\fP می‌نویسد\&. .UNINDENT .SS گزینه‌های ثبت گزارش (Log options) .INDENT 0.0 .TP .BI \-\-echo \ parms مقادیر \fBparms\fP را در خروجی لاگ پژواک (echo) می‌کند. .sp برای استفاده جهت ارسال پیام‌ها به یک برنامه کنترل‌کننده که خروجی لاگ OpenVPN را دریافت می‌کند طراحی شده است. .TP .B \-\-errors\-to\-stderr خطاها را به جای stdout به stderr ارسال می‌کند، مگر اینکه خروجی لاگ توسط یکی از گزینه‌های \fB\-\-log\fP تغییر مسیر داده شده باشد. .TP .BI \-\-log \ file پیام‌های گزارش را در پرونده \fBfile\fP خروجی می‌دهد، از جمله خروجی به stdout/stderr که توسط اسکریپت‌های فراخوانی‌شده تولید می‌شود. اگر پرونده \fBfile\fP از قبل وجود داشته باشد، محتوای آن پاک (truncate) می‌شود. این گزینه بلافاصله پس از تجزیه در خط فرمان اعمال می‌شود و در صورت تعیین \fB\-\-daemon\fP، جایگزین خروجی syslog خواهد شد. این گزینه در تمام طول چرخه اجرای OpenVPN پایدار است و با \fBSIGHUP\fP، \fBSIGUSR1\fP یا \fB\-\-ping\-restart\fP بازنشانی نخواهد شد\&. .sp توجه داشته باشید که در ویندوز، هنگامی که OpenVPN به عنوان یک سرویس راه‌اندازی می‌شود، ثبت گزارش به صورت پیش‌فرض و بدون نیاز به مشخص کردن این گزینه انجام می‌گیرد. .TP .BI \-\-log\-append \ file پیام‌های گزارش را به انتهای پرونده \fBfile\fP اضافه می‌کند\&. اگر پرونده \fBfile\fP وجود نداشته باشد، ایجاد خواهد شد. این گزینه دقیقاً مانند \fB\-\-log\fP عمل می‌کند با این تفاوت که به جای بازنویسی و پاک کردن، به انتهای پرونده لاگ اضافه می‌کند. .UNINDENT .INDENT 0.0 .TP .B \-\-machine\-readable\-output همیشه برچسب‌های زمانی و پرچم‌های پیام را در پیام‌های لاگ بنویس، حتی زمانی که در حالت عادی پیشوند نمی‌خورند. به طور خاص، این مورد برای پیام‌های لاگ ارسال‌شده به stdout اعمال می‌شود. .TP .BI \-\-mute \ n ثبت حداکثر \fBn\fP پیام متوالی در همان دسته‌بندی. این گزینه برای محدود کردن لاگ‌های تکراری انواع پیام‌های مشابه مفید است. .TP .B \-\-mute\-replay\-warnings بی‌صدا کردن خروجی هشدارهای بازپخش (replay)، که یک هشدار نادرست رایج در شبکه‌های WiFi هستند. این گزینه امنیت کد حفاظت در برابر بازپخش را حفظ می‌کند بدون اینکه پرگویی‌های مربوط به هشدارهای بسته‌های تکراری را به همراه داشته باشد. .TP .B \-\-suppress\-timestamps جلوگیری از نوشتن برچسب‌های زمانی در پیام‌های لاگ، حتی زمانی که در حالت عادی پیشوند می‌خورند. به طور خاص، این مورد برای پیام‌های لاگ ارسال‌شده به stdout اعمال می‌شود. .TP .BI \-\-syslog \ progname هدایت خروجی لاگ به لاگر سیستم (syslog)، اما بدون تبدیل شدن به دیمن. برای توضیح پارامتر \fBprogname\fP به دستورالعمل \fB\-\-daemon\fP در بالا مراجعه کنید. .TP .BI \-\-verb \ n تنظیم پرگویی (verbosity) خروجی روی \fBn\fP (پیش‌فرض \fB1\fP). هر سطح تمام اطلاعات سطوح قبلی را نشان می‌دهد. سطح \fB3\fP در صورتی که یک خلاصه‌ی خوب از آنچه رخ می‌دهد بدون غرق شدن در خروجی می‌خواهید، پیشنهاد می‌شود. .INDENT 7.0 .TP .B \fB0\fP بدون خروجی به جز خطاهای مهلک. .TP .B \fB1\fP تا \fB4\fP محدوده استفاده عادی. .TP .B \fB5\fP نویسه‌های \fBR\fP و \fBW\fP را برای هر خواندن و نوشتن بسته در کنسول خروجی می‌دهد، حروف بزرگ برای بسته‌های TCP/UDP و حروف کوچک برای بسته‌های TUN/TAP استفاده می‌شوند. .TP .B \fB6\fP تا \fB11\fP محدوده اطلاعات اشکال‌زدایی (debug) (برای اطلاعات بیشتر در مورد سطوح اشکال‌زدایی، پرونده \fBerrlevel.h\fP را در کد منبع ببینید). .UNINDENT .UNINDENT .SS گزینه‌های پروتکل (Protocol options) .sp گزینه‌های این بخش بر ویژگی‌های موجود در پروتکل ارتباطی (wire protocol) اوپن‌وی‌پی‌ان تأثیر می‌گذارند. بسیاری از این گزینه‌ها همچنین گزینه‌های رمزنگاری کانال داده را در پروتکل ارتباطی OpenVPN تعریف می‌کنند. این گزینه‌ها باید به شیوه‌ای سازگار بین هر دو سمت محلی و دوردست پیکربندی شوند. .INDENT 0.0 .TP .BI \-\-allow\-compression \ mode همان‌طور که در گزینه \fB\-\-compress\fP توضیح داده شده است، فشرده‌سازی یک گزینه بالقوه خطرناک است. این گزینه امکان کنترل رفتار OpenVPN را در هنگام استفاده و مجاز بودن فشرده‌سازی فراهم می‌کند. .sp آرگومان \fBmode\fP می‌تواند یکی از مقادیر زیر باشد: .INDENT 7.0 .TP .B \fBasym\fP برنامه OpenVPN فقط \fIبسته‌های ورودی را از حالت فشرده خارج می‌کند\fP اما \fIبسته‌های خروجی را فشرده نمی‌کند\fP\&. این همچنین امکان مهاجرت جهت غیرفعال‌سازی فشرده‌سازی را فراهم می‌کند، زمانی که تغییر هم‌زمان پیکربندی سرور و کلاینت برای حذف فشرده‌سازی گزینه‌ای امکان‌پذیر نیست. .TP .B \fBno\fP (پیش‌فرض) برنامه OpenVPN هرگونه فشرده‌سازی را رد خواهد کرد. اگر بارگذاری کانال داده (data\-channel offloading) فعال باشد، OpenVPN علاوه بر این فریم‌بندی فشرده‌سازی (stub) را نیز رد خواهد کرد. .TP .B \fByes\fP \fBمنسوخ‌شده\fP این گزینه یک نام مستعار برای \fBasym\fP است\&. پیش از این فشرده‌سازی را برای بسته‌های خروجی فعال می‌کرد، اما OpenVPN اکنون هرگز بسته‌ها را هنگام ارسال فشرده نمی‌کند. .UNINDENT .TP .BI \-\-auth \ alg احراز اصالت بسته‌های کانال داده و (در صورت فعال بودن) بسته‌های کانال کنترل \fBtls\-auth\fP با HMAC با استفاده از الگوریتم خلاصه پیام \fBalg\fP\&. (پیش‌فرض \fBSHA1\fP است). الگوریتم HMAC یک الگوریتم احراز اصالت پیام (MAC) رایج است که از یک رشته داده، یک الگوریتم هش امن و یک کلید برای تولید یک امضای دیجیتال استفاده می‌کند. .sp پروتکل کانال داده OpenVPN از روش encrypt\-then\-mac استفاده می‌کند (یعنی ابتدا یک بسته را رمزگذاری می‌کند سپس متن رمزشده حاصل را HMAC می‌کند)، که از حملات padding oracle جلوگیری می‌کند. .sp اگر یک حالت رمز AEAD (مانند GCM) انتخاب شود، الگوریتم \fB\-\-auth\fP مشخص‌شده برای کانال داده نادیده گرفته می‌شود و روش احراز اصالت رمز AEAD به جای آن استفاده می‌شود. توجه داشته باشید که \fBalg\fP همچنان خلاصه استفاده‌شده برای \fBtls\-auth\fP را تعیین می‌کند\&. .sp در حالت رمزنگاری کلید ایستا (static\-key)، کلید HMAC در پرونده کلید تولید شده توسط \fB\-\-genkey\fP گنجانده می‌شود\&. در حالت TLS، کلید HMAC به صورت پویا تولید شده و بین همتاها از طریق کانال کنترل TLS به اشتراک گذاشته می‌شود. اگر OpenVPN بسته‌ای با HMAC نامعتبر دریافت کند، آن بسته را دور می‌اندازد (drop). معمولاً HMAC مقدار ۱۶ یا ۲۰ بایت به هر بسته اضافه می‌کند. برای غیرفعال کردن احراز اصالت، \fBalg=none\fP را تنظیم کنید. .sp برای اطلاعات بیشتر درباره HMAC به \% مراجعه کنید. .TP .BI \-\-cipher \ alg این گزینه دیگر نباید در حالت TLS استفاده شود و هنوز به دو دلیل وجود دارد: .INDENT 7.0 .IP \(bu 2 سازگاری با پیکربندی‌های قدیمی که هنوز آن را به همراه دارند؛ .IP \(bu 2 اجازه دادن به کاربرانی که به همتاهای OpenVPN قدیمی‌تر از نسخه 2.6.0 متصل می‌شوند تا \fB\-\-cipher\fP را به همان روش طرف مقابل پیکربندی کنند. این می‌تواند از هشدارهای اندازه MTU/فریم جلوگیری کند. .UNINDENT .sp پیش از 2.4.0، این گزینه برای انتخاب رمزی که باید روی کانال داده پیکربندی شود استفاده می‌شد، با این حال، نسخه‌های بعدی معمولاً این دستورالعمل را به نفع یک رمز مذاکره‌شده نادیده می‌گرفتند. از نسخه 2.6.0 به بعد، این گزینه هنگام پیکربندی رمز در حالت TLS همیشه نادیده گرفته می‌شود. .sp اگر مایل به مشخص کردن رمز مورد استفاده در کانال داده هستید، لطفاً \fB\-\-data\-ciphers\fP (برای مذاکره عادی) و \fB\-\-data\-ciphers\-fallback\fP (برای یک گزینه جایگزین زمانی که مذاکره نمی‌تواند انجام شود چون همتای دیگر قدیمی است یا مذاکره را غیرفعال کرده است) را ببینید. .sp برای مشاهده رمزهای موجود در OpenVPN، از گزینه \fB\-\-show\-ciphers\fP استفاده کنید. .sp برای غیرفعال کردن رمزنگاری، \fBalg\fP را روی \fBnone\fP تنظیم کنید. .UNINDENT .INDENT 0.0 .TP .BI \-\-compress \ algorithm \fBمنسوخ‌شده\fP فعال‌سازی یک الگوریتم فشرده‌سازی. فشرده‌سازی معمولاً توصیه نمی‌شود. تونل‌های VPN که از فشرده‌سازی استفاده می‌کنند در معرض بردار حمله VORACLE هستند. همچنین پارامتر \fBmigrate\fP در زیر را ببینید. .sp پارامتر \fBalgorithm\fP می‌تواند \fBlzo\fP، \fBlz4\fP، \fBlz4\-v2\fP، \fBstub\fP، \fBstub\-v2\fP، \fBmigrate\fP یا خالی باشد. LZO و LZ4 الگوریتم‌های فشرده‌سازی متفاوتی هستند که LZ4 عموماً بهترین کارایی را با کمترین مصرف CPU ارائه می‌دهد. .sp گونه‌های \fBlz4\-v2\fP و \fBstub\-v2\fP چارچوب‌بندی بهتری را پیاده‌سازی می‌کنند که در صورت عدم امکان فشرده‌سازی بسته‌ها، سرباری اضافه نمی‌کند. تمام گونه‌های دیگر در مقایسه با نبود چارچوب‌بندی فشرده‌سازی، همیشه یک بایت اضافی برای چارچوب‌بندی می‌افزایند. .sp به‌ویژه \fBstub\-v2\fP اساساً با نبود فشرده‌سازی و نبود چارچوب‌بندی فشرده‌سازی یکسان است زیرا سرآیند آن نسخه ۵ IP را در پیکربندی tun مشخص می‌کند و می‌تواند برای غیرفعال‌سازی کامل فشرده‌سازی در کلاینت‌ها استفاده (یا سوءاستفاده) شود. (گزینه \fBmigrate\fP در زیر را ببینید) .sp اگر پارامتر \fBalgorithm\fP مقدار \fBstub\fP، \fBstub\-v2\fP یا خالی باشد، فشرده‌سازی خاموش خواهد شد، اما چارچوب‌بندی بسته برای فشرده‌سازی همچنان فعال می‌ماند و اجازه می‌دهد تنظیمات متفاوتی بعداً push شود. علاوه بر این، \fBstub\fP و \fBstub\-v2\fP اعلان پشتیبانی از فشرده‌سازی \fBlzo\fP و \fBlz4\fP را از طریق متغیرهای \fIIV_\fP به سرور غیرفعال می‌کنند. .sp نکته: گزینه \fBstub\fP (یا خالی) با گزینه قدیمی‌تر \fB\-\-comp\-lzo no\fP سازگار نیست\&. .sp استفاده از \fBmigrate\fP به عنوان الگوریتم فشرده‌سازی، حالت مهاجرت ویژه‌ای را فعال می‌کند. این قابلیت امکان گذار از گزینه‌های \fB\-\-compress\fP/\fB\-\-comp\-lzo\fP به نبود فشرده‌سازی را فراهم می‌سازد. این گزینه سرور را روی حالت بدون فشرده‌سازی تنظیم می‌کند و سرور برای تمام کلاینت‌هایی که فشرده‌سازی در پیکربندی آن‌ها وجود ندارد، رفتاری یکسان با سروری بدون گزینه فشرده‌سازی خواهد داشت. با این حال، اگر کلاینتی شناسایی شود که نشان‌دهنده استفاده از فشرده‌سازی باشد (از طریق OCC)، سرور در صورت پشتیبانی کلاینت به‌طور خودکار \fB\-\-push compress stub\-v2\fP را به پیکربندی ویژه کلاینت اضافه می‌کند و در غیر این صورت به \fBcomp\-lzo no\fP تغییر وضعیت داده و \fB\-\-push comp\-lzo\fP را به پیکربندی ویژه کلاینت اضافه می‌کند. .sp \fB*ملاحظات امنیتی*\fP .sp فشرده‌سازی و رمزنگاری ترکیبی حساس است. اگر یک مهاجم بتواند (بخش‌هایی از) متن آشکار بسته‌های حاوی اطلاعات محرمانه را بداند یا کنترل کند، در صورت فعال بودن فشرده‌سازی ممکن است بتواند اطلاعات محرمانه را استخراج کند. برای مثال حملات \fICRIME\fP و \fIBREACH\fP روی TLS و \fIVORACLE\fP روی VPNها را ببینید که از این روش برای شکستن رمزنگاری سوءاستفاده می‌کنند. اگر کاملاً مطمئن نیستید که موارد بالا در مورد ترافیک شما صدق نمی‌کند، توصیه می‌شود فشرده‌سازی را فعال \fIنکنید\fP. .sp به همین دلیل پشتیبانی از فشرده‌سازی از نسخه‌های کنونی OpenVPN حذف شده است. این برنامه همچنان بسته‌های فشرده‌شده دریافتی از طریق اتصال VPN را از حالت فشرده خارج می‌کند اما هرگز هیچ بسته خروجی را فشرده نخواهد کرد. .TP .BI \-\-comp\-lzo \ mode \fBمنسوخ‌شده\fP فعال‌سازی الگوریتم فشرده‌سازی LZO. فشرده‌سازی معمولاً توصیه نمی‌شود. تونل‌های VPN که از فشرده‌سازی استفاده می‌کنند در معرض بردار حمله VORACLE هستند. .sp به طرف دیگر اتصال اجازه می‌دهد از فشرده‌سازی LZO استفاده کند. به دلیل تفاوت در قالب بسته، این ممکن است ۱ بایت اضافی به ازای هر بسته اضافه کند. در نسخه‌های کنونی OpenVPN هیچ فشرده‌سازی واقعی رخ نخواهد داد. .sp مقدار \fBmode\fP می‌تواند \fByes\fP، \fBno\fP یا \fBadaptive\fP باشد اما دیگر هیچ تغییر رفتاری واقعی نخواهد داشت. .TP .B \-\-comp\-noadapt \fBمنسوخ‌شده\fP این گزینه دیگر هیچ تأثیری ندارد زیرا نسخه‌های کنونی OpenVPN هرگز بسته‌های خروجی را فشرده نمی‌کنند. .TP .B \-\-key\-direction روشی جایگزین برای تعیین پارامتر اختیاری direction برای گزینه \fB\-\-tls\-auth\fP\&. هنگام استفاده از پرونده‌های درون‌خطی مفید است (بخش پرونده‌های درون‌خطی را ببینید). .TP .BI \-\-data\-ciphers \ cipher\-list محدود کردن رمزهای مجاز برای مذاکره به رمزهای موجود در \fBcipher\-list\fP\&. پارامتر \fBcipher\-list\fP فهرستی از رمزهای جداشده با دونقطه (:) است و در صورت در دسترس بودن Chacha20\-Poly1305 به صورت پیش‌فرض \fBAES\-256\-GCM:AES\-128\-GCM:CHACHA20\-POLY1305\fP و در غیر این صورت \fBAES\-256\-GCM:AES\-128\-GCM\fP است\&. .sp برای سرورها، نخستین رمز از \fBcipher\-list\fP که توسط کلاینت نیز پشتیبانی شود، به کلاینت‌هایی که از مذاکره رمز پشتیبانی می‌کنند push خواهد شد. .sp برای جزئیات بیشتر بخش مربوط به Data channel cipher negotiation را ببینید\&. \fIبه‌ویژه\fP اگر نیاز به پشتیبانی از کلاینت‌های با نسخه‌های قدیمی‌تر از OpenVPN 2.4 دارید! .sp از OpenVPN 2.6 به بعد، یک رمز می‌تواند با پیشوند \fB?\fP مشخص شود تا به عنوان اختیاری علامت‌گذاری گردد. این امکان را فراهم می‌کند تا رمزهایی در فهرست قرار گیرند که ممکن است در همه پلتفرم‌ها موجود نباشند. برای نمونه \fBAES\-256\-GCM:AES\-128\-GCM:?CHACHA20\-POLY1305\fP تنها در صورتی Chacha20\-Poly1305 را فعال می‌کند که کتابخانه SSL زیربنایی (و پیکربندی آن) از آن پشتیبانی کند. .sp از OpenVPN 2.7 به بعد کلیدواژه ویژه \fBDEFAULT\fP می‌تواند در رشته استفاده شود و با رمزهای پیش‌فرض جایگزین گردد. این می‌تواند برای افزودن یک رمز مجاز دیگر به فهرست رمزهای مجاز استفاده شود، مانند \fBDEFAULT:AES\-192\-CBC\fP برای استفاده از رمزهای پیش‌فرض و همچنین مجاز شمردن \fBAES\-192\-CBC\fP\&. .sp مذاکره رمز فقط در حالت کلاینت\-سرور فعال است. یعنی اگر \fB\-\-mode\fP روی \fBserver\fP تنظیم شده باشد (سمت سرور، با تعیین \fB\-\-server\fP اعمال می‌شود)، یا اگر \fB\-\-pull\fP مشخص شده باشد (سمت کلاینت، با تعیین \fB\-\-client\fP اعمال می‌شود). .sp اگر در طول مذاکره رمز، هیچ رمز مشترکی یافت نشود، اتصال قطع می‌شود. برای پشتیبانی از کلاینت‌های قدیمی/سرورهای قدیمی که از مذاکره رمز پشتیبانی نمی‌کنند، \fB\-\-data\-ciphers\-fallback\fP را ببینید\&. .sp اگر \fB\-\-compat\-mode\fP روی نسخه‌ای قدیمی‌تر از 2.5.0 تنظیم شده باشد، رمز مشخص‌شده توسط \fB\-\-cipher\fP در صورت عدم وجود، به \fB\-\-data\-ciphers\fP الحاق خواهد شد. .sp طول این فهرست پس از تبدیل به رمزهای OpenVPN به ۱۲۷ نویسه محدود شده است. .sp این گزینه در OpenVPN 2.4 به نام \fB\-\-ncp\-ciphers\fP شناخته می‌شد اما برای انعکاس دقیق‌تر معنای آن، در OpenVPN 2.5 به \fB\-\-data\-ciphers\fP تغییر نام یافت. .UNINDENT .INDENT 0.0 .TP .BI \-\-data\-ciphers\-fallback \ alg پیکربندی رمزنگاری (cipher) مورد استفاده به عنوان پشتیبان، در صورتی که نتوانیم تعیین کنیم همتا (peer) مایل به استفاده از کدام رمزنگاری است. .sp این گزینه فقط باید برای اتصال به همتاهایی لازم باشد که نسخه OpenVPN 2.3 یا نسخه‌های قدیمی‌تر را اجرا می‌کنند و با \fB\-\-enable\-small\fP پیکربندی شده‌اند (معمولاً در مسیریاب‌ها یا سایر دستگاه‌های تعبیه‌شده استفاده می‌شود). .TP .B \-\-allow\-deprecated\-insecure\-static\-crypto \fBمنسوخ شده\fP این گزینه اجازه استفاده از OpenVPN بدون TLS را می‌دهد. این گزینه منسوخ شده است و در OpenVPN 2.8 حذف خواهد شد. .TP .BI \-\-tran\-window \ n پنجره گذار \-\- کلید قدیمی ما می‌تواند به مدت این تعداد ثانیه پس از شروع مذاکره مجدد کلید جدید فعال بماند (پیش‌فرض \fB3600\fP ثانیه). این ویژگی امکان گذار روان از کلید قدیمی به جدید را فراهم می‌کند و توالی مذاکره مجدد کلید را از مسیر حیاتی ارسال داده‌های تونل حذف می‌کند. .TP .B \-\-force\-tls\-key\-material\-export این گزینه فقط در \-\-mode server در دسترس است و استفاده از Keying Material Exporters (RFC 5705) را برای کلاینت‌ها اجباری می‌کند. این می‌تواند برای شبیه‌سازی محیطی استفاده شود که در آن کتابخانه رمزنگاری دیگر از روش قدیمی‌تر برای تولید کلیدهای کانال داده پشتیبانی نمی‌کند. این گزینه به عنوان یک گزینه آزمایشی در نظر گرفته شده است و ممکن است در نسخه‌های آینده OpenVPN بدون اطلاع قبلی حذف شود. .UNINDENT .SS گزینه‌های کلاینت (Client Options) .sp گزینه‌های کلاینت هنگام اتصال به یک سرور OpenVPN استفاده می‌شوند که در پیکربندی آن از \fB\-\-server\fP، \fB\-\-server\-bridge\fP یا \fB\-\-mode server\fP استفاده شده است. .INDENT 0.0 .TP .B \-\-allow\-pull\-fqdn به کلاینت اجازه می‌دهد نام‌های DNS را (به‌جای محدود بودن به آدرس‌های IP) برای \fB\-\-ifconfig\fP، \fB\-\-route\fP و \fB\-\-route\-gateway\fP\& از سرور دریافت کند. .TP .B \-\-allow\-recursive\-routing هنگامی که این گزینه تنظیم شده باشد، OpenVPN بسته‌های ورودی tun را که مقصدی یکسان با میزبان دارند دور نمی‌اندازد (drop نمی‌کند). .TP .BI \-\-auth\-token \ token این گزینه‌ای نیست که مستقیماً در هیچ فایل پیکربندی استفاده شود، بلکه این گزینه از طریق یک اسکریپت \fB\-\-client\-connect\fP یا یک \fB\-\-plugin\fP که به فراخوانی‌های \fBOPENVPN_PLUGIN_CLIENT_CONNECT\fP یا \fBOPENVPN_PLUGIN_CLIENT_CONNECT_V2\fP متصل است ارسال (push) می‌شود. این گزینه امکان جایگزینی گذرواژه کلاینت با یک توکن احراز هویت را در طول چرخه حیات کلاینت OpenVPN فراهم می‌کند. .sp هر زمان که اتصال مجدداً مذاکره شود و اسکریپت \fB\-\-auth\-user\-pass\-verify\fP یا \fB\-\-plugin\fP با استفاده از قلاب \fBOPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY\fP فعال گردد، این توکن را به‌جای گذرواژه ارائه‌شده توسط کاربر منتقل می‌کند. توکن احراز هویت تنها با یک اتصال مجدد کامل قابل بازنشانی است که در آن سرور بتواند گزینه‌های جدید را به کلاینت ارسال کند. پس از تنظیم توکن احراز هویت، گذرواژه واردشده توسط کاربر هرگز حفظ نمی‌شود. اگر سمت سرور OpenVPN توکن احراز هویت را رد کند، کلاینت یک \fBAUTH_FAILED\fP دریافت کرده و ارتباط قطع می‌شود. .sp هدف از این کار، فعال‌سازی روش‌های احراز هویت دو مرحله‌ای مانند HOTP یا TOTP است تا بدون نیاز به دریافت کد OTP جدید در هر بار مذاکره مجدد اتصال استفاده شوند. کاربرد دیگر، ذخیره موقت داده‌های احراز هویت در سمت کلاینت بدون نیاز به ذخیره گذرواژه کاربر در حافظه در طول مدت نشست است. .sp برای استفاده از این ویژگی، اسکریپت \fB\-\-client\-connect\fP یا \fB\-\-plugin\fP باید عبارت .INDENT 7.0 .INDENT 3.5 .sp .EX push \(dqauth\-token UNIQUE_TOKEN_VALUE\(dq .EE .UNINDENT .UNINDENT .sp را در فایل/بافر داده‌های پیکربندی پویا قرار دهد. این کار باعث می‌شود سرور OpenVPN این مقدار را به کلاینت ارسال کند، که گذرواژه محلی را با \fBUNIQUE_TOKEN_VALUE\fP\& جایگزین می‌کند. .sp کلاینت‌های جدیدتر (+2.4.7) پس از یک احراز هویت ناموفق به روش گذرواژه اصلی بازمی‌گردند. کلاینت‌های قدیمی‌تر به استفاده از مقدار توکن ادامه داده و بر اساس \fB\-\-auth\-retry\fP عمل می‌کنند. .TP .BI \-\-auth\-token\-user \ base64username گزینه همراه برای \fB\-\-auth\-token\fP\&. این گزینه امکان بازنویسی نام کاربری مورد استفاده کلاینت هنگام احراز هویت مجدد با \fBauth\-token\fP\& را فراهم می‌کند. همچنین امکان استفاده از \fB\-\-auth\-token\fP را در ساختارهایی که معمولاً از نام کاربری و گذرواژه استفاده نمی‌کنند فراهم می‌سازد. .sp نام کاربری باید به صورت base64 کدگذاری شده باشد. .TP .B \-\-auth\-user\-pass احراز هویت با سرور با استفاده از نام کاربری/گذرواژه. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX auth\-user\-pass auth\-user\-pass up .EE .UNINDENT .UNINDENT .sp اگر \fBup\fP مشخص شده باشد، باید فایلی حاوی نام کاربری/گذرواژه در ۲ خط باشد یا پرچمی به نام \fBusername\-only\fP تا نشان دهد نباید گذرواژه‌ای درخواست شود. در حالت اول، اگر خط گذرواژه در فایل موجود نباشد، OpenVPN آن را درخواست خواهد کرد. .sp اگر \fBup\fP حذف شود، نام کاربری/گذرواژه از طریق کنسول درخواست خواهد شد. .sp این گزینه همچنین می‌تواند به صورت درون‌خطی قرار گیرد .INDENT 7.0 .INDENT 3.5 .sp .EX username [password] .EE .UNINDENT .UNINDENT .sp که در آن گذرواژه اختیاری است، و در صورت عدم وجود، از طریق کنسول درخواست می‌شود. .sp پرچم \fBusername\-only\fP برای استفاده با احراز هویت SSO در نظر گرفته شده است. در این حالت از کاربر نام کاربری خواسته می‌شود ولی گذرواژه خیر. به‌جای آن، یک گذرواژه ساختگی \fB[[BLANK]]\fP به صورت داخلی تولید شده و به سرور ارسال می‌شود. برای چگونگی تأثیر این گزینه بر اعلان نام کاربری/گذرواژه از طریق واسط مدیریتی، به management\-notes.txt مراجعه کنید. برای کنسول، این گزینه صرفاً اعلان درخواست گذرواژه را حذف می‌کند. .sp پرچم \fBusername\-only\fP نمی‌تواند همراه با تعبیه نام کاربری و/یا گذرواژه در فایل پیکربندی، یا هنگام خواندن آن‌ها از یک فایل خارجی استفاده شود. در چنین مواردی، اگر فقط نام کاربری مد نظر است و درخواستی برای گذرواژه لازم نیست، یک گذرواژه ساختگی مانند \(aqno_passsword\(aq نیز باید تعبیه شود. این پرچم همچنین با گزینه \fB\-\-static\-challenge\fP و پروتکل قدیمی \fBdynamic challenge\fP ناسازگار است. .sp پیکربندی سرور باید یک اسکریپت \fB\-\-auth\-user\-pass\-verify\fP را برای اعتبارسنجی نام کاربری/گذرواژه ارائه‌شده توسط کلاینت تعیین کند. .UNINDENT .INDENT 0.0 .TP .BI \-\-auth\-retry \ type نحوه پاسخ‌دهی OpenVPN به خطاهای اعتبارسنجی نام کاربری/گذرواژه را کنترل می‌کند، مانند پاسخ سمت کلاینت به پیام \fBAUTH_FAILED\fP از سوی سرور یا شکست در اعتبارسنجی گذرواژه کلید خصوصی. .sp معمولاً برای جلوگیری از مهلک (fatal) بودن خطاهای احراز هویت در سمت کلاینت و اجازه درخواست مجدد نام کاربری/گذرواژه در صورت بروز خطا استفاده می‌شود. .sp پیام \fBAUTH_FAILED\fP زمانی توسط سرور ایجاد می‌شود که کلاینت در احراز هویت \fB\-\-auth\-user\-pass\fP شکست بخورد، یا زمانی که اسکریپت سمت سرور \fB\-\-client\-connect\fP هنگام تلاش کلاینت برای اتصال، وضعیت خطا برگرداند. .sp \fBtype\fP می‌تواند یکی از موارد زیر باشد: .INDENT 7.0 .TP .B \fBnone\fP کلاینت با یک خطای مهلک خارج می‌شود (این حالت پیش‌فرض است). .TP .B \fBnointeract\fP کلاینت بدون درخواست مجدد برای نام کاربری/گذرواژه \fB\-\-auth\-user\-pass\fP اتصال را دوباره امتحان می‌کند. از این گزینه برای کلاینت‌های بدون ناظر (unattended) استفاده کنید. .TP .B \fBinteract\fP کلاینت قبل از تلاش مجدد برای برقراری اتصال، نام کاربری/گذرواژه \fB\-\-auth\-user\-pass\fP و/یا گذرواژه کلید خصوصی را دوباره درخواست می‌کند. .UNINDENT .sp توجه داشته باشید که با وجود اینکه این گزینه را نمی‌توان push کرد، می‌توان آن را از طریق رابط مدیریتی کنترل کرد. .TP .B \-\-client یک دستورالعمل کمکی برای ساده‌سازی پیکربندی حالت کلاینت در OpenVPN. این دستورالعمل معادل موارد زیر است: .INDENT 7.0 .INDENT 3.5 .sp .EX pull tls\-client .EE .UNINDENT .UNINDENT .TP .BI \-\-client\-nat \ args این گزینه کلاینتِ قابل push، یک قانون NAT یک‌به‌یک و بدون وضعیت (stateless) روی آدرس‌های بسته‌ها (نه درگاه‌ها) تنظیم می‌کند و در مواردی مفید است که مسیرها یا تنظیمات ifconfig ارسال‌شده (pushed) به کلاینت باعث تداخل در آدرس‌دهی IP شوند. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX client\-nat snat|dnat network netmask alias .EE .UNINDENT .UNINDENT .sp نمونه‌ها: .INDENT 7.0 .INDENT 3.5 .sp .EX client\-nat snat 192.168.0.0 255.255.0.0 10.64.0.0 client\-nat dnat 10.64.0.0 255.255.0.0 192.168.0.0 .EE .UNINDENT .UNINDENT .sp آرگومان‌های \fBnetwork\fP و \fBnetmask\fP (برای مثال \fB192.168.0.0 255.255.0.0\fP) دید محلی منبع را از دیدگاه کلاینت تعریف می‌کنند، در حالی که \fBalias\fP (برای مثال \fB10.64.0.0\fP) دید دوردست را از دیدگاه سرور با استفاده از همان netmask مشخص می‌کند. .sp برای منابع متعلق به کلاینت از \fBsnat\fP (یا NAT مبدأ) و برای منابع دوردست از \fBdnat\fP (یا NAT مقصد) استفاده کنید. .sp برای دریافت اطلاعات اشکال‌زدایی که تبدیل آدرس‌های مبدأ/مقصد در بسته‌ها را نشان می‌دهد، مقدار \fB\-\-verb 6\fP را تنظیم کنید. .TP .BI \-\-connect\-retry \ args به مدت \fBn\fP ثانیه بین تلاش‌های اتصال صبر می‌کند (پیش‌فرض \fB1\fP). تلاش‌های مکرر اتصال مجدد پس از ۵ بار تلاش برای هر remote، با دو برابر کردن زمان انتظار پس از هر تلاش ناموفق کُندتر می‌شوند. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX connect retry n connect retry n max .EE .UNINDENT .UNINDENT .sp اگر آرگومان اختیاری \fBmax\fP مشخص شود، حداکثر زمان انتظار بر حسب ثانیه به آن مقدار محدود می‌شود (پیش‌فرض \fB300\fP). .TP .BI \-\-connect\-retry\-max \ n \fBn\fP تعداد دفعاتی را مشخص می‌کند که هر مدخل \fB\-\-remote\fP یا \fB\fP امتحان می‌شود. تعیین \fBn\fP به صورت \fB1\fP هر مدخل را دقیقاً یک بار امتحان می‌کند. اتصال موفق این شمارنده را بازنشانی می‌کند (پیش‌فرض \fIunlimited\fP). .TP .BI \-\-connect\-timeout \ n به \fB\-\-server\-poll\-timeout\fP\& مراجعه کنید. .TP .BI \-\-dns \ args پیکربندی DNS کلاینت برای استفاده با اتصال. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX dns search\-domains domain [domain ...] dns server n address addr[:port] [addr[:port] ...] dns server n resolve\-domains domain [domain ...] dns server n dnssec yes|optional|no dns server n transport DoH|DoT|plain dns server n sni server\-name .EE .UNINDENT .UNINDENT .sp دستورالعمل \fB\-\-dns search\-domains\fP یک یا چند نام دامنه را دریافت می‌کند تا به عنوان پسوندهای دامنه DNS اضافه شوند. اگر این گزینه چندین بار در یک پیکربندی تکرار شود، دامنه‌ها ضمیمه می‌شوند؛ بنابراین مثلاً نام‌های دامنه ارسال‌شده توسط سرور موارد تعریف‌شده محلی را اصلاح و تکمیل می‌کنند. .sp دستورالعمل \fB\-\-dns server\fP برای پیکربندی سرور DNS به شماره \fBn\fP\& استفاده می‌شود. شناسه سرور \fBn\fP باید مقداری بین \-128 و 127 باشد. برای گزینه‌های DNS server ارسال‌شده (pushed)، این مقدار باید بین 0 و 127 باشد. شناسه سرور برای گروه‌بندی گزینه‌ها و همچنین مرتب‌سازی فهرست سرورهای DNS پیکربندی‌شده استفاده می‌شود؛ شماره‌های کمتر در ابتدا قرار می‌گیرند. سرورهای DNS ارسال‌شده به کلاینت، سرورهای DNS پیکربندی‌شده قبلی با همان شناسه را جایگزین می‌کنند. تنها گروه گزینه‌های مربوط به کمترین شناسه سرور اعمال می‌شود. .sp گزینه \fBaddress\fP آدرس(های) IPv4 و/یا IPv6 سرور DNS را پیکربندی می‌کند. حداکثر هشت آدرس برای هر سرور DNS قابل تعیین است. به صورت اختیاری می‌توان یک درگاه را پس از علامت دونقطه اضافه کرد. در صورت افزودن درگاه، آدرس‌های IPv6 باید داخل قلاب (براکت) قرار گیرند. .sp گزینه \fBresolve\-domains\fP یک یا چند دامنه DNS را برای تعریف یک پیکربندی split\-dns یا dns\-routing می‌گیرد که در آن فقط دامنه‌های مشخص‌شده توسط سرور تحلیل (resolve) می‌شوند. سیستم‌هایی که از پیکربندی دقیق و جزئی دامنه‌های DNS پشتیبانی نمی‌کنند، این تنظیم را نادیده خواهند گرفت. .sp گزینه \fBdnssec\fP برای پیکربندی اعتبارسنجی رکوردهای DNSSEC استفاده می‌شود. در حالی که عملکرد دقیق ممکن است برای تحلیل‌کننده‌ها (resolvers) در سیستم‌های مختلف متفاوت باشد، مقدار \fByes\fP احتمالاً اعتبارسنجی را اجباری می‌کند، \fBno\fP آن را غیرفعال می‌سازد، و \fBoptional\fP از آن به صورت فرصت‌طلبانه استفاده می‌کند. .sp گزینه \fBtransport\fP قابلیت DNS\-over\-HTTPS (\fBDoH\fP) یا DNS\-over\-TLS (\fBDoT\fP) را برای یک سرور DNS فعال می‌کند. گزینه \fBsni\fP می‌تواند همراه با آن‌ها برای مشخص کردن \fBserver\-name\fP جهت TLS server name indication به کار رود. .sp هر سرور باید حداقل یک آدرس پیکربندی‌شده داشته باشد تا پیکربندی معتبر باشد. تمام گزینه‌های دیگر را می‌توان نادیده گرفت و حذف کرد. .sp توجه داشته باشید که ممکن است همه گزینه‌ها روی تمام پلتفرم‌ها پشتیبانی نشوند. به محض پیاده‌سازی پشتیبانی برای سیستم‌های مختلف، اطلاعات مربوط به نحوه برخورد با گزینه‌های پشتیبانی‌نشده به اینجا اضافه خواهد شد. .sp گزینه \fB\-\-dns\fP در نهایت دستورالعمل \fB\-\-dhcp\-option\fP را منسوخ خواهد کرد. تا آن زمان، پیکربندی را در مکان‌هایی که \fB\-\-dhcp\-option\fP قرار می‌دهد جایگزین می‌کند، به طوری که \fB\-\-dns\fP بر \fB\-\-dhcp\-option\fP\& اولویت خواهد داشت. بنابراین، امروزه می‌توان از \fB\-\-dns\fP برای مهاجرت از \fB\-\-dhcp\-option\fP\& استفاده کرد. .sp فقط ویندوز: .INDENT 7.0 .IP 1. 3 اگر tap\-windows6 در حال استفاده باشد، سرورهای DNS به طور پیش‌فرض توسط DHCP تنظیم می‌شوند. در این حالت فقط \fB\-\-dns search\-domains\fP و \fB\-\-dns server n address ..\fP با کمترین مقدار \fBn\fP تفسیر می‌شوند. همه گزینه‌های دیگر \fB\-\-dns\fP نادیده گرفته می‌شوند. استفاده از درایور dco روش توصیه‌شده برای بهره‌مندی از این ویژگی‌های جدید است. .IP 2. 3 اگر \fB\-\-dns server n resolve\-domains\fP در حال استفاده باشد، آدرس‌های سرور DNS متناظر با \fBn\fP تنها در صورتی روی رابط تنظیم می‌شوند که \fBsearch\-domains\fP نیز مشخص شده باشد. در غیر این صورت این آدرس‌های DNS فقط برای قواعد NRPT جهت split\-DNS استفاده می‌شوند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-explicit\-exit\-notify \ n در حالت کلاینت UDP یا حالت نقطه\-به\-نقطه (point\-to\-point)، اگر تونل مجدداً راه‌اندازی شود یا فرآیند OpenVPN خارج شود، اعلان خروج را به سرور/همتا ارسال می‌کند. در حالت کلاینت، هنگام خروج/راه‌اندازی مجدد، این گزینه به سرور اطلاع می‌دهد تا به جای انتظار برای اتمام مهلت زمانی (timeout)، فوراً شیء نمونه کلاینت خود را ببندد. .sp اگر هر دو سرور و کلاینت از ارسال این پیام از طریق کانال کنترل پشتیبانی کنند، پیام به عنوان یک پیام کانال کنترل ارسال می‌شود. در غیر این صورت پیام به عنوان پیام کانال داده ارسال خواهد شد، که توسط همتاهای دارای تخلیه بار سخت‌افزاری (offloaded) کانال داده نادیده گرفته می‌شود. .sp پارامتر \fBn\fP (در صورت عدم وجود، پیش‌فرض \fB1\fP) حداکثر تعداد تلاش‌های کلاینت برای ارسال مجدد پیام اعلان خروج در حالت کانال داده را کنترل می‌کند. .sp در حالت سرور UDP، دستور کانال کنترل \fBRESTART\fP را به کلاینت‌های متصل ارسال می‌کند. پارامتر \fBn\fP (در صورت عدم وجود، پیش‌فرض \fB1\fP) رفتار کلاینت را کنترل می‌کند. با \fBn\fP = \fB1\fP کلاینت تلاش می‌کند مجدداً به همان سرور متصل شود، با \fBn\fP = \fB2\fP کلاینت به سرور بعدی می‌رود. .sp برنامه OpenVPN هیچ اعلان خروجی ارسال نخواهد کرد مگر اینکه این گزینه فعال باشد. .TP .BI \-\-inactive \ args باعث می‌شود OpenVPN پس از \fBn\fP ثانیه عدم فعالیت روی دستگاه TUN/TAP خارج شود. طول مدت عدم فعالیت از زمان آخرین بسته ورودی یا خروجی تونل محاسبه می‌شود. مقدار پیش‌فرض 0 ثانیه است که این ویژگی را غیرفعال می‌کند. .sp نحو‌های معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX inactive n inactive n bytes .EE .UNINDENT .UNINDENT .sp اگر پارامتر اختیاری \fBbytes\fP مشخص شود، در صورتی که در مدت \fBn\fP ثانیه کمتر از \fBbytes\fP ترافیک مجموع ورودی/خروجی روی دستگاه tun/tap تولید شود، خارج می‌شود. .sp در هر صورت، بسته‌های پینگ داخلی OpenVPN (که فقط پیام‌های keepalive هستند) و بسته‌های کنترل TLS به عنوان \(dqفعالیت\(dq در نظر گرفته نمی‌شوند و به عنوان ترافیک نیز شمارش نمی‌شوند، زیرا به صورت داخلی توسط OpenVPN استفاده شده و نشان‌دهنده فعالیت واقعی کاربر نیستند. .sp نکته: در FreeBSD همراه با DCO، به دلیل محدودیت‌های پلتفرم، پاراگراف قبلی صادق نیست. در آن حالت، سربار کپسوله‌سازی و بسته‌های keepalive شمارش می‌شوند؛ بنابراین استفاده از این ویژگی به مقدار \fBbytes\fP به اندازه کافی بزرگ نیاز دارد تا این مقادیر اضافی را به حساب آورد. .TP .BI \-\-proto\-force \ p هنگام پیمایش در نمایه‌های اتصال (connection profiles)، فقط نمایه‌هایی را در نظر می‌گیرد که از پروتکل \fBp\fP (\fBtcp\fP | \fBudp\fP) استفاده می‌کنند. .sp توجه داشته باشید که این گزینه مشخصاً فقط بر اساس پروتکل لایه انتقال، یعنی UDP یا TCP فیلتر می‌کند. این موضوع بر اینکه IPv4 یا IPv6 به عنوان پروتکل IP استفاده شود تاثیری ندارد. .sp به دلایل پیاده‌سازی، این گزینه پسوندهای \fB4\fP و \fB6\fP را هنگام تعیین پروتکل می‌پذیرد (یعنی \fBudp4\fP / \fBudp6\fP / \fBtcp4\fP / \fBtcp6\fP). با این حال، رفتار این‌ها همانند حالت بدون پسوند است و باید برای جلوگیری از سردرگمی از آن‌ها اجتناب شود. .TP .B \-\-pull این گزینه باید روی کلاینتی استفاده شود که به یک سرور چندکلاینتی متصل می‌شود. این گزینه به OpenVPN مشخص می‌کند که باید گزینه‌های ارائه‌شده (push شده) از سمت سرور را بپذیرد، به شرطی که بخشی از مجموعه مجاز گزینه‌های قابل ارائه باشند (توجه داشته باشید که گزینه \fB\-\-pull\fP توسط \fB\-\-client\fP به طور ضمنی فعال می‌شود). .sp به طور خاص، \fB\-\-pull\fP به سرور اجازه می‌دهد تا مسیرها (routes) را به کلاینت بفرستد، بنابراین در شرایطی که به سرور برای داشتن کنترل بر جدول مسیریابی کلاینت اعتماد ندارید، نباید از \fB\-\-pull\fP یا \fB\-\-client\fP استفاده کنید. .TP .BI \-\-pull\-filter \ args فیلتر کردن گزینه‌های ارسال شده از سرور به کلاینت، در سمت کلاینت. .sp نحو‌های معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX pull\-filter accept text pull\-filter ignore text pull\-filter reject text .EE .UNINDENT .UNINDENT .sp گزینه‌های دریافتی از سرور را در صورتی که گزینه با \fBtext\fP شروع شود فیلتر می‌کند. پرچم عملیاتی \fBaccept\fP به گزینه اجازه می‌دهد، \fBignore\fP آن را حذف می‌کند و \fBreject\fP یک خطا مشخص کرده و راه‌اندازی مجدد با سیگنال \fBSIGUSR1\fP را فعال می‌کند. فیلترها می‌توانند چندین بار مشخص شوند و هر فیلتر به ترتیبی که تعریف شده اعمال می‌شود. فیلتر کردن هر گزینه به محض یافتن تطابق متوقف خواهد شد. گزینه‌های تطبیق‌نیافته به طور پیش‌فرض پذیرفته می‌شوند. .sp مقایسه پیشوند برای تطبیق \fBtext\fP با گزینه دریافتی استفاده می‌شود، به طوری که .INDENT 7.0 .INDENT 3.5 .sp .EX pull\-filter ignore \(dqroute\(dq .EE .UNINDENT .UNINDENT .sp تمام گزینه‌های ارسال‌شده را که با \fBroute\fP شروع می‌شوند حذف می‌کند، که برای مثال شامل \fBroute\-gateway\fP نیز خواهد بود. برای گنجاندن فاصله‌ها، \fItext\fP را داخل گیومه قرار دهید. .INDENT 7.0 .INDENT 3.5 .sp .EX pull\-filter accept \(dqroute 192.168.1.\(dq pull\-filter ignore \(dqroute \(dq .EE .UNINDENT .UNINDENT .sp تمام مسیرهایی را که با \fB192.168.1\fP شروع نمی‌شوند حذف می‌کند. .sp \fIتوجه\fP داشته باشید که \fBreject\fP ممکن است باعث یک چرخه مکرر از شکست و تلاش مجدد برای اتصال شود، مگر اینکه چندین ریموت مشخص شده باشد و اتصال به ریموت بعدی با موفقیت انجام شود. برای نادیده گرفتن بی‌سر و صدای یک گزینه ارسال‌شده از سرور، از \fBignore\fP استفاده کنید. .sp \fIهشدار:\fP نمی‌توان به \fBpull\-filter\fP به عنوان یک اقدام امنیتی جهت محافظت در برابر گزینه‌های مخرب یا نامناسب ارائه‌شده توسط سرور اتکا کرد. به عنوان مثال، فیلتر می‌تواند با ارسال گزینه‌هایی با فاصله‌های اضافی بین کلمات یا سایر تغییرات در قالب‌بندی دور زده شود. .UNINDENT .INDENT 0.0 .TP .B \-\-push\-peer\-info ارسال اطلاعات اضافی درباره کارخواه به سرور. داده‌های زیر همیشه به سرور ارسال می‌شوند: .INDENT 7.0 .TP .B \fBIV_VER=\fP نگارش OpenVPN کارخواه .TP .B \fBIV_PLAT=[linux|solaris|openbsd|mac|netbsd|freebsd|win]\fP سکوی سیستم‌عامل کارخواه .TP .B \fBIV_PROTO\fP جزئیات افزونه‌های پروتکل که همتا پشتیبانی می‌کند. این متغیر یک میدان بیتی است و بیت‌های آن به شرح زیر تعریف می‌شوند: .INDENT 7.0 .IP \(bu 2 بیت ۰: رزرو شده، همیشه باید صفر باشد .IP \(bu 2 بیت ۱: همتا از سازوکار شناور peer\-id پشتیبانی می‌کند .IP \(bu 2 بیت ۲: کارخواه انتظار یک push\-reply دارد و سرور می‌تواند بدون منتظر ماندن برای دریافت push\-request، این پاسخ را ارسال کند. .IP \(bu 2 بیت ۳: کارخواه قادر به اشتقاق کلید با استفاده از صادرکننده محتوای کلید بر اساس RFC5705 است. .IP \(bu 2 بیت ۴: کارخواه قادر به پذیرش آرگومان‌های اضافی برای پیام \fBAUTH_PENDING\fP است. .IP \(bu 2 بیت ۵: کارخواه از انجام مذاکره قابلیت‌ها در حالت P2P پشتیبانی می‌کند .IP \(bu 2 بیت ۶: کارخواه قادر به تجزیه و دریافت گزینه ارسال‌شده \fB\-\-dns\fP است .IP \(bu 2 بیت ۷: کارخواه قادر به ارسال اعلان خروج از طریق کانال کنترلی با استفاده از پیام \fBEXIT\fP است. همچنین، کارخواه گزینه ارسال‌شده protocol\-flags را برای قابلیت EKM می‌پذیرد .IP \(bu 2 بیت ۸: کارخواه قادر به پذیرش پیام‌های \fBAUTH_FAILED,TEMP\fP است .IP \(bu 2 بیت ۹: کارخواه قادر به پشتیبانی از tls\-crypt پویا است .IP \(bu 2 بیت ۱۰: کارخواه قادر به پشتیبانی از کلیدهای data epoch است .UNINDENT .TP .B \fBIV_NCP=2\fP رمزهای قابل مذاکره، کارخواه از \fB\-\-cipher\fP ارسال‌شده توسط سرور پشتیبانی می‌کند؛ مقدار ۲ یا بیشتر نشان می‌دهد که کارخواه از \fIAES\-GCM\-128\fP و \fIAES\-GCM\-256\fP پشتیبانی می‌کند\&. متغیر IV_NCP به نفع \fBIV_CIPHERS\fP \fIمنسوخ شده است\fP\&. .TP .B \fBIV_CIPHERS=\fP کارخواه فهرست رمزهای پشتیبانی‌شده را که با گزینه \fB\-\-data\-ciphers\fP پیکربندی شده‌اند به سرور اعلام می‌کند. .TP .B \fBIV_MTU=\fP کارخواه پشتیبانی از MTU قابل‌ارسال و بیشینه MTU قابل‌پذیرش را اعلام می‌کند. .TP .B \fBIV_GUI_VER= \fP نگارش رابط کاربری در صورت در حال اجرا بودن، به عنوان مثال \fBde.blinkt.openvpn 0.5.47\fP برای برنامه اندروید. این مقدار می‌تواند توسط رابط کاربری/گرافیکی کارخواه با استفاده از \fB\-\-setenv\fP تنظیم شود\&. .TP .B \fBIV_SSO=[crtext,][openurl,][proxy_url]\fP روش‌های احراز هویت اضافی پشتیبانی‌شده توسط کارخواه. این مقدار می‌تواند توسط رابط کاربری/گرافیکی کارخواه با استفاده از \fB\-\-setenv\fP تنظیم شود\&. .UNINDENT .sp پرچم‌های زیر به این بستگی دارند که کدام قالب‌های فشرده‌سازی کامپایل شده‌اند و آیا فشرده‌سازی توسط گزینه‌ها مجاز است یا خیر. برای جزئیات بیشتر به بخش گزینه‌های پروتکل مراجعه کنید. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B \fBIV_LZO=1\fP در صورتی که کارخواه از فشرده‌سازی LZO پشتیبانی کند. .TP .B \fBIV_LZO_STUB=1\fP در صورتی که کارخواه با قابلیت LZO stub ساخته شده باشد. این مورد تنها زمانی ارسال می‌شود که \fBIV_LZO=1\fP ارسال نشده باشد. این بدان معناست که کارخواه می‌تواند با سروری که با \fB\-\-comp\-lzo no\fP پیکربندی شده ارتباط برقرار کند\&. .TP .B \fBIV_LZ4=1\fP and \fBIV_LZ4v2=1\fP در صورتی که کارخواه از فشرده‌سازی LZ4 پشتیبانی کند. .TP .B \fBIV_COMP_STUB=1\fP and \fBIV_COMP_STUBv2=1\fP در صورتی که کارخواه از فشرده‌سازی stub پشتیبانی کند. این بدان معناست که کارخواه می‌تواند با سروری که با \fB\-\-compress\fP پیکربندی شده ارتباط برقرار کند\&. .UNINDENT .UNINDENT .UNINDENT .sp هنگامی که \fB\-\-push\-peer\-info\fP فعال باشد، اطلاعات تکمیلی شامل داده‌های زیر خواهد بود: .INDENT 7.0 .TP .B \fBIV_HWADDR=\fP این مورد به عنوان یک شناسه یکتا و پایدار برای کارخواه در نظر گرفته شده است. مقدار رشته می‌تواند هر رشته اسکی (ASCII) خوانا تا ۶۴ بایت باشد. OpenVPN 2.x و برخی پیاده‌سازی‌های دیگر از نشانی MAC واسط کارخواه که برای دسترسی به دروازه پیش‌فرض استفاده می‌شود، استفاده می‌کنند. اگر این رشته توسط کارخواه تولید شود، باید در نشست‌های مستقل و ترجیحاً در نصب‌های مجدد و ارتقاها سازگار و حفظ شود. .TP .B \fBIV_SSL=\fP نگارش کتابخانه SSL مورد استفاده کارخواه، برای مثال \fBOpenSSL 1.0.2f 28 Jan 2016\fP\&. .TP .B \fBIV_PLAT_VER=x.y\fP نگارش سیستم‌عامل، برای مثال 6.1 برای Windows 7. این مقدار می‌تواند توسط رابط کاربری/گرافیکی کارخواه با استفاده از \fB\-\-setenv\fP تنظیم شود\&. در سیستم‌های Windows این مورد به صورت خودکار توسط خود openvpn تعیین می‌شود. در سایر سکوها، OpenVPN به طور پیش‌فرض اطلاعات بازگردانده شده توسط فراخوان سیستمی \fBuname()\fP در فیلد \fBrelease\fP را ارسال می‌کند که معمولاً نگارش هسته در حال اجرا است. با این حال، این مورد به شدت به سیستم وابسته است. .TP .B \fBUV_=\fP متغیرهای محیطی کارخواه که نام آن‌ها با \fBUV_\fP آغاز می‌شود. .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-remote \ args نام میزبان دوردست یا نشانی IP، درگاه و پروتکل. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX remote host remote host port remote host port proto .EE .UNINDENT .UNINDENT .sp آرگومان‌های \fBport\fP و \fBproto\fP اختیاری هستند. کلاینت OpenVPN تلاش خواهد کرد تا به یک سرور در \fBhost:port\fP متصل شود\&. آرگومان \fBproto\fP پروتکل مورد استفاده در هنگام اتصال به میزبان دوردست را مشخص می‌کند و می‌تواند \fBtcp\fP یا \fBudp\fP باشد\&. برای اجبار اتصالات IPv4 یا IPv6، یک پسوند \fB4\fP یا \fB6\fP اضافه کنید؛ مانند \fBudp4\fP / \fBudp6\fP / \fBtcp4\fP / \fBtcp6\fP\&. .sp در سمت کلاینت، می‌توان چندین گزینهٔ \fB\-\-remote\fP را برای افزونگی مشخص کرد که هر یک به یک سرور مجزای OpenVPN، به ترتیبی که در فهرست گزینه‌های \fB\-\-remote\fP آمده است، اشاره دارند. مشخص کردن چندین گزینهٔ \fB\-\-remote\fP برای این منظور، حالت خاصی از ویژگی عمومی‌تر نمایهٔ اتصال (connection\-profile) است. مستندات \fB\fP را در زیر ببینید. .sp در صورت شکست اتصال، کلاینت به سراغ میزبان بعدی در فهرست می‌رود. توجه داشته باشید که در هر زمان معین، کلاینت OpenVPN حداکثر به یک سرور متصل خواهد بود. .sp مثال‌ها: .INDENT 7.0 .INDENT 3.5 .sp .EX remote server1.example.net remote server1.example.net 1194 remote server2.example.net 1194 tcp .EE .UNINDENT .UNINDENT .INDENT 7.0 .TP .B \fIنکته:\fP از آنجا که UDP اتصال‌ناپذیر است، شکست اتصال توسط گزینه‌های \fB\-\-ping\fP و \fB\-\-ping\-restart\fP تعریف می‌شود. .sp همچنین، اگر از چندین گزینهٔ \fB\-\-remote\fP استفاده می‌کنید، و دسترسی‌های root را در کلاینت با \fB\-\-user\fP و/یا \fB\-\-group\fP کاهش می‌دهید، و کلاینت روی سیستم‌عاملی غیر از ویندوز اجرا می‌شود، در صورتی که کلاینت نیاز به تغییر سرور داشته باشد و آن سرور تنظیمات متفاوتی برای TUN/TAP یا مسیر (route) ارسال کند، ممکن است کلاینت دسترسی‌های لازم برای بستن و بازگشایی مجدد رابط TUN/TAP را نداشته باشد. این امر می‌تواند باعث خروج کلاینت با یک خطای مهلک شود. .UNINDENT .sp اگر \fB\-\-remote\fP مشخص نشده باشد، OpenVPN به بسته‌های رسیده از هر نشانی IP گوش می‌دهد، اما تا زمانی که تمام آزمون‌های احراز هویت را نگذرانند روی آن‌ها عملیاتی انجام نمی‌دهد. این الزام احراز هویت برای تمام همتایان بالقوه برقرار است، حتی آن‌هایی که از نشانی‌های IP شناخته‌شده و به‌ظاهر معتمد ارسال می‌شوند (جعل نشانی IP مبدأ در بسته‌های UDP بسیار آسان است). .sp هنگامی که در حالت TCP استفاده شود، \fB\-\-remote\fP به عنوان یک فیلتر عمل کرده و اتصال از هر میزبانی را که با \fBhost\fP مطابقت نداشته باشد، رد می‌کند\&. .sp اگر \fBhost\fP یک نام DNS باشد که به چندین نشانی IP ترجمه می‌شود، OpenVPN آن‌ها را به ترتیبی که getaddrinfo() سیستم ارائه می‌دهد امتحان خواهد کرد؛ بنابراین اولویت‌بندی و تصادفی‌سازی DNS توسط کتابخانهٔ سیستم انجام می‌شود. مگر اینکه نسخهٔ IP با مشخصهٔ پروتکل (پسوند 4/6) اجبار شده باشد، OpenVPN هر دو نشانی IPv4 و IPv6 را به ترتیبی که getaddrinfo() بازمی‌گرداند، امتحان خواهد کرد. .TP .B \-\-remote\-random هنگامی که چندین نشانی/درگاه \fB\-\-remote\fP مشخص شده باشد، یا اگر از نمایه‌های اتصال استفاده می‌شود، در ابتدا ترتیب فهرست را به عنوان نوعی راهکار پایه برای توازن بار، تصادفی می‌کند. .TP .B \-\-remote\-random\-hostname یک رشتهٔ تصادفی (۶ بایت، ۱۲ نویسهٔ شانزده‌شانزدهی/hex) به نام میزبان اضافه می‌کند تا از کش شدن DNS جلوگیری شود. برای مثال، \(dqfoo.bar.gov\(dq به \(dq.foo.bar.gov\(dq تغییر خواهد یافت. .TP .BI \-\-resolv\-retry \ n در صورت ناموفق بودن ترجمهٔ نام میزبان برای \fB\-\-remote\fP، قبل از اعلام شکست به مدت \fBn\fP ثانیه ترجمه را مجدداً تلاش می‌کند. .sp برای تلاش نامحدود، مقدار \fBn\fP را روی \fBinfinite\fP تنظیم کنید. .sp به طور پیش‌فرض، \fB\-\-resolv\-retry infinite\fP فعال است. می‌توانید با تنظیم n=0 آن را غیرفعال کنید. .TP .B \-\-preresolve ترجمهٔ نام‌های میزبان پیکربندی‌شده در \fB\-\-remote\fP، \fB\-\-local\fP، \fB\-\-http\-proxy\fP و \fB\-\-socks\-proxy\fP در زمان راه‌اندازی و قبل از برقراری اتصال. .sp نشانی‌های ترجمه‌شده کش شده و برای اتصالات مجدد دوباره استفاده می‌شوند، بنابراین OpenVPN پس از تلاش اولیه برای اتصال، این نام‌های میزبان را مجدداً ترجمه نخواهد کرد. این ویژگی می‌تواند به پیکربندی‌هایی که در آن‌ها هنگام غیرفعال بودن VPN، سرویس DNS در دسترس نیست کمک کند، اما ممکن است برای نام‌های پویای DNS یا در زمان رومینگ بین شبکه‌هایی که در دسترس بودن خانوادهٔ آدرس تغییر می‌کند (مانند DNS64/NAT64)، نتیجهٔ معکوس داشته باشد. .TP .B \-\-single\-session پس از اتصال اولیه به یک همتای دوردست، هرگونه اتصال جدید را ممنوع می‌کند. استفاده از این گزینه به این معنی است که یک همتای دوردست نمی‌تواند وصل شود، قطع شود و سپس دوباره متصل گردد. .sp اگر دیمن با یک سیگنال یا \fB\-\-ping\-restart\fP بازنشانی شود، اجازهٔ یک اتصال جدید را خواهد داد. .sp می‌توان از \fB\-\-single\-session\fP به همراه \fB\-\-ping\-exit\fP یا \fB\-\-inactive\fP برای ایجاد یک نشست پویای یکتا که پس از اتمام خارج می‌شود، استفاده کرد. .TP .BI \-\-server\-poll\-timeout \ n هنگام اتصال به سرور دوردست، قبل از امتحان کردن سرور بعدی، بیش از \fBn\fP ثانیه برای دریافت پاسخ منتظر نمی‌ماند. مقدار پیش‌فرض \fB120\fP است\&. این مهلت زمانی شامل زمان انتظار پروکسی و اتصال TCP نیز می‌شود. .UNINDENT .INDENT 0.0 .TP .BI \-\-static\-challenge \ args فعال‌سازی پروتکل چالش/پاسخ ایستا .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX static\-challenge text echo [format] .EE .UNINDENT .UNINDENT .sp متن چالش \fBtext\fP به کاربر نمایش داده می‌شود که توضیح می‌دهد چه اطلاعاتی درخواست شده است. پرچم \fBecho\fP مشخص می‌کند که آیا ورودی کاربر باید روی صفحه نمایش داده شود یا خیر. مقادیر معتبر \fBecho\fP برابر با \fB0\fP یا \fB1\fP هستند\&. گزینه اختیاری \fBformat\fP مشخص می‌کند که آیا گذرواژه و پاسخ باید با استفاده از پروتکل SCRV1 ترکیب شوند (\fBformat\fP = \fBscrv1\fP) یا فقط الحاق گردند (\fBformat\fP = \fBconcat\fP). پیش‌فرض \fBscrv1\fP است. .sp برای توضیحات درباره پروتکل چالش/پاسخ OpenVPN، پرونده management\-notes.txt را در توزیع OpenVPN ببینید. .UNINDENT .INDENT 0.0 .TP .BI \-\-http\-proxy \ args اتصال به میزبان دوردست از طریق یک پراکسی HTTP. این گزینه حداقل به یک آرگومان نشانی \fBserver\fP و \fBport\fP نیاز دارد. در صورت نیاز به Proxy\-Authenticate مربوط به HTTP، می‌توان نام یک پرونده \fBauthfile\fP حاوی نام‌کاربری و گذرواژه در ۲ خط را مشخص کرد، یا از \fBstdin\fP برای دریافت از کنسول استفاده نمود. همچنین محتوای آن می‌تواند با گزینه \fB\-\-http\-proxy\-user\-pass\fP در پرونده پیکربندی مشخص شود (بخش INLINE FILE SUPPORT را ببینید). .sp آخرین آرگومان اختیاری \fBauth\-method\fP است که باید یکی از \fBnone\fP، \fBbasic\fP یا \fBntlm2\fP باشد\&. .sp احراز هویت HTTP Digest نیز پشتیبانی می‌شود، اما فقط از طریق پرچم‌های \fBauto\fP یا \fBauto\-nct\fP (در زیر). این باید جایگزین آرگومان \fBauthfile\fP شود. .sp پرچم \fBauto\fP باعث می‌شود OpenVPN به صورت خودکار \fBauth\-method\fP را تشخیص دهد و در صورت نیاز، اعتبار نام‌کاربری/گذرواژه را از stdin یا رابط مدیریتی درخواست کند. این پرچم در OpenVPN نسخه ۲.۱ یا بالاتر وجود دارد. .sp پرچم \fBauto\-nct\fP (بدون احراز هویت متنی آشکار) به OpenVPN دستور می‌دهد که روش احراز هویت را به طور خودکار تعیین کند، اما پروتکل‌های احراز هویت ضعیف مانند HTTP Basic Authentication را رد کند. .sp نمونه‌ها: .INDENT 7.0 .INDENT 3.5 .sp .EX # no authentication http\-proxy proxy.example.net 3128 # basic authentication, load credentials from file http\-proxy proxy.example.net 3128 authfile.txt # basic authentication, ask user for credentials http\-proxy proxy.example.net 3128 stdin # NTLM authentication, load credentials from file http\-proxy proxy.example.net 3128 authfile.txt ntlm2 # determine which authentication is required, ask user for credentials http\-proxy proxy.example.net 3128 auto # determine which authentication is required, but reject basic http\-proxy proxy.example.net 3128 auto\-nct # determine which authentication is required, but set credentials http\-proxy proxy.example.net 3128 auto http\-proxy\-user\-pass authfile.txt # basic authentication, specify credentials inline http\-proxy proxy.example.net 3128 \(dq\(dq basic username password .EE .UNINDENT .UNINDENT .sp توجه داشته باشید که پشتیبانی از پراکسی‌های NTLMv1 در OpenVPN 2.7 حذف شد. اکنون \fBntlm\fP یک نام مستعار برای \fBntlm2\fP است؛ یعنی OpenVPN همیشه تلاش خواهد کرد از احراز هویت NTLMv2 استفاده کند. .TP .BI \-\-http\-proxy\-user\-pass \ userpass بازنویسی اطلاعات نام‌کاربری/گذرواژه برای \fB\-\-http\-proxy\fP\&. اگر به صورت یک گزینه درون‌خطی مشخص شود (بخش INLINE FILE SUPPORT را ببینید)، به عنوان نام‌کاربری/گذرواژه جدا شده با خط جدید تفسیر می‌شود. هنگامی که در خط فرمان مشخص شود مشابه آرگومان سوم \fB\-\-http\-proxy\fP به عنوان یک نام پرونده تفسیر می‌گردد\&. .sp نمونه: .INDENT 7.0 .INDENT 3.5 .sp .EX username password .EE .UNINDENT .UNINDENT .TP .BI \-\-http\-proxy\-option \ args تنظیم گزینه‌های گسترش‌یافته پراکسی HTTP. به یک گزینه \fBtype\fP به عنوان آرگومان و یک \fBparameter\fP اختیاری برای نوع نیاز دارد. برای تنظیم چندین گزینه تکرار شود. .INDENT 7.0 .TP .B \fBVERSION\fP \fBversion\fP تنظیم شماره نسخه HTTP روی \fBversion\fP (پیش‌فرض \fB1.0\fP). .TP .B \fBAGENT\fP \fBuser\-agent\fP تنظیم رشته \(dqUser\-Agent\(dq برای HTTP روی \fBuser\-agent\fP\&. .TP .B \fBCUSTOM\-HEADER\fP \fBname\fP \fBcontent\fP سرآیند سفارشی را با نام \fBname\fP و محتوای \fBcontent\fP به عنوان محتوای سرآیند سفارشی HTTP اضافه می‌کند. .UNINDENT .sp نمونه‌ها: .INDENT 7.0 .INDENT 3.5 .sp .EX http\-proxy\-option VERSION 1.1 http\-proxy\-option AGENT OpenVPN/2.4 http\-proxy\-option X\-Proxy\-Flag some\-flags .EE .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-socks\-proxy \ args اتصال به میزبان دوردست از طریق یک پروکسی Socks5. یک آرگومان ضروری \fBserver\fP مورد نیاز است. به‌صورت اختیاری یک \fBport\fP (پیش‌فرض \fB1080\fP) و \fBauthfile\fP می‌توانند داده شوند. پرونده \fBauthfile\fP فایلی حاوی نام‌کاربری و گذرواژه در ۲ خط است، یا \fBstdin\fP می‌تواند برای درخواست ورودی از کنسول استفاده شود. .UNINDENT .SS گزینه‌های سرور .sp از نسخه OpenVPN 2.0 به بعد، حالت سرور TCP/UDP چندکلاینتی (multi\-client) پشتیبانی می‌شود و می‌تواند با گزینه \fB\-\-mode server\fP فعال گردد. در حالت سرور، OpenVPN روی یک درگاه (port) واحد برای اتصالات ورودی کلاینت گوش فرا می‌دهد. تمامی اتصالات کلاینت از طریق یک رابط tun یا tap واحد مسیریابی خواهند شد. این حالت برای مقیاس‌پذیری طراحی شده است و باید بتواند صدها یا حتی هزاران کلاینت را روی سخت‌افزار به‌اندازه کافی سریع پشتیبانی کند. احراز هویت SSL/TLS باید در این حالت استفاده شود. .INDENT 0.0 .TP .BI \-\-auth\-gen\-token \ args یک توکن احراز هویت به کلاینت‌هایی که با موفقیت احراز هویت شده‌اند بازمی‌گرداند. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX auth\-gen\-token [lifetime] [renewal\-time] [external\-auth] .EE .UNINDENT .UNINDENT .sp پس از احراز هویت موفقیت‌آمیز نام‌کاربری/گذرواژه، سرور OpenVPN با این گزینه یک توکن احراز هویت موقت ایجاد کرده و آن را به کلاینت ارسال می‌کند (push). در مذاکرات مجدد (renegotiation) بعدی، کلاینت OpenVPN این توکن را به‌جای گذرواژه کاربر ارسال خواهد کرد. در سمت سرور، سرور احراز هویت توکن را به‌صورت داخلی انجام می‌دهد و هیچ احراز هویت اضافه‌ای را در برابر سازوکارهای احراز هویت خارجی نام‌کاربری/گذرواژه پیکربندی‌شده انجام نخواهد داد. .sp توکن‌های پیاده‌سازی‌شده با این سازوکار شامل یک برچسب زمانی اولیه و یک برچسب زمانی تمدید هستند و توسط HMAC ایمن‌سازی شده‌اند. .sp آرگومان \fBlifetime\fP مشخص می‌کند توکن تولیدشده برای چه مدت معتبر است. طول عمر بر حسب ثانیه تعریف می‌شود. اگر طول عمر تنظیم نشود یا روی \fB0\fP تنظیم گردد، توکن هرگز منقضی نخواهد شد. .sp اگر \fBrenewal\-time\fP تنظیم نشود، مقدار پیش‌فرض آن \fBreneg\-sec\fP\& خواهد بود. .sp توکن یا پس از رسیدن به \fBlifetime\fP پیکربندی‌شده توکن، یا پس از تمدید نشدن به مدت بیش از ۲ * \fBrenewal\-time\fP ثانیه منقضی خواهد شد. به کلاینت‌ها در هر مذاکره مجدد TLS توکن‌های تمدیدشده ارسال می‌شود. اگر \fBrenewal\-time\fP کمتر از \fBreneg\-sec\fP باشد، سرور در هر \fBreneweal\-time\fP ثانیه یک توکن احراز هویت موقت به‌روزرسانی‌شده ارسال خواهد کرد. این کار برای بی‌اعتبار کردن توکن در صورتی که کلاینت برای مدت‌زمان طولانی قطع شده باشد انجام می‌شود، در حالی که هم‌زمان طول عمر بسیار طولانی‌تری را برای توکن کلاینت‌های فعال فراهم می‌کند. .sp این ویژگی برای محیط‌هایی مفید است که برای استفاده از گذرواژه‌های یک‌بارمصرف (OTP) به‌عنوان بخشی از احراز هویت نام‌کاربری/گذرواژه پیکربندی شده‌اند و آن سازوکار احراز هویت از auth\-token پشتیبانی نمی‌کند. .sp هنگامی که کلیدواژه \fBexternal\-auth\fP وجود داشته باشد، روش احراز هویت عادی همیشه فراخوانی خواهد شد، حتی اگر auth\-token موفقیت‌آمیز باشد. به‌طور معمول در صورت موفقیت یا شکست اعتبارسنجی auth\-token، سایر روش‌های احراز هویت نادیده گرفته می‌شوند. .sp این گزینه این تصمیم را به روش‌های احراز هویت خارجی واگذار کرده و اعتبار حساب را بررسی کرده و سایر بررسی‌ها را انجام می‌دهد. .sp در این حالت، محیط دارای متغیر \fBsession_id\fP خواهد بود که شناسه نشست حاصل از auth\-gen\-token را در خود نگه می‌دارد. همچنین یک متغیر محیطی \fBsession_state\fP موجود است. این متغیر نشان می‌دهد که آیا auth\-token موفقیت‌آمیز بوده است یا خیر. این متغیر می‌تواند مقادیر زیر را داشته باشد: .INDENT 7.0 .TP .B \fBInitial\fP هیچ توکنی از کلاینت دریافت نشده است. .TP .B \fBAuthenticated\fP توکن معتبر است و منقضی نشده است. .TP .B \fBExpired\fP توکن معتبر است اما منقضی شده است. .TP .B \fBInvalid\fP توکن نامعتبر است (شکست در HMAC یا طول نادرست). .TP .B \fBAuthenticatedEmptyUser\fP / \fBExpiredEmptyUser\fP توکن با نام‌کاربری ارسال‌شده از سوی کلاینت معتبر نیست، اما اگر فرض کنیم که به‌جای آن یک نام‌کاربری خالی استفاده شده بود، معتبر (یا منقضی) می‌بود. این دو مورد یک راهکار موقت برای رفتار OpenVPN 3 هستند. اگر این راهکار موقت مورد نیاز نباشد، این دو مورد باید همانند \fBInvalid\fP\& مدیریت شوند. .UNINDENT .sp \fBهشدار:\fP از این ویژگی تنها در صورتی استفاده کنید که می‌خواهید روش احراز هویت شما در هر اعتبارسنجی فراخوانی شود. از آنجا که احراز هویت خارجی فراخوانی می‌شود، لازم است موفقیت یا شکست احراز هویت را نیز اعلام کند. اکیداً توصیه می‌شود در صورت auth\-token نامعتبر/منقضی‌شده (Invalid/Expired) با گزینه external\-auth، شکست احراز هویت بازگردانده شود مگر اینکه کلاینت بتواند به روش قابل‌قبول دیگری (مانند گواهی کلاینت) احراز هویت کند، در غیر این صورت بازگرداندن موفقیت منجر به دور زدن احراز هویت خواهد شد (مشابه بازگرداندن موفقیت برای گذرواژه نادرست از یک اسکریپت). در صورتی که توکن منقضی‌شده (Expired) پذیرفته شود، توکن شناسه نشست و زمان شروع توکن اصلی (منقضی‌شده) را حفظ خواهد کرد. .sp \fBنکته:\fP نام‌کاربری برای \fB\-\-auth\-gen\-token\fP می‌تواند توسط \fB\-\-override\-username\fP\& بازنویسی شود. در این حالت گزینه \fB\-\-auth\-token\-user\fP و یک توکن احراز هویت معتبر برای آن نام‌کاربری به‌جای نام‌کاربری اصلی که کلاینت با آن احراز هویت کرده بود نیز به کلاینت ارسال خواهد شد. .TP .BI \-\-auth\-gen\-token\-secret \ file پرونده‌ای را مشخص می‌کند که کلید مخفی مربوط به HMAC مورد استفاده در \fB\-\-auth\-gen\-token\fP را نگه می‌دارد. اگر \fBfile\fP وجود نداشته باشد، OpenVPN در هنگام راه‌اندازی یک کلید مخفی تصادفی تولید خواهد کرد. اگر auth\-token باید پس از راه‌اندازی مجدد سرور معتبر بماند، یا اگر کلاینت باید بتواند با auth\-token خود بین چندین سرور OpenVPN جابه‌جا شود، این پرونده باید استفاده شود. .UNINDENT .INDENT 0.0 .TP .B \-\-auth\-user\-pass\-optional اجازه برقراری اتصال به کلاینت‌هایی که نام‌کاربری/گذرواژه تعیین نمی‌کنند. به طور معمول، هنگامی که \fB\-\-auth\-user\-pass\-verify\fP یا \fB\-\-management\-client\-auth\fP مشخص شده باشند (یا یک ماژول پلاگین احراز هویت)، دیمن سرور OpenVPN از کلاینت‌های در حال اتصال می‌خواهد که نام‌کاربری و گذرواژه را مشخص کنند. این گزینه ارسال نام‌کاربری/گذرواژه توسط کلاینت‌ها را اختیاری می‌کند و مسئولیت پذیرش یا رد کلاینت بر اساس عوامل دیگر (مانند تنظیم فیلدهای گواهی X509) را به ماژول/اسکریپت احراز هویت تعریف‌شده توسط کاربر واگذار می‌نماید. هنگامی که از این گزینه استفاده شود و کلاینت متصل‌شونده نام‌کاربری/گذرواژه‌ای ارسال نکند، ماژول/اسکریپت احراز هویت تعریف‌شده توسط کاربر، نام‌کاربری و گذرواژه را به صورت رشته‌های خالی (\(dq\(dq) خواهد دید. ماژول/اسکریپت احراز هویت باید دارای منطقی برای تشخیص این وضعیت و پاسخ‌دهی مناسب باشد. .TP .B \-\-ccd\-exclusive الزام داشتن یک فایل \fB\-\-client\-config\-dir\fP برای کلاینت متصل‌شونده به عنوان شرط احراز هویت. .TP .BI \-\-client\-config\-dir \ dir تعیین دایرکتوری \fBdir\fP برای فایل‌های پیکربندی سفارشی کلاینت. پس از آنکه یک کلاینت متصل‌شونده احراز هویت شد، OpenVPN در این دایرکتوری به دنبال فایلی با همان نام common name گواهی X509 کلاینت می‌گردد. اگر فایل منطبقی وجود داشته باشد، برای گزینه‌های پیکربندی مخصوص کلاینت باز و تجزیه می‌شود. اگر فایل منطبقی پیدا نشود، OpenVPN در عوض تلاش می‌کند فایل پیش‌فرضی به نام \(dqDEFAULT\(dq را باز و تجزیه کند، که ممکن است ارائه شده باشد اما الزامی نیست. توجه داشته باشید که فایل‌های پیکربندی باید پس از رها کردن امتیازات root توسط فرایند OpenVPN قابل خواندن باشند. .sp این فایل می‌تواند یک آدرس IP ثابت را برای کلاینت مربوطه با استفاده از \fB\-\-ifconfig\-push\fP و همچنین زیرشبکه‌های ثابتی که متعلق به کلاینت هستند را با استفاده از \fB\-\-iroute\fP\& مشخص کند. .sp یکی از ویژگی‌های مفید این گزینه این است که اجازه می‌دهد فایل‌های پیکربندی کلاینت هنگام فعال بودن سرور، بدون نیاز به راه‌اندازی مجدد سرور، به راحتی ایجاد، ویرایش یا حذف شوند. .sp گزینه‌های زیر در زمینه مختص کلاینت مجاز هستند: \fB\-\-push\fP، \fB\-\-push\-reset\fP، \fB\-\-push\-remove\fP، \fB\-\-iroute\fP، \fB\-\-ifconfig\-push\fP، \fB\-\-vlan\-pvid\fP و \fB\-\-config\fP\&. .sp \fBنکته:\fP برنامه OpenVPN از CN دقیقاً همان‌طور که در گواهی نوشته شده استفاده می‌کند. اما از آنجا که این یک دسترسی به فایل است، سیستم‌فایل ممکن است تداخل ایجاد کند. نکته مهم این است که OpenVPN دو CN را که تنها در بزرگی و کوچکی حروف با هم تفاوت دارند به عنوان نام‌های متفاوت در نظر می‌گیرد، اما یک سیستم‌فایل حساس نبودن به حروف بزرگ و کوچک (مانند آنچه ممکن است در Windows یا macOS مشاهده کنید) با آن‌ها یکسان رفتار می‌کند. هنگامی که گواهی‌های خود را ایجاد می‌کنید مطمئن شوید که CNها به اندازه کافی متفاوت هستند تا مشکلی ایجاد نشود. هنگام اعتماد به یک CA خارجی، توجه داشته باشید که این یک بردار حمله بالقوه از طریق گواهی‌های مخرب ایجاد شده است که از این مسئله سوءاستفاده می‌کنند. .TP .B \-\-client\-to\-client از آنجا که حالت سرور OpenVPN چندین کلاینت را از طریق یک رابط tun یا tap تکی مدیریت می‌کند، عملاً یک مسیریاب است. پرچم \fB\-\-client\-to\-client\fP به OpenVPN می‌گوید ترافیک کلاینت-به-کلاینت را به صورت داخلی مسیریابی کند، به جای اینکه تمام ترافیک مبدأ کلاینت را به رابط TUN/TAP ارسال نماید. .sp هنگامی که این گزینه استفاده می‌شود، هر کلاینت سایر کلاینت‌هایی را که در حال حاضر متصل هستند \(dqخواهد دید\(dq. در غیر این صورت، هر کلاینت فقط سرور را خواهد دید. اگر می‌خواهید ترافیک تونل را با استفاده از قوانین سفارشی و به ازای هر کلاینت فایروال‌بندی کنید، از این گزینه استفاده نکنید. .sp لطفاً توجه داشته باشید که هنگام استفاده از data channel offload این گزینه هیچ اثری ندارد. بسته‌ها همیشه به رابط تونل ارسال شده و سپس بر اساس جدول مسیریابی سیستم مسیریابی می‌شوند. .TP .B \-\-disable غیرفعال کردن اتصال یک کلاینت خاص (بر اساس common name). از این گزینه برای غیرفعال کردن کلاینت به دلیل به خطر افتادن کلید یا گذرواژه استفاده نکنید. در عوض از یک CRL (فهرست ابطال گواهی) استفاده کنید (گزینه \fB\-\-crl\-verify\fP را ببینید). .sp این گزینه باید با یک نمونه کلاینت خاص مرتبط باشد، به این معنی که یا باید در یک فایل پیکربندی نمونه کلاینت با استفاده از \fB\-\-client\-config\-dir\fP مشخص شود یا به صورت پویا با استفاده از یک اسکریپت \fB\-\-client\-connect\fP تولید گردد. .TP .BI \-\-connect\-freq \ args اجازه به حداکثر \fBn\fP اتصال جدید در هر \fBsec\fP ثانیه از طرف کلاینت‌ها. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX connect\-freq n sec .EE .UNINDENT .UNINDENT .sp این گزینه برای مهار حملات DoS طراحی شده است که با استفاده از گواهی‌هایی که در نهایت احراز هویت آن‌ها با شکست مواجه می‌شود، سرور را با درخواست‌های اتصال غرق می‌کنند. .sp این محدودیت پس از \fB\-\-connect\-freq\-initial\fP اعمال می‌شود و فقط برای کلاینت‌هایی اعمال می‌گردد که مصافحه سه‌طرفه را کامل کرده‌اند یا کلاینت‌هایی که از \fB\-\-tls\-crypt\-v2\fP بدون پشتیبانی از کوکی (آرگومان \fBallow\-noncookie\fP برای \fB\-\-tls\-crypt\-v2\fP) استفاده می‌کنند. .sp با این حال، این یک راهکار ناقص است، زیرا در یک سناریوی واقعی DoS، ممکن است اتصالات مشروع نیز رد شوند. .sp برای بهترین محافظت در برابر حملات DoS در حالت سرور، از \fB\-\-proto udp\fP و \fB\-\-tls\-auth\fP یا \fB\-\-tls\-crypt\fP\& استفاده کنید. .TP .BI \-\-connect\-freq\-initial \ args (فقط UDP) اجازه به حداکثر \fBn\fP پاسخ بسته اتصال اولیه در هر \fBsec\fP ثانیه از سرور OpenVPN به کلاینت‌ها. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX connect\-freq\-initial n sec .EE .UNINDENT .UNINDENT .sp برنامه OpenVPN از نسخه 2.6 به بعد در پاسخ‌دهی به بسته‌های اتصال اولیه بسیار کارآمد عمل می‌کند. در صورت محدود نکردن پاسخ‌های اولیه، دیمن OpenVPN می‌تواند در حملات بازتابی مورد سوءاستفاده قرار گیرد. این گزینه برای محدود کردن نرخ پاسخ‌دهی OpenVPN به حملات اولیه طراحی شده است. .sp تلاش‌های اتصالی که مصافحه سه‌طرفه اولیه را تکمیل کنند، جزو این محدودیت محاسبه نخواهند شد. پیش‌فرض، اجازه به ۱۰۰ اتصال اولیه در هر ۱۰ ثانیه است. .UNINDENT .INDENT 0.0 .TP .B \-\-duplicate\-cn به چندین کلاینت با نام مشترک (common name) یکسان اجازه اتصال هم‌زمان می‌دهد. در صورت نبود این گزینه، OpenVPN با اتصال یک کلاینت جدید با همان نام مشترک، ارتباط کلاینت پیشین را قطع خواهد کرد. .TP .BI \-\-ifconfig\-pool \ args استخری از زیرشبکه‌ها را برای تخصیص پویا به کلاینت‌های متصل‌شونده، مشابه با یک کارگزار DHCP کنار می‌گذارد. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX ifconfig\-pool start\-IP end\-IP [netmask] .EE .UNINDENT .UNINDENT .sp برای تونل‌های نوع tun، به هر کلاینت یک زیرشبکه /30 اختصاص داده می‌شود (جهت سازگاری با کلاینت‌های ویندوز). برای تونل‌های نوع tap، نشانی‌های منفرد تخصیص می‌یابند، و پارامتر اختیاری \fBnetmask\fP نیز به کلاینت‌ها تحویل (push) داده می‌شود. .TP .BI \-\-ifconfig\-ipv6\-pool \ args یک استخر نشانی IPv6 را برای تخصیص پویا به کلاینت‌ها مشخص می‌کند. .sp آرگومان‌های معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX ifconfig\-ipv6\-pool ipv6addr/bits .EE .UNINDENT .UNINDENT .sp استخر از \fBipv6addr\fP شروع می‌شود و با آفست تعیین‌شده از ابتدای استخر IPv4 مطابقت دارد. اگر بخش میزبان نشانی IPv6 داده‌شده \fB0\fP باشد، استخر از \fBipv6addr\fP +1 شروع می‌شود. .TP .BI \-\-ifconfig\-pool\-persist \ args داده‌های ifconfig\-pool را در فواصل زمانی \fBseconds\fP (پیش‌فرض \fB600\fP)، و همچنین هنگام شروع و خاتمه برنامه، در \fBfile\fP ذخیره/بازیابی می‌کند. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX ifconfig\-pool\-persist file [seconds] .EE .UNINDENT .UNINDENT .sp هدف این گزینه، برقراری یک ارتباط بلندمدت بین کلاینت‌ها (مشخص‌شده با نام مشترک آن‌ها) و نشانی IP مجازی اختصاص‌یافته به آن‌ها از ifconfig\-pool است. حفظ یک ارتباط بلندمدت برای کلاینت‌ها مناسب است زیرا به آن‌ها امکان می‌دهد تا به‌طور مؤثر از گزینه \fB\-\-persist\-tun\fP استفاده کنند. .sp پارامتر \fBfile\fP یک پرونده متنی ASCII جداشده با کاما است، در قالب \fB,\fP\&. .sp اگر \fBseconds\fP = \fB0\fP باشد، با \fBfile\fP به‌صورت فقط‌خواندنی رفتار می‌شود. این حالت زمانی کاربرد دارد که بخواهید از \fBfile\fP به‌عنوان یک پرونده پیکربندی استفاده کنید. .sp توجه داشته باشید که ورودی‌های این پرونده توسط OpenVPN صرفاً بر اساس ارتباطات پیشین بین یک نام مشترک و نشانی IP، به‌صورت \fIپیشنهادی\fP در نظر گرفته می‌شوند. آن‌ها تضمین نمی‌کنند که نام مشترک داده‌شده همیشه همان نشانی IP مشخص‌شده را دریافت کند. در صورت نیاز به تخصیص تضمین‌شده، از \fB\-\-ifconfig\-push\fP استفاده کنید. .TP .BI \-\-ifconfig\-push \ args نقاط پایانی IP مجازی را برای تونل کلاینت ارسال (push) می‌کند، که تخصیص پویای \fB\-\-ifconfig\-pool\fP را لغو می‌نماید. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX ifconfig\-push local remote\-netmask [alias] .EE .UNINDENT .UNINDENT .sp پارامترهای \fBlocal\fP و \fBremote\-netmask\fP مطابق با دستورالعمل \fB\-\-ifconfig\fP تنظیم می‌شوند که می‌خواهید روی دستگاه کلاینت جهت پیکربندی انتهای دورست تونل اجرا شود. توجه داشته باشید که پارامترهای \fBlocal\fP و \fBremote\-netmask\fP از دیدگاه کلاینت هستند، نه سرور. آن‌ها می‌توانند به‌جای نشانی IP، نام‌های DNS باشند که در این صورت هنگام اتصال کلاینت، روی سرور برطرف (resolve) می‌شوند. .sp پارامتر اختیاری \fBalias\fP ممکن است در مواردی استفاده شود که NAT باعث ایجاد تفاوت بین دید کلاینت از نقطه پایانی محلی خود با دید سرور شود. در این حالت \fBlocal/remote\-netmask\fP به دید سرور اشاره دارد در حالی که \fBalias/remote\-netmask\fP به دید کلاینت اشاره خواهد کرد. .sp این گزینه باید با یک نمونه کلاینت مشخص مرتبط باشد، به این معنی که باید یا در یک پرونده پیکربندی نمونه کلاینت با استفاده از \fB\-\-client\-config\-dir\fP تعیین شود یا به‌طور پویا با استفاده از یک اسکریپت \fB\-\-client\-connect\fP تولید گردد. .sp همچنین به یاد داشته باشید که یک دستورالعمل \fB\-\-route\fP حاوی \fBlocal\fP را در پرونده پیکربندی اصلی OpenVPN بگنجانید، تا هسته بداند مسیر آن را به سمت رابط TUN/TAP سرور هدایت کند. .sp الگوریتم داخلی انتخاب نشانی IP کلاینت در OpenVPN به‌صورت زیر عمل می‌کند: .INDENT 7.0 .IP 1. 3 استفاده از پرونده تولیدشده با اسکریپت \fB\-\-client\-connect\fP برای IP ایستا (انتخاب نخست). .IP 2. 3 استفاده از پرونده \fB\-\-client\-config\-dir\fP برای IP ایستا (انتخاب بعدی). .IP 3. 3 استفاده از تخصیص \fB\-\-ifconfig\-pool\fP برای IP پویا (انتخاب پایانی). .UNINDENT .sp هنگامی که DCO فعال باشد و IP در شبکه مشخص‌شده توسط \fB\-\-ifconfig\fP قرار نداشته باشد، OpenVPN یک مسیر میزبان /32 برای نشانی IP مربوط به \fBlocal\fP نصب خواهد کرد. .UNINDENT .INDENT 0.0 .TP .BI \-\-ifconfig\-ipv6\-push \ args برای پیکربندی ایستای رابط IPv6 به ازای هر کلاینت در \fB\-\-client\-config\-dir\fP، جهت اطلاعات بیشتر به \fB\-\-client\-config\-dir\fP و \fB\-\-ifconfig\-push\fP مراجعه کنید. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX ifconfig\-ipv6\-push ipv6addr/bits ipv6remote .EE .UNINDENT .UNINDENT .sp هنگامی که DCO فعال است و نشانی IP در شبکه مشخص‌شده توسط \fB\-\-ifconfig\-ipv6\fP قرار ندارد، OpenVPN یک مسیر میزبان /128 برای نشانی IP \fBipv6addr\fP نصب خواهد کرد. .UNINDENT .INDENT 0.0 .TP .B \-\-multihome [same\-interface] یک کارساز UDP چندمقصدی (multi\-homed) را پیکربندی می‌کند. این گزینه زمانی نیاز است که یک کارساز بیش از یک نشانی IP دارد (مانند چند رابط یا نشانی‌های IP ثانویه)، و از \fB\-\-local\fP برای اجبار اتصال تنها به یک نشانی خاص استفاده نمی‌کند. این گزینه چند جست‌وجوی اضافی به مسیر بسته اضافه می‌کند تا اطمینان حاصل شود بسته‌های پاسخ UDP همیشه از نشانی‌ای ارسال می‌شوند که کلاینت با آن گفتگو می‌کند. این ویژگی در تمام پلتفرم‌ها پشتیبانی نمی‌شود و پردازش بیشتری می‌افزاید، بنابراین به‌طور پیش‌فرض فعال نیست. .INDENT 7.0 .TP .B \fIنکات:\fP .INDENT 7.0 .IP \(bu 2 این گزینه تنها برای کارسازهای UDP مرتبط است. .IP \(bu 2 از نسخه 2.7.0 به بعد، OpenVPN رابط ورودی بسته را نادیده گرفته و انتخاب رابط خروجی را به سازوکارهای عادی مسیریابی/سیاست سیستم‌عامل واگذار می‌کند (\(dqset ipi_ifindex=0\(dq). .IP \(bu 2 اگر پرچم \fBsame\-interface\fP اضافه شود، OpenVPN شناسه (index) رابط ورودی را در شناسه رابط خروجی کپی کرده و تلاش می‌کند بسته را از همان رابطی که وارد شده به بیرون بفرستد (= بازگرداندن رفتار پیشین OpenVPN). اگر هیچ مسیر قابل استفاده‌ای در آن رابط وجود نداشته باشد، این کار ممکن است کار نکند. .IP \(bu 2 سیستم‌های BSD* برای IPv4 از یک API متفاوت استفاده می‌کنند که در هر صورت شناسه رابط را ارائه نمی‌دهد (IP_RECVDSTADDR)، بنابراین تفاوت در آنجا تنها برای IPv6 اعمال می‌شود. .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-iroute \ args یک مسیر داخلی به یک کلاینت خاص ایجاد می‌کند. پارامتر \fBnetmask\fP، در صورت حذف شدن، به صورت پیش‌فرض \fB255.255.255.255\fP خواهد بود. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX iroute network [netmask] .EE .UNINDENT .UNINDENT .sp این دستورالعمل می‌تواند برای مسیریابی یک زیرشبکه ثابت از کارساز به یک کلاینت خاص، فارغ از اینکه کلاینت از کجا متصل می‌شود، استفاده شود. به یاد داشته باشید که باید مسیر را به جدول مسیریابی سیستم نیز اضافه کنید (مانند استفاده از دستورالعمل \fB\-\-route\fP). دلیل نیاز به دو مسیر این است که دستورالعمل \fB\-\-route\fP بسته را از هسته به OpenVPN هدایت می‌کند. پس از ورود به OpenVPN، دستورالعمل \fB\-\-iroute\fP آن را به کلاینت خاص هدایت می‌نماید. .sp با این حال، هنگام استفاده از DCO، دستورالعمل \fB\-\-iroute\fP معمولاً برای DCO جهت پیکربندی کامل جدول مسیریابی کافی است. دستورالعمل اضافی \fB\-\-route\fP تنها زمانی لازم است که رفتار مورد انتظار، مسیریابی ترافیک یک شبکه خاص به رابط VPN باشد حتی زمانی که کلاینت مربوطه متصل نیست (سپس ترافیک دور ریخته خواهد شد). .sp این گزینه باید یا در یک پرونده پیکربندی نمونه کلاینت با استفاده از \fB\-\-client\-config\-dir\fP مشخص شود، یا به صورت پویا با استفاده از یک اسکریپت \fB\-\-client\-connect\fP تولید گردد. .sp دستورالعمل \fB\-\-iroute\fP همچنین تعامل مهمی با \fB\-\-push \(dqroute ...\(dq\fP دارد. \fB\-\-iroute\fP اساساً زیرشبکه‌ای را تعریف می‌کند که متعلق به یک کلاینت خاص است (ما این کلاینت را \fIA\fP می‌نامیم). اگر می‌خواهید کلاینت‌های دیگر بتوانند به زیرشبکه \fIA\fP دسترسی پیدا کنند، می‌توانید از \fB\-\-push \(dqroute ...\(dq\fP همراه با \fB\-\-client\-to\-client\fP برای اعمال این کار استفاده کنید. برای اینکه تمام کلاینت‌ها زیرشبکه \fIA\fP را ببینند، OpenVPN باید این مسیر را به تمام کلاینت‌ها به جز \fIA\fP ارسال (push) کند، زیرا زیرشبکه از قبل متعلق به \fIA\fP است. OpenVPN این کار را با ارسال نکردن مسیر به کلاینتی که با یکی از irouteهای آن کلاینت مطابقت دارد انجام می‌دهد. .TP .BI \-\-iroute\-ipv6 \ args برای پیکربندی مسیر ایستای IPv6 به ازای هر کلاینت در \fB\-\-client\-config\-dir\fP، جهت جزئیات بیشتر درباره نحوه راه‌اندازی و استفاده از آن و چگونگی تعامل \fB\-\-iroute\fP و \fB\-\-route\fP، به \fB\-\-iroute\fP مراجعه کنید. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX iroute\-ipv6 ipv6addr/bits .EE .UNINDENT .UNINDENT .TP .BI \-\-max\-clients \ n کارساز را به حداکثر \fBn\fP کلاینت هم‌زمان محدود می‌کند. پیش‌فرض 1024 است. .TP .BI \-\-max\-routes\-per\-client \ n حداکثر \fBn\fP مسیر داخلی را به ازای هر کلاینت مجاز می‌داند (پیش‌فرض \fB256\fP). این مورد برای کمک به مهار حملات DoS طراحی شده است که در آن یک کلاینت احراز هویت شده کارساز را با بسته‌هایی که به نظر می‌رسد از چندین نشانی MAC منحصر‌به‌فرد می‌آیند غرق (flood) می‌کند و کارساز را مجبور می‌سازد تا با گسترش جدول مسیریابی داخلی خود، حافظه مجازی را به اتمام برساند. این دستورالعمل می‌تواند در یک پرونده \fB\-\-client\-config\-dir\fP استفاده شود یا توسط یک اسکریپت \fB\-\-client\-connect\fP به‌طور خودکار تولید شود تا مقدار سراسری را برای یک کلاینت خاص بازنویسی کند. .sp توجه داشته باشید که این دستورالعمل بر جدول مسیریابی داخلی OpenVPN تأثیر می‌گذارد، نه جدول مسیریابی هسته. .UNINDENT .INDENT 0.0 .TP .BI \-\-override\-username \ username نام کاربری یک اتصال را به نام کاربری مشخص‌شده تغییر می‌دهد. این نام کاربری توسط \fB\-\-auth\-gen\-token\fP نیز استفاده خواهد شد. با این حال، نام کاربری جایگزین‌شده تنها \fIپس از\fP خوانده شدن \fB\-\-client\-config\-dir\fP و اجرای اسکریپت‌های \fB\-\-auth\-user\-pass\-verify\fP و \fB\-\-client\-connect\fP اعمال می‌شود. .sp همچنین \fB\-\-username\-as\-common\-name\fP از نام کاربری ارائه‌شده توسط کلاینت به عنوان common\-name استفاده خواهد کرد. توصیه می‌شود در صورت استفاده از گزینهٔ \fB\-\-username\-as\-common\-name\fP از به‌کارگیری گزینهٔ \fB\-\-override\-username\fP خودداری کنید. .sp نام کاربری تغییریافته در خروجی وضعیت و همچنین توسط گزینهٔ \fB\-\-auth\-gen\-token\fP دریافت خواهد شد. همچنین در صورت فعال بودن \fB\-\-auth\-gen\-token\fP، با استفاده از \fB\-\-auth\-token\-user\fP به کلاینت ارسال (push) می‌شود. .sp به صورت داخلی در تمام مذاکرات مجدد بعدی، نام کاربری ارائه‌شده توسط کلاینت با نام کاربری ارائه‌شده توسط \fB\-\-override\-username\fP جایگزین خواهد شد. اگر کلاینت به نام کاربری دیگری تغییر یابد که هم با نام کاربری اولیه و هم با نام کاربری جایگزین‌شده متفاوت باشد، کلاینت رد خواهد شد. .sp هنگام استفاده از \fB\-\-override\-username\fP و گزینه‌های مرتبط، باید دقت ویژه‌ای به خرج داد تا هر دو نام کاربری اولیهٔ کلاینت و نام کاربری جایگزین‌شده به درستی مدیریت شوند تا از دور زدن احراز هویت/مجوزدهی جلوگیری شود. .sp این گزینه عمدتاً برای مواردی در نظر گرفته شده است که از گواهی‌ها و احراز هویت چندعاملی استفاده می‌کنند و بنابراین نام کاربری‌ای که بتوان برای \fB\-\-auth\-gen\-token\fP استفاده کرد ارائه نمی‌دهند، تا امکان تعیین نام کاربری در این سناریوها فراهم شود. .sp اگر دستورالعمل \fB\-\-auth\-token\fP توسط اسکریپت/پلاگین دیگری یا رابط مدیریتی ارسال می‌شود، تولید و ارسال \fB\-\-auth\-token\-user\fP را نیز مد نظر قرار دهید. .TP .BI \-\-port\-share \ args اشتراک‌گذاری پورت TCP برنامهٔ OpenVPN با سرویسی دیگر .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX port\-share host port [dir] .EE .UNINDENT .UNINDENT .sp هنگام اجرا در حالت کارساز TCP، پورت OpenVPN را با برنامهٔ دیگری مانند یک کارساز HTTPS به اشتراک می‌گذارد. اگر OpenVPN اتصالی به پورت خود را تشخیص دهد که از پروتکلی غیر از پروتکل OpenVPN استفاده می‌کند، اتصال را به کارساز در \fBhost\fP:\fBport\fP پروکسی می‌کند. در حال حاضر فقط برای کار با HTTP/HTTPS طراحی شده است، هرچند از نظر تئوری گسترش آن به پروتکل‌های دیگر مانند ssh امکان‌پذیر است. .sp آرگومان \fBdir\fP یک دایرکتوری اختیاری را مشخص می‌کند که در آن برای هر اتصال پروکسی، یک پروندهٔ موقت با نام N شامل محتوای C به صورت پویا ایجاد می‌شود؛ که در آن C مقدار IP:port مبدأ اتصال کلاینت و N مقدار IP:port مبدأ اتصال به دریافت‌کنندهٔ پروکسی است. این دایرکتوری می‌تواند توسط دریافت‌کنندهٔ پروکسی به عنوان یک واژه‌نامه برای تشخیص مبدأ اتصال استفاده شود. هر پروندهٔ ایجادشده پس از قطع اتصال پروکسی‌شده، به طور خودکار حذف خواهد شد. .sp در Windows پیاده‌سازی نشده است. .TP .BI \-\-push \ option ارسال یک گزینه از پروندهٔ پیکربندی به کلاینت جهت اجرای از راه دور. توجه داشته باشید که \fBoption\fP باید داخل گیومه دوتایی (\fB\(dq\(dq\fP) قرار گیرد. کلاینت باید در پروندهٔ پیکربندی خود \fB\-\-pull\fP را مشخص کند. مجموعه گزینه‌هایی که می‌توان ارسال کرد هم از نظر امکان‌پذیری و هم از نظر امنیتی محدود است. برخی گزینه‌ها مانند مواردی که اسکریپت اجرا می‌کنند ممنوع هستند، زیرا عملاً به یک کارساز نفوذ‌یافته اجازه می‌دهند کد دلخواه را روی کلاینت اجرا کند. گزینه‌های دیگر مانند پارامترهای TLS یا MTU قابل ارسال نیستند، زیرا کلاینت باید پیش از برقراری اتصال با کارساز از آن‌ها مطلع باشد. .sp این فهرستی جزئی از گزینه‌هایی است که در حال حاضر قابل ارسال هستند: \fB\-\-route\fP، \fB\-\-route\-gateway\fP، \fB\-\-route\-delay\fP، \fB\-\-redirect\-gateway\fP، \fB\-\-ip\-win32\fP، \fB\-\-dhcp\-option\fP، \fB\-\-dns\fP، \fB\-\-inactive\fP، \fB\-\-ping\fP، \fB\-\-ping\-exit\fP، \fB\-\-ping\-restart\fP، \fB\-\-setenv\fP، \fB\-\-auth\-token\fP، \fB\-\-persist\-tun\fP، \fB\-\-echo\fP، \fB\-\-comp\-lzo\fP، \fB\-\-socket\-flags\fP، \fB\-\-sndbuf\fP، \fB\-\-rcvbuf\fP، \fB\-\-session\-timeout\fP .sp نکته: استفاده از \fB\-\-push\fP نیازمند اجرای OpenVPN در حالت \fB\-\-mode server\fP (یا استفاده از یکی از دستورالعمل‌های کمکی \fB\-\-server\fP یا \fB\-\-server\-bridge\fP) است. .TP .BI \-\-push\-remove \ opt حذف انتخابی تمام گزینه‌های \fB\-\-push\fP منطبق با \(dqopt\(dq از فهرست گزینه‌های یک کلاینت. مقدار \fBopt\fP به عنوان یک زیررشته با کل رشتهٔ گزینهٔ ارسالی به کلاینت تطبیق داده می‌شود؛ بنابراین \fB\-\-push\-remove route\fP تمام دستورات \fB\-\-push route ...\fP و \fB\-\-push route\-ipv6 ...\fP را حذف خواهد کرد، در حالی که \fB\-\-push\-remove \(dqroute\-ipv6 2001:\(dq\fP تنها مسیرهای IPv6 مربوط به شبکه‌های \fB2001:...\fP را حذف می‌کند. .sp گزینهٔ \fB\-\-push\-remove\fP تنها می‌تواند در بافت مخصوص کلاینت، مانند یک پرونده در \fB\-\-client\-config\-dir\fP، یا اسکریپت یا پلاگین \fB\-\-client\-connect\fP استفاده شود \- مشابه \fB\-\-push\-reset\fP، اما انتخابی‌تر. .sp \fIنکته\fP: برای \fIتغییر\fP یک گزینه، می‌توان از \fB\-\-push\-remove\fP برای حذف مقدار قبلی استفاده کرد و سپس گزینهٔ \fB\-\-push\fP جدیدی با مقدار تازه افزود. .sp \fIنکته ۲\fP: به دلیل جزئیات پیاده‌سازی، \(aqifconfig\(aq و \(aqifconfig\-ipv6\(aq تنها با تطابق دقیق روی نام گزینه قابل حذف هستند (\fBpush\-remove ifconfig\fP)؛ هیچ تطابق زیررشته‌ای و هیچ تطابقی بر اساس آرگومان آدرس IPv4/IPv6 امکان‌پذیر نیست. .TP .B \-\-push\-reset عدم به ارث بردن فهرست push سراسری برای یک نمونه کلاینت خاص. این گزینه را در یک بافت مخصوص کلاینت، مانند یک پروندهٔ پیکربندی \fB\-\-client\-config\-dir\fP مشخص کنید. این گزینه، گزینه‌های \fB\-\-push\fP را در سطح پروندهٔ پیکربندی سراسری نادیده می‌گیرد. .sp \fIنکته\fP: گزینهٔ \fB\-\-push\-reset\fP بسیار فراگیر است: تقریباً تمام گزینه‌ها را از فهرست گزینه‌های ارسالی حذف می‌کند. در بسیاری از موارد، برخی از این گزینه‌ها باید بعداً دوباره پیکربندی شوند \- به ویژه، \fB\-\-topology subnet\fP و \fB\-\-route\-gateway\fP از دست خواهند رفت و این امر در بسیاری از موارد پیکربندی کلاینت را مختل می‌کند. بنابراین، برای اکثر اهداف، \fB\-\-push\-remove\fP برای حذف انتخابی گزینه‌های push برای کلاینت‌های مجزا مناسب‌تر است. .UNINDENT .INDENT 0.0 .TP .BI \-\-server \ args یک دستورالعمل کمکی طراحی‌شده برای ساده‌سازی پیکربندی حالت سرور OpenVPN. این دستورالعمل یک سرور OpenVPN را راه‌اندازی می‌کند که نشانی‌ها را از شبکه/ماسک‌شبکه داده‌شده به کلاینت‌ها اختصاص می‌دهد. خود سرور نشانی \fB\&.1\fP شبکه داده‌شده را برای استفاده به‌عنون نقطه پایانی سمت سرور رابط محلی TUN/TAP برمی‌دارد. اگر پرچم اختیاری \fBnopool\fP داده شود، هیچ استخر نشانی IP پویایی برای کلاینت‌های VPN آماده نخواهد شد. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX server network netmask [nopool] .EE .UNINDENT .UNINDENT .sp برای نمونه، \fB\-\-server 10.8.0.0 255.255.255.0\fP به صورت زیر بسط می‌یابد: .INDENT 7.0 .INDENT 3.5 .sp .EX mode server tls\-server push \(dqtopology [topology]\(dq if dev tun AND (topology == net30 OR topology == p2p): ifconfig 10.8.0.1 10.8.0.2 if !nopool: ifconfig\-pool 10.8.0.4 10.8.0.251 route 10.8.0.0 255.255.255.0 if client\-to\-client: push \(dqroute 10.8.0.0 255.255.255.0\(dq else if topology == net30: push \(dqroute 10.8.0.1\(dq if dev tap OR (dev tun AND topology == subnet): ifconfig 10.8.0.1 255.255.255.0 if !nopool: ifconfig\-pool 10.8.0.2 10.8.0.253 255.255.255.0 push \(dqroute\-gateway 10.8.0.1\(dq if route\-gateway unset: route\-gateway 10.8.0.2 .EE .UNINDENT .UNINDENT .sp در صورتی که از پل‌زدن اترنت استفاده می‌کنید، از \fB\-\-server\fP استفاده نکنید. به جای آن از \fB\-\-server\-bridge\fP استفاده کنید. .TP .BI \-\-server\-bridge \ args یک دستورالعمل کمکی مشابه \fB\-\-server\fP که برای ساده‌سازی پیکربندی حالت سرور OpenVPN در پیکربندی‌های پل‌زدن اترنت طراحی شده است. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX server\-bridge gateway netmask pool\-start\-IP pool\-end\-IP server\-bridge [nogw] .EE .UNINDENT .UNINDENT .sp اگر \fB\-\-server\-bridge\fP بدون هیچ پارامتری استفاده شود، حالت پراکسی DHCP را فعال می‌کند که در آن کلاینت‌های OpenVPN متصل‌شونده یک نشانی IP برای آداپتور TAP خود از سرور DHCP فعال در LAN سمت سرور OpenVPN دریافت می‌کنند. توجه داشته باشید که تنها کلاینت‌هایی که از اتصال یک کلاینت DHCP به آداپتور TAP پشتیبانی می‌کنند (مانند Windows) می‌توانند این حالت را پشتیبانی کنند. پرچم اختیاری \fBnogw\fP (پیشرفته) مشخص می‌کند که اطلاعات دروازه نباید به کلاینت ارسال شود. .sp برای پیکربندی پل‌زدن اترنت، ابتدا باید از قابلیت پل‌زدن سیستم‌عامل خود برای پل‌زدن رابط TAP با رابط کارت شبکه اترنت استفاده کنید. برای نمونه، در لینوکس این کار با ابزار \fBbrctl\fP انجام می‌شود، و در Windows XP در Network Connections Panel با انتخاب آداپتورهای اترنت و TAP و کلیک راست روی \(dqBridge Connections\(dq انجام می‌گیرد. .sp سپس باید به‌صورت دستی IP/netmask را روی رابط پل تنظیم کنید. پارامترهای \fBgateway\fP و \fBnetmask\fP در \fB\-\-server\-bridge\fP را می‌توان روی IP/netmask رابط پل، یا IP/netmask دروازه/مسیریاب پیش‌فرض در زیرشبکه پل‌شده تنظیم کرد. .sp در نهایت، یک محدوده IP را در زیرشبکه پل‌شده، که با \fBpool\-start\-IP\fP و \fBpool\-end\-IP\fP مشخص می‌شود، برای OpenVPN کنار بگذارید تا به کلاینت‌های متصل‌شونده اختصاص دهد. .sp برای نمونه، \fBserver\-bridge 10.8.0.4 255.255.255.0 10.8.0.128 10.8.0.254\fP به صورت زیر بسط می‌یابد: .INDENT 7.0 .INDENT 3.5 .sp .EX mode server tls\-server ifconfig\-pool 10.8.0.128 10.8.0.254 255.255.255.0 push \(dqroute\-gateway 10.8.0.4\(dq .EE .UNINDENT .UNINDENT .sp در نمونه‌ای دیگر، \fB\-\-server\-bridge\fP (بدون پارامتر) به صورت زیر بسط می‌یابد: .INDENT 7.0 .INDENT 3.5 .sp .EX mode server tls\-server push \(dqroute\-gateway dhcp\(dq .EE .UNINDENT .UNINDENT .sp یا \fB\-\-server\-bridge nogw\fP به صورت زیر بسط می‌یابد: .INDENT 7.0 .INDENT 3.5 .sp .EX mode server tls\-server .EE .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-server\-ipv6 \ args تابع راحتی برای فعال‌سازی هم‌زمان تعدادی از گزینه‌های مربوط به IPv6، از جمله \fB\-\-ifconfig\-ipv6\fP، \fB\-\-ifconfig\-ipv6\-pool\fP و \fB\-\-push tun\-ipv6\fP\&. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX server\-ipv6 ipv6addr/bits .EE .UNINDENT .UNINDENT .sp ارسال دستورالعمل \fB\-\-tun\-ipv6\fP برای کلاینت‌های قدیمی‌تری انجام می‌شود که در پیکربندی خود به یک \fB\-\-tun\-ipv6\fP صریح نیاز دارند. .TP .BI \-\-stale\-routes\-check \ args حذف مسیرهایی که برای \fBn\fP ثانیه فعالیتی نداشته‌اند (یعنی زمان فرسودگی). این بررسی هر \fBt\fP ثانیه (یعنی بازه زمانی بررسی) اجرا می‌شود. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX stale\-routes\-check n [t] .EE .UNINDENT .UNINDENT .sp اگر \fBt\fP مشخص نشده باشد، مقدار پیش‌فرض آن \fBn\fP خواهد بود\&. .sp تنها مسیرهایی که به‌صورت پویا یاد گرفته شده‌اند مشمول این بررسی هستند. مسیرهای اضافه‌شده از طریق پیکربندی، مانند مدخل‌های \fB\-\-iroute\fP و آدرس ifconfig ارسال‌شده به کلاینت، هرگز توسط آن حذف نمی‌شوند؛ آنها تنها هنگامی که اتصال کلاینت قطع شود حذف می‌گردند. .sp این گزینه به کوچک نگه‌داشتن جدول مسیریابی پویا کمک می‌کند. همچنین \fB\-\-max\-routes\-per\-client\fP را ببینید. .TP .B \-\-username\-as\-common\-name استفاده از نام کاربری احراز هویت‌شده به‌جای common\-name برگرفته از گواهی کلاینت به‌عنوان common\-name. نیاز دارد که شکلی از اعتبارسنجی \fB\-\-auth\-user\-pass\fP فعال باشد. از آنجا که جایگزینی پس از اعتبارسنجی \fB\-\-auth\-user\-pass\fP رخ می‌دهد، اسکریپت یا پلاگین اعتبارسنجی همچنان common\-name را از گواهی دریافت خواهد کرد. .sp متغیر محیطی common_name که به اسکریپت‌ها و پلاگین‌های فراخوانی‌شده پس از احراز هویت (مانند اسکریپت client\-connect) ارسال می‌شود و نام پرونده‌های پردازش‌شده در دایرکتوری client\-config با نام کاربری مطابقت خواهند داشت. .TP .BI \-\-verify\-client\-cert \ mode مشخص می‌کند که آیا کلاینت ملزم به ارائه یک گواهی معتبر است یا خیر. .sp گزینه‌های ممکن برای \fBmode\fP عبارتند از: .INDENT 7.0 .TP .B \fBnone\fP گواهی کلاینت الزامی نیست. کلاینت تنها باید با استفاده از نام کاربری/گذرواژه احراز هویت شود. توجه داشته باشید که استفاده از این دستورالعمل امنیت کمتری نسبت به الزام گواهی برای تمام کلاینت‌ها دارد. .sp اگر از این دستورالعمل استفاده کنید، تمام مسئولیت احراز هویت بر عهده اسکریپت \fB\-\-auth\-user\-pass\-verify\fP شما خواهد بود، بنابراین در نظر داشته باشید که اشکالات موجود در اسکریپت شما می‌تواند امنیت VPN شما را به خطر بیندازد. .sp گزینه \fB\-\-verify\-client\-cert none\fP از نظر عملکردی معادل \fB\-\-client\-cert\-not\-required\fP است\&. .TP .B \fBoptional\fP کلاینت ممکن است یک گواهی ارائه دهد اما ملزم به انجام این کار نیست. هنگام استفاده از این دستورالعمل، باید از یک اسکریپت \fB\-\-auth\-user\-pass\-verify\fP نیز استفاده کنید تا مطمئن شوید که کلاینت‌ها با استفاده از یک گواهی، یک نام کاربری و گذرواژه، یا احتمالاً هر دو احراز هویت می‌شوند. .sp مجدداً، تمام مسئولیت احراز هویت بر عهده اسکریپت \fB\-\-auth\-user\-pass\-verify\fP شما خواهد بود، بنابراین به خاطر داشته باشید که اشکالات موجود در اسکریپت شما می‌تواند به طور بالقوه امنیت VPN شما را به خطر بیندازد. .TP .B \fBrequire\fP این گزینه پیش‌فرض است. کلاینت ملزم به ارائه یک گواهی است، در غیر این صورت دسترسی به VPN رد می‌شود. .UNINDENT .sp اگر از این دستورالعمل استفاده نکنید (یا از \fB\-\-verify\-client\-cert require\fP استفاده کنید) اما یک اسکریپت \fB\-\-auth\-user\-pass\-verify\fP نیز مشخص نمایید، آنگاه OpenVPN احراز هویت دوگانه انجام خواهد داد. برای اینکه کلاینت احراز هویت شده و در VPN پذیرفته شود، باید هم اعتبارسنجی گواهی کلاینت و هم اسکریپت \fB\-\-auth\-user\-pass\-verify\fP موفقیت‌آمیز باشند. .TP .B \-\-vlan\-tagging گزینه فقط مخصوص سرور. نمونه سرور OpenVPN را به یک سوئیچ تبدیل می‌کند که بر اساس IEEE 802.1Q از برچسب‌گذاری VLAN پشتیبانی می‌کند. .sp دستگاه TAP سرور و هر یک از کلاینت‌های متصل به عنوان یک درگاه سوئیچ در نظر گرفته می‌شوند. تمام درگاه‌های کلاینت در حالت بدون برچسب (untagged) هستند و دستگاه TAP سرور بسته به تنظیم \fB\-\-vlan\-accept\fP، دارای برچسب VLAN، بدون برچسب یا پذیرنده هر دو است. .sp فریم‌های اترنت همراه با تگ پیشوند 802.1Q به اصطلاح \(dqtagged\(dq نامیده می‌شوند. اگر فیلد شناسه VLAN (یا VID) در چنین تگی غیر صفر باشد، فریم \(dqVLAN\-tagged\(dq نامیده می‌شود. اگر VID صفر باشد، اما فیلد Priority Control Point (یا PCP) غیر صفر باشد، فریم \(dqprio\-tagged\(dq نامیده می‌شود. اگر هیچ تگ 802.1Q وجود نداشته باشد، فریم \(dquntagged\(dq است. .sp با استفاده از گزینه \fB\-\-vlan\-pvid v\fP به ازای هر کلاینت (گزینه \-\-client\-config\-dir را ببینید)، هر درگاه می‌تواند به یک VID مشخص مرتبط شود. بسته‌ها تنها می‌توانند بین درگاه‌هایی که VID یکسانی دارند بازفرستاده شوند. بنابراین، کلاینت‌های دارای VIDهای متفاوت کاملاً از یکدیگر جدا هستند، حتی اگر \fB\-\-client\-to\-client\fP فعال باشد. .sp فیلتر کردن بسته‌ها درون سرور OpenVPN انجام می‌شود. کلاینت‌ها نباید هیچ‌گونه پیکربندی برچسب‌گذاری VLAN اعمال کرده باشند. .sp گزینه \fB\-\-vlan\-tagging\fP به‌طور پیش‌فرض غیرفعال است. هنگامی که غیرفعال باشد، OpenVPN هر فریم اترنتی را می‌پذیرد و هیچ پردازش خاصی برای بسته‌های دارای برچسب VLAN انجام نمی‌دهد. .sp این گزینه تنها در حالت \fB\-\-dev tap mode\fP قابل فعال‌سازی است\&. .UNINDENT .INDENT 0.0 .TP .BI \-\-vlan\-accept \ args سیاست برچسب‌گذاری VLAN را برای دستگاه TAP سرور پیکربندی می‌کند. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX vlan\-accept all|tagged|untagged .EE .UNINDENT .UNINDENT .sp حالت‌های زیر در دسترس هستند: .INDENT 7.0 .TP .B \fBtagged\fP تنها فریم‌های دارای برچسب VLAN را می‌پذیرد. تنها بسته‌های دارای برچسب VLAN پذیرفته می‌شوند، در حالی که بسته‌های بدون برچسب یا دارای برچسب اولویت هنگام ورود به دستگاه TAP سرور دور انداخته می‌شوند. .TP .B \fBuntagged\fP تنها فریم‌های بدون برچسب و دارای برچسب اولویت را می‌پذیرد. بسته‌های دارای برچسب VLAN پذیرفته نمی‌شوند، در حالی که بسته‌های بدون برچسب یا دارای برچسب اولویت که وارد دستگاه TAP سرور می‌شوند، با مقدار پیکربندی‌شده برای تنظیم سراسری \fB\-\-vlan\-pvid\fP برچسب‌گذاری می‌شوند. .TP .B \fBall\fP (پیش‌فرض) همه فریم‌ها را می‌پذیرد. همه بسته‌ها پذیرفته شده و سپس به ترتیب مانند حالت‌های untagged یا tagged با آن‌ها رفتار می‌شود. .TP .B \fINote\fP: برخی سازندگان از درگاه‌های سوییچ فعال در حالت \fBtagged\fP با عنوان \(dqtrunk ports\(dq و درگاه‌های سوییچ فعال در حالت \fBuntagged\fP با عنوان \(dqaccess ports\(dq یاد می‌کنند. .UNINDENT .sp بسته‌های هدایت‌شده از کلاینت‌ها به سرور، با PVID کلاینت مبدا دارای برچسب VLAN می‌شوند، مگر اینکه VID با مقدار سراسری \fB\-\-vlan\-pvid\fP مطابقت داشته باشد که در این صورت برچسب حذف می‌شود. .sp اگر هیچ \fIPVID\fP مقداری برای یک کلاینت خاص پیکربندی نشده باشد (نگاه کنید به \-\-vlan\-pvid)، بسته‌ها به‌طور پیش‌فرض با ۱ برچسب‌گذاری می‌شوند. .TP .BI \-\-vlan\-pvid \ v مشخص می‌کند یک \(dqport\(dq با کدام شناسه VLAN مرتبط است. تنها زمانی معتبر است که \fB\-\-vlan\-tagging\fP مشخص شده باشد. .sp در زمینه کلاینت، این تنظیم مشخص می‌کند کلاینت با کدام شناسه VLAN مرتبط است. در زمینه سراسری، شناسه VLAN دستگاه TAP سرور تنظیم می‌شود. مورد دوم تنها برای حالت‌های \fB\-\-vlan\-accept untagged\fP و \fB\-\-vlan\-accept all\fP معنا دارد. .sp مقادیر معتبر برای \fBv\fP از \fB1\fP تا \fB4094\fP است\&. مقدار سراسری به‌طور پیش‌فرض \fB1\fP است\&. اگر هیچ \fB\-\-vlan\-pvid\fP در زمینه کلاینت مشخص نشده باشد، مقدار سراسری به ارث برده می‌شود. .sp در برخی پیاده‌سازی‌های سوییچ، از \fIPVID\fP با عنوان \(dqNative VLAN\(dq نیز یاد می‌شود. .UNINDENT .SS گزینه‌های رمزنگاری .SS اطلاعات کتابخانه SSL .INDENT 0.0 .TP .B \-\-show\-ciphers (مستقل) نمایش تمام الگوریتم‌های رمز برای استفاده با گزینه \fB\-\-cipher\fP. .TP .B \-\-show\-digests (مستقل) نمایش تمام الگوریتم‌های خلاصه پیام برای استفاده با گزینه \fB\-\-auth\fP. .TP .B \-\-show\-tls (مستقل) نمایش تمام رمزهای TLS پشتیبانی‌شده توسط کتابخانه رمزنگاری. OpenVPN از TLS برای امن‌سازی کانال کنترل استفاده می‌کند، که از طریق آن کلیدهای استفاده‌شده برای محافظت از ترافیک واقعی VPN تبادل می‌شوند. رمزهای TLS از بالاترین اولویت (امن‌ترین) به پایین‌ترین مرتب خواهند شد. .sp توجه داشته باشید که کارکرد واقعی یک مجموعه رمز در این فهرست به پیکربندی خاص هر دو طرف بستگی دارد (مثلاً هر دو طرف باید از رمز پشتیبانی کنند، و در صورت استفاده از گواهی RSA یک مجموعه رمز ECDSA کار نخواهد کرد، و غیره). .TP .B \-\-show\-engines (مستقل) نمایش موتورهای شتاب‌دهنده رمزنگاری سخت‌افزاری فعلی که توسط کتابخانه OpenSSL پشتیبانی می‌شوند. .TP .B \-\-show\-groups (مستقل) نمایش تمام منحنی‌ها/گروه‌های بیضوی موجود برای استفاده با گزینه‌های \fB\-\-ecdh\-curve\fP و \fBtls\-groups\fP. .UNINDENT .SS تولید داده‌های کلید .INDENT 0.0 .TP .BI \-\-genkey \ args (مستقل) تولید یک کلید برای استفاده از نوع keytype. اگر keyfile مشخص نشود یا خالی رها شود، کلید در stdout چاپ می‌شود. برای انواع مختلف keytype بخش‌های زیر را ببینید. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX \-\-genkey keytype keyfile .EE .UNINDENT .UNINDENT .sp آرگومان‌های معتبر keytype عبارتند از: .sp \fBsecret\fP کلیدهای سکرت مشترک استاندارد OpenVPN .sp \fBtls\-crypt\fP نام مستعار برای \fBsecret\fP .sp \fBtls\-auth\fP نام مستعار برای \fBsecret\fP .sp \fBauth\-token\fP کلید مورد استفاده برای \fB\-\-auth\-gen\-token\-key\fP .sp \fBtls\-crypt\-v2\-server\fP کلید سرور TLS Crypt v2 .sp \fBtls\-crypt\-v2\-client\fP کلید کلاینت TLS Crypt v2 .sp نمونه‌ها: .INDENT 7.0 .INDENT 3.5 .sp .EX $ openvpn \-\-genkey secret shared.key $ openvpn \-\-genkey tls\-crypt shared.key $ openvpn \-\-genkey tls\-auth shared.key $ openvpn \-\-genkey tls\-crypt\-v2\-server v2crypt\-server.key $ openvpn \-\-tls\-crypt\-v2 v2crypt\-server.key \-\-genkey tls\-crypt\-v2\-client v2crypt\-client\-1.key .EE .UNINDENT .UNINDENT .INDENT 7.0 .IP \(bu 2 تولید \fIShared Secret Keys\fP تولید یک سکرت مشترک، برای استفاده با گزینه‌های \fB\-\-tls\-auth\fP یا \fB\-\-tls\-crypt\fP. .sp نحو: .INDENT 2.0 .INDENT 3.5 .sp .EX $ openvpn \-\-genkey tls\-crypt|tls\-auth keyfile .EE .UNINDENT .UNINDENT .sp کلید در \fBkeyfile\fP ذخیره می‌شود\&. هر دو حالت (\fBtls\-crypt\fP و \fBtls\-auth\fP) یک نوع کلید تولید می‌کنند. این نام‌های مستعار برای راحتی اضافه شده‌اند. .sp این پرونده باید از طریق یک کانال امن از پیش موجود مانند \fBscp\fP(1) با طرف مقابل به اشتراک گذاشته شود. .IP \(bu 2 تولید \fITLS Crypt v2 Server key\fP یک کلید \fB\-\-tls\-crypt\-v2\fP را برای استفاده توسط سرور OpenVPN تولید می‌کند. کلید در \fBkeyfile\fP ذخیره می‌شود\&. .sp نحو: .INDENT 2.0 .INDENT 3.5 .sp .EX \-\-genkey tls\-crypt\-v2\-server keyfile .EE .UNINDENT .UNINDENT .IP \(bu 2 تولید \fITLS Crypt v2 Client key\fP یک کلید \-\-tls\-crypt\-v2 برای استفاده توسط کلاینت‌های OpenVPN تولید می‌کند. کلید در \fBkeyfile\fP ذخیره می‌شود\&. .sp نحو .INDENT 2.0 .INDENT 3.5 .sp .EX \-\-genkey tls\-crypt\-v2\-client keyfile [metadata] .EE .UNINDENT .UNINDENT .sp در صورت ارائه، \fBmetadata\fP مشخص‌شده را در کلید کلاینت بسته‌بندی‌شده قرار می‌دهد. این متادیتا باید در قالب کدگذاری‌شده با base64 ارائه شود. متادیتا باید حداکثر ۷۳۳ بایت باشد (۹۸۰ نویسه در base64، البته توجه داشته باشید که ۹۸۰ نویسه base64 می‌تواند بیش از ۷۳۳ بایت را کدگذاری کند). .sp اگر متادیتایی ارائه نشود، OpenVPN از یک برچسب زمانی یونیکس ۶۴ بیتی به نمایندگی از زمان فعلی در UTC، کدگذاری‌شده به ترتیب شبکه، به‌عنوان متادیتا برای کلید تولیدشده استفاده خواهد کرد. .sp یک کلید کلاینت tls\-crypt\-v2 با استفاده از یک کلید سرور بسته‌بندی می‌شود. بنابراین برای تولید کلید کلاینت، کاربر باید کلید سرور را با استفاده از گزینه \fB\-\-tls\-crypt\-v2\fP ارائه دهد. .sp سرورها می‌توانند از \fB\-\-tls\-crypt\-v2\-verify\fP برای مشخص کردن یک دستور اعتبارسنجی متادیتا استفاده کنند. .IP \(bu 2 تولید \fIAuthentication Token key\fP یک سکرت جدید تولید می‌کند که می‌تواند با \fB\-\-auth\-gen\-token\-secret\fP استفاده شود. .sp نحو: .INDENT 2.0 .INDENT 3.5 .sp .EX \-\-genkey auth\-token [keyfile] .EE .UNINDENT .UNINDENT .INDENT 2.0 .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .INDENT 7.0 .INDENT 2.0 .TP .B \fIنکته:\fP این پرونده باید برای سرور محرمانه باقی بماند، زیرا هر کسی که به این پرونده دسترسی داشته باشد می‌تواند توکن‌های احراز هویتی تولید کند که سرور OpenVPN آن‌ها را معتبر خواهد شناخت. .UNINDENT .UNINDENT .UNINDENT .SS مذاکره مجدد کانال داده .sp هنگام اجرای OpenVPN در حالت کلاینت/سرور، کانال داده از یک کلید رمزنگاری زودگذر جداگانه استفاده می‌کند که در فواصل زمانی منظم تعویض می‌شود. .INDENT 0.0 .TP .BI \-\-reneg\-bytes \ n مذاکره مجدد کلید کانال داده پس از ارسال یا دریافت \fBn\fP بایت (به‌طور پیش‌فرض با یک استثنا غیرفعال است، به زیر نگاه کنید). OpenVPN اجازه می‌دهد طول عمر یک کلید بر حسب تعداد بایت‌های رمزگذاری/رمزگشایی‌شده، تعداد بسته‌ها یا تعداد ثانیه‌ها مشخص شود. در صورت برآورده شدن هر یک از این سه معیار توسط هر یک از طرفین ارتباط، مذاکره مجدد کلید اجباری خواهد شد. .sp در صورت استفاده از سایفرهایی با اندازه بلوک رمز کمتر از ۱۲۸ بیت، \fB\-\-reneg\-bytes\fP به‌طور پیش‌فرض روی 64MB تنظیم می‌شود، مگر اینکه صریحاً با تعیین مقدار \fB0\fP غیرفعال شود؛ اما این کار \fBبه‌شدت نهی می‌شود\fP زیرا برای ایجاد محافظت در برابر بردار حمله SWEET32 طراحی شده است. برای اطلاعات بیشتر گزینه \fB\-\-cipher\fP را ببینید. .sp هنگامی که تخلیه بار کانال داده (DCO) فعال باشد، این گزینه نادیده گرفته می‌شود. DCO از آستانه‌های مذاکره مجدد قابل‌پیکربندی پشتیبانی نمی‌کند؛ سازوکارهای خودکار مذاکره مجدد کلید برای سایفرهای امروزی کافی هستند. .TP .BI \-\-reneg\-pkts \ n مذاکره مجدد کلید کانال داده پس از ارسال و دریافت \fBn\fP بسته (به‌طور پیش‌فرض غیرفعال است). .sp هنگامی که تخلیه بار کانال داده (DCO) فعال باشد، این گزینه نادیده گرفته می‌شود. DCO از آستانه‌های مذاکره مجدد قابل‌پیکربندی پشتیبانی نمی‌کند؛ سازوکارهای خودکار مذاکره مجدد کلید برای سایفرهای امروزی کافی هستند. .TP .BI \-\-reneg\-sec \ args مذاکره مجدد کلید کانال داده حداکثر پس از \fBmax\fP ثانیه (پیش‌فرض \fB3600\fP) و حداقل \fBmin\fP ثانیه (پیش‌فرض ۹۰٪ از \fBmax\fP برای سرورها، و برابر با \fBmax\fP برای کلاینت‌ها). .INDENT 7.0 .INDENT 3.5 .sp .EX reneg\-sec max [min] .EE .UNINDENT .UNINDENT .sp مقدار مؤثر استفاده‌شده برای \fB\-\-reneg\-sec\fP برای هر نشست به‌صورت شبه‌تصادفی یکنواخت بین \fBmin\fP و \fBmax\fP\& انتخاب می‌شود. .sp با مقدار پیش‌فرض \fB3600\fP، این امر منجر به یک مقدار مؤثر در هر نشست در محدوده \fB3240\fP .. \fB3600\fP ثانیه برای سرورها، یا دقیقاً ۳۶۰۰ ثانیه برای کلاینت‌ها می‌شود. .sp هنگام استفاده از احراز هویت دومرحله‌ای، توجه داشته باشید که این مقدار پیش‌فرض ممکن است باعث شود کاربر نهایی مجبور شود هر ساعت یک بار مجدداً احراز هویت کند. .sp همچنین به یاد داشته باشید که این گزینه می‌تواند در هر دو سمت کلاینت و سرور استفاده شود، و هر سمتی که از مقدار کمتری استفاده کند، آغازگر مذاکره مجدد خواهد بود. یک اشتباه رایج این است که \fB\-\-reneg\-sec\fP در یک سمت روی مقدار بالاتری تنظیم شود در حالی که سمت دیگر اتصال همچنان از مقدار پیش‌فرض \fB3600\fP ثانیه استفاده می‌کند، به این معنی که مذاکره مجدد همچنان هر \fB3600\fP ثانیه یک بار رخ خواهد داد. راه‌حل این است که \-\-reneg\-sec را در هر دو سمت کلاینت و سرور افزایش دهید، یا آن را در یک سمت اتصال روی \fB0\fP تنظیم کنید (جهت غیرفعال‌سازی)، و در سمت دیگر روی مقدار دلخواه خود بگذارید. .UNINDENT .SS گزینه‌های حالت TLS .sp حالت TLS قدرتمندترین حالت رمزنگاری OpenVPN از نظر امنیت و انعطاف‌پذیری است. حالت TLS با ایجاد کانال‌های کنترل و داده که روی یک درگاه تکین TCP/UDP تسهیم (multiplex) شده‌اند، عمل می‌کند. OpenVPN یک نشست TLS را روی کانال کنترل آغاز می‌کند و از آن برای تبادل کلیدهای سایفر و HMAC جهت محافظت از کانال داده بهره می‌برد. حالت TLS از یک لایه قابلیت اطمینان قدرتمند روی اتصال UDP برای تمامی ارتباطات کانال کنترل استفاده می‌کند، در حالی که کانال داده که داده‌های رمزگذاری‌شده تونل از آن عبور می‌کنند، بدون هیچ واسطه‌ای هدایت می‌شود. نتیجه دستیابی به بهترین مزایای هر دو حالت است: یک کانال داده سریع که روی UDP فقط با سربار توابع رمزگذاری، رمزگشایی و HMAC ارسال می‌شود، و یک کانال کنترل که تمامی قابلیت‌های امنیتی TLS، شامل احراز هویت مبتنی بر گواهی و رازداری مستقیم دیفی-هلمن (Diffie Hellman forward secrecy) را فراهم می‌کند. .sp برای استفاده از حالت TLS، هر همتایی (peer) که OpenVPN را اجرا می‌کند باید جفت گواهی/کلید محلی خود (\fB\-\-cert\fP و \fB\-\-key\fP) را داشته باشد که توسط گواهی ریشه مشخص‌شده در \fB\-\-ca\fP\& امضا شده است. .sp هنگامی که دو همتای OpenVPN به یکدیگر متصل می‌شوند، هر یک گواهی محلی خود را به دیگری ارائه می‌دهد. سپس هر همتا بررسی می‌کند که همتای مقابل گواهی‌ای ارائه داده باشد که توسط گواهی ریشه اصلی مشخص‌شده در \fB\-\-ca\fP\& امضا شده باشد. .sp اگر این بررسی در هر دو همتا موفقیت‌آمیز باشد، مذاکره TLS با موفقیت انجام می‌شود، هر دو همتای OpenVPN کلیدهای نشست موقت را تبادل خواهند کرد و انتقال داده در تونل آغاز می‌شود. .sp پروژه OpenVPN مجموعه‌ای از اسکریپت‌ها را برای مدیریت گواهی‌ها و کلیدهای RSA ارائه می‌دهد: \% .INDENT 0.0 .TP .BI \-\-askpass \ file دریافت گذرواژه گواهی از کنسول یا \fBfile\fP قبل از تبدیل شدن به دیمن. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX askpass askpass file .EE .UNINDENT .UNINDENT .sp برای کاربرانی که دغدغه‌های امنیتی شدیدی دارند، این امکان وجود دارد که با یک گذرواژه از کلید خصوصی محافظت شود. البته این بدان معناست که با هر بار راه‌اندازی دیمن OpenVPN باید برای وارد کردن گذرواژه حضور داشته باشید. گزینه \fB\-\-askpass\fP به شما اجازه می‌دهد OpenVPN را از خط فرمان اجرا کنید. این گزینه قبل از دیمن شدن، گذرواژه را از شما می‌پرسد. برای محافظت از یک کلید خصوصی با گذرواژه، هنگام استفاده از ابزار خط فرمان \fBopenssl\fP برای مدیریت گواهی‌ها و کلیدهای خصوصی باید گزینه \fB\-nodes\fP را حذف کنید. .sp اگر \fBfile\fP مشخص شده باشد، گذرواژه از سطر اول \fBfile\fP\& خوانده می‌شود. به یاد داشته باشید که ذخیره گذرواژه در یک پرونده، تا حدی امنیت مضاعف ارائه‌شده توسط استفاده از کلید رمزگذاری‌شده را بی‌اثر می‌کند. .UNINDENT .INDENT 0.0 .TP .BI \-\-ca \ file پرونده مرجع صدور گواهی (CA) در قالب pem.، که با نام گواهی \fIroot\fP (ریشه) نیز شناخته می‌شود. این پرونده می‌تواند شامل چندین گواهی با قالب pem. باشد که به هم متصل شده‌اند. می‌توانید با استفاده از دستوری مانند زیر، گواهی مرجع صدور گواهی و کلید خصوصی خود را بسازید: .INDENT 7.0 .INDENT 3.5 .sp .EX openssl req \-nodes \-new \-x509 \-keyout ca.key \-out ca.crt .EE .UNINDENT .UNINDENT .sp سپس پرونده openssl.cnf خود را ویرایش کرده و متغیر \fBcertificate\fP را طوری تغییر دهید که به گواهی ریشه جدید شما یعنی \fBca.crt\fP اشاره کند\&. .sp تنها به منظور آزمایش، توزیع OpenVPN شامل یک گواهی CA نمونه (ca.crt) است. البته هرگز نباید از گواهی‌ها و کلیدهای آزمایشی توزیع‌شده با OpenVPN در یک محیط عملیاتی استفاده کنید، زیرا به دلیل توزیع عمومی همراه با OpenVPN، کاملاً ناامن هستند. .TP .BI \-\-capath \ dir دایرکتوری حاوی گواهی‌های معتبر (CAها و CRLها). در mbed TLS در دسترس نیست. .sp انتظار می‌رود CAهای موجود در دایرکتوری capath با الگوی . نام‌گذاری شوند. انتظار می‌رود CRLها با الگوی .r نام‌گذاری شوند. برای اطلاعات بیشتر، گزینه‌ی \fB\-CApath\fP از دستور \fBopenssl verify\fP و گزینه‌ی \fB\-hash\fP از دستورهای \fBopenssl x509\fP، \fBopenssl crl\fP و \fBX509_LOOKUP_hash_dir()\fP(3) را ببینید. .sp مشابه گزینه‌ی \fB\-\-crl\-verify\fP، استفاده از CRLها اجباری نیست \- در صورت عدم وجود CRL مربوطه، OpenVPN یک هشدار معمول در لاگ‌ها ثبت می‌کند، اما اجازه برقراری اتصال داده خواهد شد. .UNINDENT .INDENT 0.0 .TP .B \-\-cert file|uri گواهی امضاشده‌ی همتای محلی در قالب pem. یا به صورت یک URI \-\- باید توسط مرجع صدور گواهی که گواهی آن در \fB\-\-ca file\fP در پیکربندی همتا قرار دارد، امضا شده باشد. URI تنها زمانی پشتیبانی می‌شود که برنامه با OpenSSL 3.0 یا بالاتر ساخته شده و ارائه‌دهندگان (providers) مورد نیاز بارگذاری شده باشند. انواع URIهای پشتیبانی‌شده و نحو (syntax) آن‌ها به ارائه‌دهنده‌ها بستگی دارد. OpenSSL پشتیبانی داخلی از URI به شکل \(dq\%\(dq دارد که در این حالت پیشوند طرح \(dqfile:\(dq اختیاری است و هر قالب پرونده‌ای که توسط OpenSSL شناخته شود (مانند PEM، PKCS12) پشتیبانی می‌شود. پروتکل PKCS#11 URI (RFC 7512) توسط pkcs11\-provider پشتیبانی می‌شود. .sp هر همتا در یک اتصال OpenVPN که در حالت TLS اجرا می‌شود باید پرونده گواهی و پرونده کلید خصوصی مخصوص به خود را داشته باشد. علاوه بر این، هر گواهی باید توسط کلید مرجع صدور گواهی که کلید عمومی آن در پرونده مرجع صدور گواهی \fB\-\-ca\fP قرار دارد امضا شده باشد. شما می‌توانید به راحتی مرجع صدور گواهی خود را ایجاد کنید (به بالا مراجعه کنید) یا برای استفاده از یک سرویس تجاری مانند thawte.com هزینه بپردازید (که در این صورت به تأمین مالی دومین گردشگر فضایی جهان کمک خواهید کرد :). برای ایجاد یک گواهی، می‌توانید از دستوری مانند زیر استفاده کنید: .INDENT 7.0 .INDENT 3.5 .sp .EX openssl req \-nodes \-new \-keyout mycert.key \-out mycert.csr .EE .UNINDENT .UNINDENT .sp اگر کلید خصوصی مرجع صدور گواهی شما روی دستگاه دیگری قرار دارد، درخواست امضای گواهی (mycert.csr) را به آن دستگاه منتقل کنید (این کار می‌تواند از طریق کانالی ناامن مانند ایمیل انجام شود). اکنون گواهی را با دستوری مانند زیر امضا کنید: .INDENT 7.0 .INDENT 3.5 .sp .EX openssl ca \-out mycert.crt \-in mycert.csr .EE .UNINDENT .UNINDENT .sp اکنون گواهی (mycert.crt) را به همتایی که ابتدا پرونده csr. را ایجاد کرده بود برگردانید (این کار می‌تواند روی یک بستر عمومی انجام شود). توجه داشته باشید که دستور \fBopenssl ca\fP مکان کلید مرجع صدور گواهی را از پرونده پیکربندی خود مانند \fB/usr/share/ssl/openssl.cnf\fP می‌خواند \-\- همچنین توجه داشته باشید که برای عملکردهای مرجع صدور گواهی، باید پرونده‌های \fBindex.txt\fP (می‌تواند خالی باشد) و \fBserial\fP (مقداردهی اولیه به \fB01\fP) را آماده کنید. .UNINDENT .INDENT 0.0 .TP .BI \-\-crl\-verify \ args بررسی گواهی همتا در برابر فهرست ابطال گواهی (CRL). .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX crl\-verify file/directory flag .EE .UNINDENT .UNINDENT .sp مثال‌ها: .INDENT 7.0 .INDENT 3.5 .sp .EX crl\-verify crl\-file.pem crl\-verify /etc/openvpn/crls dir .EE .UNINDENT .UNINDENT .sp یک CRL (فهرست ابطال گواهی) زمانی استفاده می‌شود که یک کلید مشخص لو رفته یا به خطر افتاده باشد اما کلیت PKI هنوز سالم و دست‌نخورده باشد. .sp فرض کنید یک ساختار PKI شامل یک CA، گواهی ریشه و تعدادی گواهی کلاینت دارید. فرض کنید یک لپ‌تاپ حاوی کلید و گواهی کلاینت به سرقت رفته است. با افزودن گواهی سرقت‌شده به پرونده CRL، می‌توانید هر اتصالی که تلاش می‌کند از آن استفاده کند را رد کنید، در حالی که یکپارچگی کلی PKI حفظ می‌شود. .sp تنها زمانی که بازسازی کل ساختار PKI از ابتدا ضروری خواهد بود، زمانی است که کلید گواهی ریشه خود به خطر افتاده باشد. .sp این گزینه اجباری نیست \- اگر CRL مربوطه وجود نداشته باشد، OpenVPN هشداری را در لاگ‌ها ثبت می‌کند \- برای مثال: .INDENT 7.0 .INDENT 3.5 .sp .EX VERIFY WARNING: depth=0, unable to get certificate CRL .EE .UNINDENT .UNINDENT .sp اما اتصال مجاز خواهد بود. اگر پرچم اختیاری \fBdir\fP مشخص شده باشد، حالت متفاوتی فعال می‌شود که در آن \fBcrl\-verify\fP به دایرکتوری اشاره می‌کند که شامل پرونده‌هایی با نام شماره سریال‌های باطل‌شده است (پرونده‌ها می‌توانند خالی باشند، محتوای آن‌ها هرگز خوانده نمی‌شود). اگر کلاینتی درخواست اتصال دهد و شماره سریال گواهی آن کلاینت (رشته ده‌دهی) نام پرونده‌ای در آن دایرکتوری باشد، رد خواهد شد. .INDENT 7.0 .TP .B \fINote:\fP از آن‌جا که پرونده (یا دایرکتوری) crl با هر بار اتصال یک همتا خوانده می‌شود، اگر در حال کاهش دسترسی‌های root با استفاده از \fB\-\-user\fP هستید، مطمئن شوید که این کاربر دسترسی‌های کافی برای خواندن پرونده را دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-dh \ file پرونده حاوی پارامترهای میدان متناهی Diffie Hellman در قالب .pem (فقط توسط \fB\-\-tls\-server\fP استفاده می‌شود). .sp مقدار \fBfile\fP را روی \fBnone\fP قرار دهید تا تبادل کلید میدان متناهی Diffie Hellman غیرفعال شود (و در عوض تنها از ECDH یا الگوریتم‌های توافق کلید ترکیبی جدیدتر مانند X25519MLKEM768 استفاده گردد). توجه داشته باشید که این کار مستلزم آن است که همتایان از یک کتابخانه SSL که از مجموعه‌های رمزنگاری TLS مبتنی بر ECDH پشتیبانی می‌کند (مانند OpenSSL 1.0.1+ یا mbed TLS 2.0+) استفاده کنند. از نگارش 2.7.0 به بعد، این کار معادل عدم تعیین \fB\-\-dh\fP است. .sp پارامترهای Diffie Hellman را می‌توان با استفاده از \fBopenssl dhparam \-out dh2048.pem 2048\fP تولید کرد، اما توصیه می‌شود از \fBnone\fP استفاده کنید زیرا میدان متناهی Diffie Hellman با انواع مدرن‌تر مانند ECDH جایگزین شده است. .sp پارامترهای Diffie Hellman را می‌توان عمومی در نظر گرفت. .TP .BI \-\-ecdh\-curve \ name منحنی مورد استفاده برای منحنی بیضوی Diffie Hellman را مشخص کنید. منحنی‌های موجود را می‌توان با \fB\-\-show\-curves\fP\& فهرست کرد. منحنی مشخص‌شده فقط برای رمزهای TLS از نوع ECDH استفاده خواهد شد. .sp این گزینه در ساخت‌های mbed TLS نرم‌افزار OpenVPN پشتیبانی نمی‌شود. .TP .BI \-\-extra\-certs \ file یک \fBfile\fP حاوی یک یا چند گواهی PEM (پیوسته به یکدیگر) مشخص کنید که زنجیره گواهی محلی را کامل می‌کند. .sp این گزینه برای مراجع صدور گواهی (CA) \(dqتفکیک‌شده\(dq مفید است؛ جایی که CA برای گواهی‌های سرور با CA برای گواهی‌های کلاینت متفاوت است. قرار دادن گواهی‌ها در این پرونده به آن‌ها اجازه می‌دهد تا برای تکمیل زنجیره گواهی محلی استفاده شوند بدون اینکه برای اعتبارسنجی گواهی ارائه‌شده توسط همتا به آن‌ها اعتماد شود؛ برخلاف حالتی که گواهی‌ها در پرونده \fBca\fP قرار می‌گیرند. .TP .BI \-\-hand\-window \ n پنجره دست‌تکانی (Handshake Window) \-\- تبادل کلید مبتنی بر TLS باید ظرف \fBn\fP ثانیه پس از آغاز دست‌تکانی توسط هر یک از همتایان نهایی شود (پیش‌فرض \fB60\fP ثانیه). در صورت شکست دست‌تکانی، تلاش می‌شود تا اتصال با همتا بازنشانی شده و دوباره تلاش شود. حتی در صورت شکست دست‌تکانی، کلید در حال انقضا تا سقف \fB\-\-tran\-window\fP ثانیه برای حفظ پیوستگی انتقال داده‌های تونل استفاده خواهد شد. .sp پارامتر \fB\-\-hand\-window\fP همچنین مدت زمانی را کنترل می‌کند که کلاینت OpenVPN درخواست pull را تا زمان اتمام مهلت تکرار می‌کند. .UNINDENT .INDENT 0.0 .TP .B \-\-key file|uri کلید خصوصی همتای محلی در قالب .pem یا یک URI. از کلید خصوصی تولیدشده هنگام ایجاد گواهی همتای خود استفاده کنید (به \fB\-\-cert file\fP در بالا مراجعه کنید). URI فقط زمانی پشتیبانی می‌شود که با OpenSSL 3.0 یا جدیدتر ساخته شده باشد و ارائه‌دهندگان (providers) مورد نیاز بارگذاری شده باشند. (برای جزئیات بیشتر به \fB\-\-cert\fP مراجعه کنید). .UNINDENT .INDENT 0.0 .TP .BI \-\-ns\-cert\-type \ type \fBمنسوخ شده\fP باید از گزینه \fB\-\-remote\-cert\-tls\fP در عوض استفاده شود. این گزینه همچنان در دسترس است زیرا نمی‌توان آن را بی‌صدا نادیده گرفت و نیازمند به‌روزرسانی گواهی‌ها و پیکربندی‌ها در هر دو سمت اتصال است. با این حال نباید برای کلاینت‌ها یا سرورهای جدید استفاده شود. این گزینه به فیلد گواهی منسوخ‌شده \fBnsCertType\fP وابسته است. .sp بسته به کتابخانه TLS مورد استفاده ممکن است کار نکند. .sp در انتشار‌های آینده حذف خواهد شد. .TP .BI \-\-pkcs12 \ file یک پرونده PKCS #12 حاوی کلید خصوصی محلی، گواهی محلی و گواهی ریشه CA را مشخص کنید. این گزینه می‌تواند به‌جای \fB\-\-ca\fP، \fB\-\-cert\fP و \fB\-\-key\fP\& استفاده شود. در mbed TLS در دسترس نیست. .TP .BI \-\-remote\-cert\-eku \ oid مستلزم این است که گواهی همتا با یک \fIextended key usage\fP (کاربرد کلید گسترش‌یافته) صریح امضا شده باشد. .sp این یک گزینه امنیتی مفید برای کلاینت‌ها است تا اطمینان حاصل شود میزبانی که به آن متصل می‌شوند یک سرور تعیین‌شده است. .sp کاربرد کلید گسترش‌یافته باید به صورت \fIoid notation\fP یا \fIOpenSSL symbolic representation\fP کدگذاری شود. .TP .BI \-\-remote\-cert\-ku \ key\-usage مستلزم این است که گواهی همتا با یک \fBkey\-usage\fP (کاربرد کلید) صریح امضا شده باشد. .sp در صورت وجود در گواهی، مقدار \fBkeyUsage\fP توسط کتابخانه TLS در طول دست‌تکانی TLS اعتبارسنجی می‌شود. مشخص کردن این گزینه بدون آرگومان، مستلزم وجود داشتن این افزونه است (تا کتابخانه TLS آن را اعتبارسنجی کند). .sp اگر \fBkey\-usage\fP فهرستی از بیت‌های کاربرد باشد، فیلد \fBkeyUsage\fP باید \fIحداقل\fP بیت‌هایی مشابه بیت‌های تنظیم‌شده در \fIیکی از\fP مقادیر ارائه‌شده در فهرست \fBkey\-usage\fP را داشته باشد. .sp مقادیر \fBkey\-usage\fP در فهرست باید به صورت هگزادسیمال کدگذاری شوند، به عنوان مثال: .INDENT 7.0 .INDENT 3.5 .sp .EX remote\-cert\-ku a0 .EE .UNINDENT .UNINDENT .TP .BI \-\-remote\-cert\-tls \ type مستلزم این است که گواهی همتا با یک \fIkey usage\fP و \fIextended key usage\fP صریح بر اساس قواعد TLS در RFC3280 امضا شده باشد. .sp ساختارهای نحوی معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX remote\-cert\-tls server remote\-cert\-tls client .EE .UNINDENT .UNINDENT .sp این یک گزینه امنیتی مفید برای کلاینت‌ها است تا اطمینان حاصل شود میزبانی که به آن متصل می‌شوند یک سرور تعیین‌شده است. یا برعکس؛ برای اینکه یک سرور تأیید کند که فقط میزبان‌های دارای گواهی کلاینت می‌توانند متصل شوند. .sp گزینه \fB\-\-remote\-cert\-tls client\fP معادل است با: .INDENT 7.0 .INDENT 3.5 .sp .EX remote\-cert\-ku remote\-cert\-eku \(dqTLS Web Client Authentication\(dq .EE .UNINDENT .UNINDENT .sp گزینه \fB\-\-remote\-cert\-tls server\fP معادل است با: .INDENT 7.0 .INDENT 3.5 .sp .EX remote\-cert\-ku remote\-cert\-eku \(dqTLS Web Server Authentication\(dq .EE .UNINDENT .UNINDENT .sp این یک اقدام احتیاطی امنیتی مهم برای محافظت در برابر حمله مرد میانی (man\-in\-the\-middle) است که در آن یک کلاینت مجاز با جعل هویت سرور تلاش می‌کند به کلاینت دیگری متصل شود. این حمله به‌راحتی با واداشتن کلاینت‌ها به تأیید اعتبار گواهی سرور با استفاده از هر یک از گزینه‌های \fB\-\-remote\-cert\-tls\fP، \fB\-\-verify\-x509\-name\fP، \fB\-\-peer\-fingerprint\fP یا \fB\-\-tls\-verify\fP\& قابل پیشگیری است. .UNINDENT .INDENT 0.0 .TP .BI \-\-tls\-auth \ args افزودن یک لایه اضافی از احراز هویت HMAC بر روی کانال کنترلی TLS جهت کاهش حملات DoS و حملات علیه پشته TLS. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX tls\-auth file tls\-auth file 0 tls\-auth file 1 .EE .UNINDENT .UNINDENT .sp به طور خلاصه، \fB\-\-tls\-auth\fP نوعی \(dqدیوار آتش HMAC\(dq را روی درگاه TCP/UDP برنامه OpenVPN فعال می‌کند، جایی که بسته‌های کانال کنترلی TLS با امضای HMAC نادرست می‌توانند بلافاصله و بدون پاسخ دور انداخته شوند. .sp \fBfile\fP (الزامی) پرونده‌ای با قالب کلید ایستا OpenVPN است که می‌تواند توسط \fB\-\-genkey\fP ایجاد شود. .sp نسخه‌های قدیمی‌تر (تا OpenVPN 2.3) از یک پرونده عبارت عبور با قالب آزاد پشتیبانی می‌کردند. این ویژگی دیگر در نسخه‌های جدیدتر (v2.4+) پشتیبانی نمی‌شود. .sp پارامتر اختیاری \fBdirection\fP استفاده از ۲ کلید مجزا (HMAC\-send، HMAC\-receive) را فعال می‌کند، به طوری که هر جهت جریان داده یک کلید HMAC متفاوت داشته باشد. این امر ویژگی‌های امنیتی مطلوبی از جمله از بین بردن انواع خاصی از حملات DoS و حملات تکرار پیام (replay) را به همراه دارد. .sp هنگامی که پارامتر \fBdirection\fP حذف شود، همان کلید به صورت دوطرفه استفاده می‌شود. .sp پارامتر \fBdirection\fP باید همیشه در دو طرف اتصال مکمل یکدیگر باشد، یعنی یک طرف باید از \fB0\fP و طرف دیگر از \fB1\fP استفاده کند، یا هر دو طرف آن را کاملاً نادیده بگیرند. .sp پارامتر \fBdirection\fP نیازمند این است که \fBfile\fP حاوی یک کلید ۲۰۴۸ بیتی باشد. در حالی که نسخه‌های قبل از ۱.۵ برنامه OpenVPN پرونده‌های کلید ۱۰۲۴ بیتی تولید می‌کنند، هر نسخه‌ای از OpenVPN که از پارامتر \fBdirection\fP پشتیبانی می‌کند، از تولید پرونده کلید ۲۰۴۸ بیتی با استفاده از گزینه \fB\-\-genkey\fP نیز پشتیبانی خواهد کرد. .sp استفاده از \fB\-\-tls\-auth\fP زمانی توصیه می‌شود که OpenVPN را در حالتی اجرا می‌کنید که در حال گوش دادن به بسته‌ها از هر آدرس IP است، مانند زمانی که \fB\-\-remote\fP مشخص نشده باشد یا \fB\-\-remote\fP همراه با \fB\-\-float\fP مشخص شده باشد. .sp منطق این ویژگی به شرح زیر است. TLS قبل از اینکه بتواند یک همتا را احراز هویت کند، به یک تبادل چند بسته‌ای نیاز دارد. در طول این زمان پیش از احراز هویت، OpenVPN منابعی (حافظه و CPU) را به این همتای احتمالی اختصاص می‌دهد. این همتای احتمالی همچنین بخش‌های زیادی از OpenVPN و کتابخانه OpenSSL را در معرض بسته‌هایی که ارسال می‌کند قرار می‌دهد. امروزه اکثر حملات شبکه‌ای موفق به دنبال سوءاستفاده از اشکالات برنامه‌ها (مانند حملات سرریز بافر) یا وادار کردن برنامه به مصرف آن‌چنان منابعی هستند که غیرقابل استفاده شود. مسلماً اولین خط دفاعی همیشه تولید کد تمیز و به خوبی ارزیابی‌شده است. OpenVPN با اولویت اصلی جلوگیری از حملات سرریز بافر نوشته شده است. اما همان‌طور که تاریخ نشان داده است، بسیاری از پرکاربردترین برنامه‌های کاربردی شبکه، گهگاه مغلوب حملات سرریز بافر شده‌اند. .sp بنابراین به عنوان خط دوم دفاعی، OpenVPN این لایه ویژه از احراز هویت را بر روی کانال کنترلی TLS ارائه می‌دهد تا هر بسته در کانال کنترلی با یک امضای HMAC و یک شناسه یکتا برای محافظت در برابر تکرار (replay) احراز هویت شود. این امضا همچنین به محافظت در برابر حملات DoS (محروم‌سازی از سرویس) کمک می‌کند. یک قاعده سرانگشتی مهم در کاهش آسیب‌پذیری در برابر حملات DoS، به حداقل رساندن مقدار منابعی است که یک کلاینت بالقوه، اما هنوز احراز هویت‌نشده، می‌تواند مصرف کند. .sp \fB\-\-tls\-auth\fP این کار را با امضای هر بسته کانال کنترلی TLS با امضای HMAC انجام می‌دهد، از جمله بسته‌هایی که قبل از اینکه سطح TLS فرصت احراز هویت همتا را پیدا کند ارسال می‌شوند. نتیجه این است که بسته‌های بدون امضای صحیح می‌توانند بلافاصله پس از دریافت دور انداخته شوند، قبل از اینکه فرصتی برای مصرف منابع اضافی سیستم، مانند شروع یک مصافحه (handshake) TLS داشته باشند. \fB\-\-tls\-auth\fP را می‌توان با افزودن گزینه \fB\-\-replay\-persist\fP تقویت کرد که وضعیت حفاظت از تکرار OpenVPN را در یک پرونده نگه می‌دارد تا در طول راه‌اندازی‌های مجدد از دست نرود. .sp باید تاکید شود که این ویژگی اختیاری است و پرونده کلید استفاده شده با \fB\-\-tls\-auth\fP چیزی بیش از قدرت شروع یک مصافحه TLS به همتا نمی‌دهد. این ویژگی برای رمزگذاری یا احراز هویت هیچ‌یک از داده‌های تونل استفاده نمی‌شود. .sp اگر می‌خواهید از پرونده کلید نه تنها برای احراز هویت، بلکه برای رمزگذاری کانال کنترلی TLS نیز استفاده کنید، به جای آن از \fB\-\-tls\-crypt\fP استفاده نمایید. .TP .BI \-\-tls\-groups \ list فهرستی از گروه‌ها/منحنی‌های مجاز به ترتیب اولویت. .sp تنظیم منحنی‌ها/گروه‌های بیضوی مجاز برای نشست TLS. این گروه‌ها مجاز به استفاده در امضاها و تبادل کلید هستند. .sp در حال حاضر mbedTLS به طور پیش‌فرض اجازه استفاده از تمام منحنی‌های شناخته شده را می‌دهد. .sp کتابخانه OpenSSL 1.1+ این فهرست را به طور پیش‌فرض به موارد زیر محدود می‌کند: .INDENT 7.0 .INDENT 3.5 .sp .EX \(dqX25519:secp256r1:X448:secp521r1:secp384r1\(dq. .EE .UNINDENT .UNINDENT .sp اگر از گواهی‌هایی استفاده می‌کنید که از منحنی‌های غیراستاندارد استفاده می‌کنند، ممکن است لازم باشد آن‌ها را در اینجا اضافه کنید. اگر منحنی ecdh را با استفاده از \fB\-\-ecdh\-curve\fP اجبار نکنید، گروه‌های مربوط به ecdh نیز از این فهرست انتخاب خواهند شد. .sp برنامه OpenVPN نام منحنی \fBsecp256r1\fP را به \fBprime256v1\fP نگاشت می‌کند تا امکان تعیین گزینه یکسان tls\-groups برای mbedTLS و OpenSSL فراهم شود. .sp هشدار: این گزینه نه تنها گواهی‌های منحنی بیضوی بلکه تبادل کلید در TLS 1.3 را نیز تحت تاثیر قرار می‌دهد و استفاده نادرست از این گزینه باعث غیرفعال شدن TLS 1.3 خواهد شد. .TP .BI \-\-tls\-cert\-profile \ profile تنظیم الگوریتم‌های رمزنگاری مجاز برای گواهی‌ها با توجه به \fBprofile\fP\&. .sp پروفایل‌های زیر پشتیبانی می‌شوند: .INDENT 7.0 .TP .B \fBinsecure\fP برای mbed TLS یکسان با \fBlegacy\fP .TP .B \fBlegacy\fP (پیش‌فرض) الگوریتم SHA1 و جدیدتر، RSA با ۲۰۴۸ بیت به بالا، هر منحنی بیضوی. .TP .B \fBpreferred\fP الگوریتم SHA2 و جدیدتر، RSA با ۲۰۴۸ بیت به بالا، هر منحنی بیضوی. .TP .B \fBsuiteb\fP الگوریتم SHA256/SHA384، الگوریتم ECDSA با P\-256 یا P\-384. .UNINDENT .sp این گزینه تنها برای ساخت‌های mbed TLS به طور کامل پشتیبانی می‌شود. ساخت‌های OpenSSL از تقریب زیر استفاده می‌کنند: .INDENT 7.0 .TP .B \fBinsecure\fP مقدار \(dqsecurity level 0\(dq را تنظیم می‌کند .TP .B \fBlegacy\fP (پیش‌فرض) مقدار \(dqsecurity level 1\(dq را تنظیم می‌کند .TP .B \fBpreferred\fP مقدار \(dqsecurity level 2\(dq را تنظیم می‌کند .TP .B \fBsuiteb\fP مقدار \(dqsecurity level 3\(dq و \fB\-\-tls\-cipher \(dqSUITEB128\(dq\fP را تنظیم می‌کند. .UNINDENT .sp برنامه OpenVPN در آینده به \(aqpreferred\(aq به عنوان پیش‌فرض مهاجرت خواهد کرد. لطفاً اطمینان حاصل کنید که کلیدهای شما از قبل با آن مطابقت دارند. .UNINDENT .INDENT 0.0 .UNINDENT .INDENT 0.0 .TP .B \fIهشدار:\fP \fB\-\-tls\-cipher\fP، \fB\-\-tls\-ciphersuites\fP و \fBtls\-groups\fP این گزینه‌ها ویژگی‌های پیشرفته‌ای هستند که \- در صورت استفاده صحیح \- می‌توانند امنیت اتصال VPN شما را بهبود بخشند. اما همچنین بسیار ساده است که ناخواسته با آن‌ها به پای خود شلیک کنید یا صرفاً اتصال خود را قطع نمایید. با احتیاط استفاده کنید! .UNINDENT .INDENT 0.0 .TP .BI \-\-tls\-cipher \ l یک فهرست \fBl\fP از رمزهای مجاز TLS که با دونقطه (\(dq\fB:\fP\(dq) جدا شده‌اند. .sp از این تنظیم می‌توان برای اطمینان از استفاده (یا عدم استفاده) از مجموعه‌های رمزنگاری خاص برای اتصال TLS استفاده کرد. OpenVPN از TLS برای ایمن‌سازی کانال کنترل استفاده می‌کند؛ کانالی که کلیدهای محافظت از ترافیک واقعی VPN از طریق آن مبادله می‌شوند. .sp فهرست ارائه‌شده از رمزها (پس از تبدیل نام احتمالی توسط OpenSSL/IANA) صرفاً به کتابخانه رمزنگاری ارسال می‌شود. لطفاً برای جزئیات نحوه تفسیر فهرست رمزها به مستندات OpenSSL یا mbed TLS مراجعه کنید. .sp برای OpenSSL، گزینه \fB\-\-tls\-cipher\fP برای TLS 1.2 و پایین‌تر استفاده می‌شود. .sp برای مشاهده فهرست رمزهای TLS پشتیبانی‌شده توسط کتابخانه رمزنگاری خود، از \fB\-\-show\-tls\fP استفاده کنید. .sp مقدار پیش‌فرض برای \fB\-\-tls\-cipher\fP، استفاده از فهرست رمزهای پیش‌فرض mbed TLS در زمان استفاده از mbed TLS یا \fBDEFAULT:!EXP:!LOW:!MEDIUM:!kDH:!kECDH:!DSS:!PSK:!SRP:!kRSA\fP هنگام استفاده از OpenSSL است. .TP .BI \-\-tls\-ciphersuites \ l مشابه \fB\-\-tls\-cipher\fP اما برای TLS 1.3 و بالاتر. mbed TLS هنوز از TLS 1.3 پشتیبانی نمی‌کند و تنها تنظیم \fB\-\-tls\-cipher\fP استفاده می‌شود. .sp پیش‌فرض برای \fB\-\-tls\-ciphersuites\fP، استفاده از پیش‌فرض کتابخانه رمزنگاری است. .TP .B \-\-tls\-client فعال‌سازی TLS و بر عهده گرفتن نقش کلاینت در طول مصافحه (handshake) TLS. .TP .BI \-\-tls\-crypt \ keyfile رمزنگاری و احراز اصالت تمام بسته‌های کانال کنترل با کلید موجود در \fBkeyfile\fP\&. (برای پیش‌زمینه بیشتر به \fB\-\-tls\-auth\fP مراجعه کنید.) .sp رمزنگاری (و احراز اصالت) بسته‌های کانال کنترل: .INDENT 7.0 .IP \(bu 2 حریم خصوصی بیشتری را با پنهان کردن گواهی استفاده‌شده برای اتصال TLS فراهم می‌کند، .IP \(bu 2 شناسایی ترافیک OpenVPN را سخت‌تر می‌سازد، .IP \(bu 2 امنیت پسا-کوانتومی \(dqمقدماتی\(dq در برابر مهاجمانی که هرگز کلید پیش‌اشتراکی را نخواهند فهمید (فاقد پنهان‌داری پیشرو)، ارائه می‌دهد. .UNINDENT .sp برخلاف \fB\-\-tls\-auth\fP، گزینه \fB\-\-tls\-crypt\fP کاربر را \fIملزم نمی‌کند\fP که \fB\-\-key\-direction\fP را تنظیم کند\&. .sp \fBملاحظات امنیتی\fP .sp تمام همتایان از کلید گروهی پیش‌اشتراکی \fB\-\-tls\-crypt\fP یکسانی برای احراز اصالت و رمزنگاری پیام‌های کانال کنترل استفاده می‌کنند. برای اطمینان از اینکه تداخل IV همچنان بعید باقی بماند، این کلید نباید برای رمزنگاری بیش از 2^48 پیام کانال کنترل کلاینت‌به‌سرور یا 2^48 سرور‌به‌کلاینت استفاده شود. یک مذاکره اولیه معمول حدود ۱۰ بسته در هر جهت است. با فرض اینکه هر دو مذاکره اولیه و مذاکرات مجدد (برای محافظه‌کاری) حداکثر 2^16 (65536) بسته باشند و (مذاکرات) مجدد در هر دقیقه برای هر کاربر (۲۴/۷) رخ دهد، این امر طول عمر کلید tls\-crypt را به ۸۱۷۱ سال تقسیم بر تعداد کاربران محدود می‌کند. بنابراین یک پیکربندی با ۱۰۰۰ کاربر باید کلید را حداقل هر هشت سال یک‌بار بازچرخانی کند. (و یک راه‌اندازی با ۸۰۰۰ کاربر، هر سال.) .sp اگر تداخل IV رخ دهد، می‌تواند منجر به تنزل امنیت \fB\-\-tls\-crypt\fP به همان سطح امنیت استفاده از \fB\-\-tls\-auth\fP شود\&. بدین معنا که کانال کنترل همچنان از محافظت اضافی در برابر حملات فعال مرد میانی و حملات DoS بهره می‌برد، اما ممکن است دیگر حریم خصوصی اضافی و امنیت پسا-کوانتومی فراتر از آنچه خود TLS ارائه می‌دهد را فراهم نکند. .sp برای پیکربندی‌های بزرگ یا راه‌اندازی‌هایی که در آن کلاینت‌ها مورد اعتماد نیستند، استفاده از \fB\-\-tls\-crypt\-v2\fP را مد نظر قرار دهید. آن گزینه از کلیدهای یکتا به ازای هر کلاینت استفاده می‌کند و بدین ترتیب بازه را به \(aqبازچرخانی کلید کلاینت حداقل یک‌بار در هر ۸۰۰۰ سال\(aq بهبود می‌بخشد. .TP .BI \-\-tls\-crypt\-v2 \ keyfile نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX tls\-crypt\-v2 keyfile tls\-crypt\-v2 keyfile force\-cookie tls\-crypt\-v2 keyfile allow\-noncookie .EE .UNINDENT .UNINDENT .sp استفاده از کلیدهای tls\-crypt اختصاصی کلاینت. .sp برای کلاینت‌ها، \fBkeyfile\fP یک کلید tls\-crypt اختصاصی کلاینت است. چنین کلیدی را می‌توان با استفاده از گزینه \fB\-\-genkey tls\-crypt\-v2\-client\fP ایجاد کرد. .sp برای سرورها، \fBkeyfile\fP جهت بازگشایی (unwrap) کلیدهای اختصاصی کلاینت ارائه‌شده توسط کلاینت در طول برقراری اتصال استفاده می‌شود. این کلید باید همان کلیدی باشد که برای تولید کلید اختصاصی کلاینت استفاده شده است (به \fB\-\-genkey tls\-crypt\-v2\-client\fP مراجعه کنید). .sp روی سرورها، این گزینه می‌تواند همراه با گزینه \fB\-\-tls\-auth\fP یا \fB\-\-tls\-crypt\fP استفاده شود. در آن حالت، سرور استفاده کلاینت از کلیدهای اختصاصی کلاینت را تشخیص داده و به‌طور خودکار حالت مناسب را انتخاب می‌کند. .sp پارامتر اختیاری \fBforce\-cookie\fP تنها به کلاینت‌های tls\-crypt\-v2 که از مصافحه سه‌مرحله‌ای بی‌وضعیت (stateless) مبتنی بر کوکی پشتیبانی می‌کنند اجازه فعالیت می‌دهد؛ این امر مانع از حملات بازپخش (replay attacks) و تخلیه وضعیت (state exhaustion) در سمت سرور می‌شود (OpenVPN 2.6 و بالاتر). گزینه \fBallow\-noncookie\fP صریحاً به کلاینت‌های قدیمی‌تر tls\-crypt\-v2 اجازه اتصال می‌دهد. مقدار پیش‌فرض (در حال حاضر) \fBallow\-noncookie\fP است\&. .UNINDENT .INDENT 0.0 .TP .BI \-\-tls\-crypt\-v2\-verify \ cmd اجرای دستور \fBcmd\fP برای اعتبارسنجی فراداده کلید tls\-crypt\-v2 اختصاصی کلاینت در حال اتصال. این به مدیران سرور اجازه می‌دهد تا پیش از قرار دادن پشته TLS (شامل پشته‌های ذاتا خطرناک X.509 و ASN.1) در معرض کلاینت متصل‌شونده، اتصال کلاینت را رد کنند. .sp ‏OpenVPN متغیرهای محیطی زیر را به دستور ارسال می‌کند (و تنها همین متغیرها؛ متغیرهای محیطی معمول موجود برای سایر اسکریپت‌ها در دسترس نیستند): .INDENT 7.0 .IP \(bu 2 مقدار \fBscript_type\fP روی \fBtls\-crypt\-v2\-verify\fP تنظیم شده است. .IP \(bu 2 مقدار \fBmetadata_type\fP در صورتی که فراداده توسط کاربر ارائه شده باشد روی \fB0\fP، و اگر یک برچسب زمانی ۶۴ بیتی یونیکس نشان‌دهنده زمان ساخت کلید باشد روی \fB1\fP تنظیم شده است. .IP \(bu 2 مقدار \fBmetadata_file\fP شامل نام پرونده یک پرونده موقت است که فراداده کلاینت در آن قرار دارد. .UNINDENT .sp دستور می‌تواند با خروج با یک کد خروج غیر صفر، اتصال را رد کند. .TP .BI \-\-tls\-crypt\-v2\-max\-age \ n رد کردن کلیدهای کلاینت tls\-crypt\-v2 که قدیمی‌تر از n روز هستند یا فاقد برچسب زمانی می‌باشند. .TP .B \-\-tls\-exit خروج در صورت شکست در مذاکره TLS. این گزینه زمانی که فقط می‌خواهید یک بار برای اتصال تلاش کنید مفید است، مثلا در یک اسکریپت آزمایشی یا پایش. (مجموعه آزمون خود OpenVPN به همین شکل از آن استفاده می‌کند.) .TP .B \-\-tls\-server فعال کردن TLS و به عهده گرفتن نقش سرور در طول دست‌تکانی TLS. توجه داشته باشید که OpenVPN به عنوان یک برنامه همتا به همتا طراحی شده است. تعیین کلاینت یا سرور صرفا به منظور مذاکره در کانال کنترل TLS است. .TP .BI \-\-tls\-timeout \ n مهلت زمانی ارسال مجدد بسته در کانال کنترل TLS در صورت عدم دریافت تاییدیه از راه دور ظرف \fBn\fP ثانیه (پیش‌فرض \fB2\fP). هنگامی که OpenVPN یک بسته کنترلی به همتای خود ارسال می‌کند، انتظار دارد تاییدیه را ظرف \fBn\fP ثانیه دریافت کند، در غیر این صورت بسته را مجددا تحت الگوریتم عقب‌نشینی نمایی مشابه TCP ارسال می‌کند. این پارامتر فقط برای بسته‌های کانال کنترل اعمال می‌شود. بسته‌های کانال داده (که داده‌های رمزگذاری‌شده تونل را حمل می‌کنند) هرگز توسط OpenVPN تایید، مرتب‌سازی یا بازفرستی نمی‌شوند، زیرا پروتکل‌های سطح بالاتر شبکه مانند TCP که روی تونل اجرا می‌شوند انتظار دارند این وظیفه به آن‌ها واگذار شود. .TP .BI \-\-tls\-version\-min \ args حداقل نسخه TLS قابل قبول از همتا را تعیین می‌کند (پیش‌فرض در نسخه 2.6.0 و جدیدتر \(dq1.2\(dq است). .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX tls\-version\-min version [\(aqor\-highest\(aq] .EE .UNINDENT .UNINDENT .sp نمونه‌ها برای version شامل \fB1.0\fP، \fB1.1\fP یا \fB1.2\fP است. اگر \fBor\-highest\fP مشخص شده باشد و version شناخته نشود، فقط بالاترین نسخه TLS پشتیبانی‌شده توسط پیاده‌سازی SSL محلی پذیرفته می‌شود. .TP .BI \-\-tls\-version\-max \ version حداکثر نسخه TLS مورد استفاده را تعیین می‌کند (پیش‌فرض بالاترین نسخه پشتیبانی‌شده است). نمونه‌ها برای version شامل \fB1.0\fP، \fB1.1\fP یا \fB1.2\fP است. .TP .BI \-\-verify\-hash \ args \fBمنسوخ‌شده\fP اثر انگشت SHA1 یا SHA256 را برای گواهی سطح ۱ مشخص کنید. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX verify\-hash hash [algo] .EE .UNINDENT .UNINDENT .sp گواهی سطح ۱ همان CA (یا گواهی میانی) است که گواهی برگ (leaf) را امضا می‌کند و در جهت ریشه، یک سطح با گواهی برگ فاصله دارد. هنگام پذیرش اتصال از یک همتا، اثر انگشت گواهی سطح ۱ باید با \fBhash\fP مطابقت داشته باشد، در غیر این صورت اعتبارسنجی گواهی با شکست مواجه می‌شود. هش به صورت XX:XX:... مشخص می‌شود. برای نمونه: .INDENT 7.0 .INDENT 3.5 .sp .EX AD:B0:95:D8:09:C8:36:45:12:A9:89:C8:90:09:CB:13:72:A6:AD:16 .EE .UNINDENT .UNINDENT .sp پرچم \fBalgo\fP می‌تواند \fBSHA1\fP یا \fBSHA256\fP باشد. در صورت عدم ارائه، مقدار پیش‌فرض \fBSHA1\fP خواهد بود. .sp این گزینه می‌تواند به صورت درون‌خطی نیز تعریف شود .INDENT 7.0 .INDENT 3.5 .sp .EX 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff 11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00 .EE .UNINDENT .UNINDENT .UNINDENT .sp اگر گزینه به صورت درون‌خطی تعریف شود، \fBalgo\fP همیشه \fBSHA256\fP خواهد بود. .INDENT 0.0 .UNINDENT .INDENT 0.0 .TP .BI \-\-peer\-fingerprint \ args .INDENT 7.0 .INDENT 3.5 مشخص کردن یک اثرانگشت SHA256 یا فهرستی از اثرانگشت‌های SHA256 برای اعتبارسنجی گواهی همتا در برابر آن. گواهی همتا باید با یکی از اثرانگشت‌ها مطابقت داشته باشد، در غیر این صورت اعتبارسنجی گواهی با شکست مواجه خواهد شد. این گزینه می‌تواند به صورت درون‌خطی (inline) نیز استفاده شود .UNINDENT .UNINDENT .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX peer\-fingerprint AD:B0:95:D8:09:... .EE .UNINDENT .UNINDENT .sp یا درون‌خطی: .INDENT 7.0 .INDENT 3.5 .sp .EX 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff 11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00 .EE .UNINDENT .UNINDENT .sp هنگامی که گزینه \fB\-\-peer\-fingerprint\fP استفاده می‌شود، مشخص کردن یک CA با \fB\-\-ca\fP یا \fB\-\-capath\fP اختیاری است. این به \fB\-\-peer\-fingerprint\fP اجازه می‌دهد تا به عنوان جایگزینی برای یک PKI با گواهی‌های خودامضا برای راه‌اندازی‌های کوچک استفاده شود. برای چنین راه‌اندازی بخش مثال‌ها را ببینید. .TP .BI \-\-verify\-x509\-name \ args پذیرش اتصالات تنها در صورتی که نام X.509 میزبان با \fBname\fP برابر باشد. میزبان راه دور همچنین باید تمام آزمون‌های دیگر اعتبارسنجی را پشت سر بگذارد. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX verify\-x509 name type .EE .UNINDENT .UNINDENT .sp اینکه کدام نام X.509 با \fBname\fP مقایسه شود به تنظیم type بستگی دارد. \fBtype\fP می‌تواند \fBsubject\fP برای مطابقت با DN کامل موضوع (پیش‌فرض)، \fBname\fP برای مطابقت با یک RDN موضوع یا \fBname\-prefix\fP برای مطابقت با پیشوند RDN موضوع باشد. اینکه کدام RDN به عنوان name اعتبارسنجی شود به گزینه \fB\-\-x509\-username\-field\fP بستگی دارد. اما مقدار پیش‌فرض آن common name (CN) است، برای نمونه گواهی‌ای با subject DN زیر .INDENT 7.0 .INDENT 3.5 .sp .EX C=KG, ST=NA, L=Bishkek, CN=Server\-1 .EE .UNINDENT .UNINDENT .sp با موارد زیر مطابقت داده می‌شود: .INDENT 7.0 .INDENT 3.5 .sp .EX verify\-x509\-name \(aqC=KG, ST=NA, L=Bishkek, CN=Server\-1\(aq verify\-x509\-name Server\-1 name verify\-x509\-name Server\- name\-prefix .EE .UNINDENT .UNINDENT .sp آخرین مثال زمانی مفید است که می‌خواهید یک کلاینت تنها اتصالات به \fBServer\-1\fP، \fBServer\-2\fP و غیره را بپذیرد. .sp گزینه \fB\-\-verify\-x509\-name\fP یک جایگزین مفید برای گزینه \fB\-\-tls\-verify\fP جهت اعتبارسنجی میزبان راه دور است، زیرا \fB\-\-verify\-x509\-name\fP در یک محیط \fB\-\-chroot\fP بدون هیچ‌گونه وابستگی کار می‌کند. .sp استفاده از یک پیشوند نام، جایگزینی مفید برای مدیریت CRL (فهرست ابطال گواهی) روی کلاینت است، زیرا به کلاینت اجازه می‌دهد همه گواهی‌ها را به جز مواردی که با سرورهای تعیین‌شده مرتبط هستند رد کند. .INDENT 7.0 .TP .B \fIنکته:\fP بررسی در برابر پیشوند نام را تنها زمانی انجام دهید که از OpenVPN همراه با یک گواهی CA سفارشی که تحت کنترل شماست استفاده می‌کنید. هرگز از این گزینه با نوع \fBname\-prefix\fP زمانی که گواهی‌های کلاینت شما توسط شخص ثالث، مانند یک CA تجاری وب امضا شده‌اند، استفاده نکنید. .UNINDENT .TP .BI \-\-x509\-track \ attribute ذخیره مقدار \fBattribute\fP از X509 همتا در متغیرهای محیطی برای استفاده توسط افزونه‌ها و رابط مدیریتی. افزودن یک \fB+\fP به ابتدای \fBattribute\fP برای ذخیره مقادیر از کل زنجیره گواهی. در غیر این صورت ویژگی تنها برای گواهی برگ (یعنی عمق \fB0\fP از زنجیره گواهی) صادر می‌شود. مقادیر به صورت \fBX509__=\fP\& کدگذاری خواهند شد. چندین گزینه \fB\-\-x509\-track\fP می‌توانند برای ردیابی چندین ویژگی تعریف شوند. .sp مورد \fBattribute\fP می‌تواند هر بخشی از فیلد Subject در X509 یا هر افزونه X509v3 (RFC 3280) باشد. افزونه‌های X509v3 ممکن است در صورت عدم استفاده از کتابخانه پیش‌فرض زیرساخت TLS (یعنی OpenSSL) پشتیبانی نشوند. شما همچنین می‌توانید اثرانگشت‌های \fBSHA1\fP و \fBSHA256\fP گواهی را درخواست کنید، اما این مقادیر در هر صورت همیشه به عنوان \fBtls_digest_{n}\fP و \fBtls_digest_sha256_{n}\fP صادر می‌شوند. .sp توجه داشته باشید که به طور پیش‌فرض \fBهمه\fP بخش‌های فیلد Subject در X509 برای کل زنجیره گواهی در محیط صادر می‌شوند. اگر از \fB\-\-x509\-track\fP حداقل یک بار استفاده کنید، \fBفقط\fP ویژگی‌های مشخص‌شده توسط این گزینه‌ها صادر می‌شوند. .sp مثال‌ها: .INDENT 7.0 .INDENT 3.5 .sp .EX x509\-track CN # exports only X509_0_CN x509\-track +CN # exports X509_{n}_CN for chain x509\-track basicConstraints # exports value of \(dqX509v3 Basic Constraints\(dq x509\-track SHA256 # exports SHA256 fingerprint .EE .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-x509\-username\-field \ args فیلدهایی در عنوان (Subject) گواهی X.509 که باید به عنوان نام کاربری استفاده شوند (پیش‌فرض \fBCN\fP). اگر چند فیلد مشخص شوند، مقادیر آن‌ها با استفاده از نماد \fB_\fP به عنوان جداکننده در یک نام کاربری ادغام خواهند شد. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX x509\-username\-field [ext:]fieldname [[ext:]fieldname...] .EE .UNINDENT .UNINDENT .sp به طور معمول، این گزینه با آرگومان‌های \fBfieldname\fP به یکی از صورت‌های زیر مشخص می‌شود: .INDENT 7.0 .INDENT 3.5 .sp .EX x509\-username\-field emailAddress x509\-username\-field 1.2.840.113549.1.9.1 x509\-username\-field ext:subjectAltName x509\-username\-field CN serialNumber .EE .UNINDENT .UNINDENT .sp دو مثال اول از مقدار مشخصه \fBemailAddress\fP در فیلد Subject گواهی به عنوان نام کاربری استفاده می‌کنند، که در آن مثال اول از نام و مثال دوم از oid استفاده می‌کند. مثال سوم از پیشوند \fBext:\fP برای نشان دادن این موضوع استفاده می‌کند که افزونه X.509 با نام فیلد \fBfieldname\fP \fBsubjectAltName\fP باید برای یک فیلد rfc822Name (ایمیل) جهت استفاده به عنوان نام کاربری جستجو شود. در مواردی که چند آدرس ایمیل در \fBext:fieldname\fP وجود داشته باشد، آخرین مورد انتخاب می‌شود. مثال آخر از مقدار مشخصه \fBCN\fP در فیلد Subject، ترکیب‌شده با جداکننده \fB_\fP و نمایش هگزادسیمال \fBserialNumber\fP گواهی استفاده می‌کند. .sp هنگامی که این گزینه استفاده شود، گزینه \fB\-\-verify\-x509\-name\fP به جای Common Name با \fBfieldname\fP انتخاب‌شده مطابقت داده خواهد شد. .sp تنها افزونه‌های X.509 شامل \fBsubjectAltName\fP و \fBissuerAltName\fP و مشخصه X.509 با عنوان \fBserialNumber\fP پشتیبانی می‌شوند. .sp نمادهای ناسازگار با نماد \fB_\fP جایگزین می‌شوند (مشابه جداکننده فیلدها)، بنابراین ادغام چندین فیلد با چنین نمادهایی یا نمادهای \fB_\fP می‌تواند به طور بالقوه منجر به تداخل نام کاربری شود. .UNINDENT .SS گزینه‌های PKCS#11 / کارت هوشمند (SmartCard) .INDENT 0.0 .TP .BI \-\-pkcs11\-cert\-private \ args تنظیم می‌کند که آیا دسترسی به شیء گواهی باید پس از ورود انجام شود یا خیر. هر ارائه‌دهنده تنظیمات مخصوص به خود را دارد. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX pkcs11\-cert\-private 0 pkcs11\-cert\-private 1 .EE .UNINDENT .UNINDENT .TP .BI \-\-pkcs11\-id \ name شناسه (id) سریالی‌شده گواهی مورد استفاده را مشخص می‌کند. این شناسه می‌تواند از طریق گزینه مستقل \fB\-\-show\-pkcs11\-ids\fP به دست آید. همچنین به توضیحات گزینه \fB\-\-pkcs11\-providers\fP مراجعه کنید. .TP .B \-\-pkcs11\-id\-management دریافت شناسه PKCS#11 از رابط مدیریتی (management interface). در این حالت یک پیام آنی \fBNEED\-STR \(aqpkcs11\-id\-request\(aq\fP فعال می‌شود، برنامه می‌تواند از دستور pkcs11\-id\-count برای بازیابی تعداد گواهی‌های موجود و از دستور pkcs11\-id\-get برای بازیابی شناسه گواهی و بدنه گواهی استفاده کند. همچنین به توضیحات گزینه \fB\-\-pkcs11\-providers\fP مراجعه کنید. .TP .BI \-\-pkcs11\-pin\-cache \ seconds مشخص می‌کند که PIN چند ثانیه می‌تواند در حافظه نهان ذخیره شود، حالت پیش‌فرض تا زمان خارج کردن توکن است. .TP .BI \-\-pkcs11\-private\-mode \ mode مشخص می‌کند چه روشی برای انجام عملیات کلید خصوصی استفاده شود. برای هر ارائه‌دهنده می‌توان یک حالت متفاوت مشخص کرد. حالت به صورت عدد هگز رمزگذاری شده است و می‌تواند ماسکی از موارد زیر باشد: .sp \fB0\fP (پیش‌فرض) تلاش برای تشخیص خودکار. .sp \fB1\fP استفاده از sign. .sp \fB2\fP استفاده از sign recover. .sp \fB4\fP استفاده از decrypt. .sp \fB8\fP استفاده از unwrap. .TP .BI \-\-pkcs11\-protected\-authentication \ args استفاده از مسیر احراز هویت محافظت‌شده PKCS#11، مفید برای دستگاه‌های بیومتریک و صفحه‌کلید خارجی. هر ارائه‌دهنده تنظیمات مخصوص به خود را دارد. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX pkcs11\-protected\-authentication 0 pkcs11\-protected\-authentication 1 .EE .UNINDENT .UNINDENT .TP .BI \-\-pkcs11\-providers \ providers ارائه‌دهنده‌های رابط توکن رمزنگاری RSA Security Inc. PKCS #11 (Cryptoki) را برای بارگذاری مشخص می‌کند. فهرستی از یک یا چند نام کتابخانه ارائه‌دهنده که با فاصله از هم جدا شده‌اند می‌تواند مشخص شود. این گزینه همراه با \fB\-\-pkcs11\-id\fP یا \fBpkcs11\-id\-management\fP می‌تواند به جای \fB\-\-cert\fP و \fB\-\-key\fP یا \fB\-\-pkcs12\fP استفاده شود. .sp اگر p11\-kit روی سیستم موجود باشد و در حین ساخت فعال شده باشد، در صورتی که هر یک از گزینه‌های \fB\-\-pkcs11\-id\fP یا \fB\-\-pkcs11\-id\-management\fP بدون \fB\-\-pkcs11\-providers\fP وجود داشته باشند، ماژول \fBp11\-kit\-proxy.so\fP آن به طور پیش‌فرض بارگذاری خواهد شد. اگر بارگذاری پیش‌فرض در ساخت فعال نشده باشد و هیچ ارائه‌دهنده‌ای مشخص نشود، گزینه‌های قبلی نادیده گرفته خواهند شد. .UNINDENT .INDENT 0.0 .TP .BI \-\-show\-pkcs11\-ids \ args (مستقل) نمایش فهرست اشیاء توکن PKCS#11. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX show\-pkcs11 [provider] [cert_private] .EE .UNINDENT .UNINDENT .sp اگر گواهی‌ها به صورت اشیاء خصوصی ذخیره شده‌اند، \fBcert_private\fP را برابر \fB1\fP مشخص کنید. .sp اگر \fIp11\-kit\fP روی سیستم موجود باشد، آرگومان \fBprovider\fP اختیاری است؛ در صورت حذف، ماژول پیش‌فرض \fBp11\-kit\-proxy.so\fP پرس‌وجو خواهد شد. .sp گزینه \fB\-\-verb\fP می‌تواند پیش از این گزینه برای تولید اطلاعات اشکال‌زدایی استفاده شود. .UNINDENT .SS مذاکره رمز کانال داده .sp نگارش 2.4 و بالاتر OpenVPN قابلیت مذاکره رمز داده‌ای را دارند که برای رمزنگاری بسته‌های داده استفاده می‌شود. این بخش سازوکار را با جزئیات بیشتر و سازوکارهای مختلف سازگاری عقبروی با کارساز و کارخواه‌های قدیمی‌تر شرح می‌دهد. .SS رفتار OpenVPN 2.5 و نگارش‌های بعدی .sp هنگامی که هر دو کارخواه و کارساز دست‌کم OpenVPN 2.5 را اجرا می‌کنند، ترتیب رمزهای گزینه \fB\-\-data\-ciphers\fP کارساز برای انتخاب رمز داده استفاده می‌شود. این بدان معناست که نخستین رمز موجود در آن فهرست که در فهرست \fB\-\-data\-ciphers\fP کارخواه نیز وجود دارد، انتخاب می‌شود. اگر هیچ رمز مشترکی یافت نشود، کارخواه با یک پیام AUTH_FAILED رد می‌شود (همان‌طور که در لاگ کارخواه دیده می‌شود): .INDENT 0.0 .INDENT 3.5 AUTH: Received control message: AUTH_FAILED,Data channel cipher negotiation failed (no shared cipher) .UNINDENT .UNINDENT .sp نگارش 2.5 و بالاتر OpenVPN تنها رمزهای مشخص‌شده در \fB\-\-data\-ciphers\fP را مجاز می‌دانند\&. اگر \fB\-\-data\-ciphers\fP تنظیم نشده باشد، پیش‌فرض \fBAES\-256\-GCM:AES\-128\-GCM\fP است\&. در نگارش 2.6 و بالاتر، در صورت در دسترس بودن Chacha20\-Poly1305، مقدار پیش‌فرض به \fBAES\-256\-GCM:AES\-128\-GCM:CHACHA20\-POLY1305\fP تغییر می‌یابد. .sp برای سازگاری عقبروی، نگارش 2.6 و بالاتر OpenVPN به همراه \fB\-\-compat\-mode 2.4.x\fP (یا پایین‌تر) و OpenVPN 2.5 به طور خودکار رمزی را که با گزینه \fB\-\-cipher\fP مشخص شده به این فهرست اضافه می‌کنند. .SS کارخواه‌های OpenVPN 2.4 .sp پشتیبانی از مذاکره در OpenVPN 2.4 اولین تکرار پیاده‌سازی بود و هنوز اشکالاتی جزئی داشت. هدف اصلی آن \(dqارتقا به AES\-256\-GCM در صورت امکان\(dq بود. یک کارخواه OpenVPN 2.4 که در برابر یک کتابخانه رمزنگاری با پشتیبانی از AES در حالت GCM ساخته شده باشد و گزینه \fB\-\-ncp\-disable\fP را نداشته باشد، همیشه پشتیبانی از \fBAES\-256\-GCM\fP و \fBAES\-128\-GCM\fP را با ارسال \fBIV_NCP=2\fP به کارساز اعلام می‌کند\&. .sp این مورد تنها زمانی مشکل‌ساز می‌شود که گزینه \fB\-\-ncp\-ciphers\fP از مقدار پیش‌فرض \fBAES\-256\-GCM:AES\-128\-GCM\fP به مقداری تغییر کرده باشد که شامل این دو رمز نباشد. هنگامی که یک کارساز OpenVPN تلاش می‌کند از \fBAES\-256\-GCM\fP یا \fBAES\-128\-GCM\fP استفاده کند، اتصال با شکست مواجه خواهد شد. بنابراین توصیه می‌شود برای جلوگیری از این رفتار، همیشه رمزهای \fBAES\-256\-GCM\fP و \fBAES\-128\-GCM\fP را در گزینه \fB\-\-ncp\-ciphers\fP قرار دهید. .SS کارخواه‌های OpenVPN 3 .sp کارخواه‌های مبتنی بر کتابخانه OpenVPN 3.x (\%) گزینه \fB\-\-ncp\-ciphers\fP یا \fB\-\-data\-ciphers\fP قابل پیکربندی ندارند. نگارش‌های جدیدتر به صورت پیش‌فرض رمزهای قدیمی AES\-CBC، BF\-CBC و DES\-CBC را غیرفعال می‌کنند. این کارخواه‌ها همیشه پشتیبانی از همه رمزهای AEAD مورد پشتیبانی خود (\fBAES\-256\-GCM\fP، \fBAES\-128\-GCM\fP و در نگارش‌های جدیدتر همچنین \fBChacha20\-Poly1305\fP) را اعلام می‌کنند. .sp برای پشتیبانی از کارخواه‌های مبتنی بر OpenVPN 3.x باید دست‌کم یکی از این رمزها در گزینه \fB\-\-data\-ciphers\fP کارساز گنجانده شود. .SS کارخواه‌های OpenVPN 2.3 و قدیمی‌تر (و کارخواه‌های دارای \fB\-\-ncp\-disable\fP) .sp هنگامی که یک کارخواه بدون پشتیبانی از مذاکره رمز به یک کارساز متصل می‌شود، رمزی که با گزینه \fB\-\-cipher\fP در پیکربندی کارخواه مشخص شده است باید در گزینه \fB\-\-data\-ciphers\fP کارساز گنجانده شده باشد تا اجازه اتصال به کارخواه داده شود. در غیر این صورت پیام \fBAUTH_FAILED\fP به کارخواه ارسال خواهد شد که نشان‌دهنده نبود رمز مشترک است. .sp اگر کارخواه نگارش 2.3 یا قدیمی‌تر باشد و با آرگومان \fB\-\-enable\-small\fP در \fB\&./configure\fP پیکربندی شده باشد، استفاده از \fBdata\-ciphers\-fallback cipher\fP در پرونده پیکربندی کارساز همراه با رمز صریحی که کارخواه استفاده می‌کند، ضروری است. .SS کارساز OpenVPN 2.4 .sp هنگامی که یک کارخواه پشتیبانی از \fBAES\-128\-GCM\fP و \fBAES\-256\-GCM\fP را اعلام می‌کند (با \fBIV_NCP=2\fP)، یک کارساز OpenVPN 2.4 صرف‌نظر از این که رمز چیست، اولین رمز موجود در \fB\-\-ncp\-ciphers\fP را به کارخواه OpenVPN ارسال می‌کند. برای شبیه‌سازی رفتار یک کارخواه OpenVPN 2.4 تا حد ممکن و دستیابی به سازگاری با راه‌اندازی‌هایی که به این رفتار وابسته‌اند، افزودن \fBAES\-128\-GCM\fP و \fBAES\-256\-GCM\fP به گزینه \fB\-\-data\-ciphers\fP کارخواه الزامی است. OpenVPN 2.5+ تنها در صورتی پرچم \fBIV_NCP=2\fP را اعلام می‌کند که این رمزها موجود باشند. .SS کارسازهای OpenVPN 2.3 و قدیمی‌تر (و کارسازهای دارای \fB\-\-ncp\-disable\fP) .sp رمزی که توسط کارساز استفاده می‌شود باید در \fB\-\-data\-ciphers\fP گنجانده شود تا به کارخواه اجازه اتصال به یک کارساز بدون پشتیبانی از مذاکره رمز داده شود. (برای سازگاری، OpenVPN 2.5 رمزی را که با \fB\-\-cipher\fP تنظیم شده نیز خواهد پذیرفت) .sp اگر کارساز نگارش 2.3 یا قدیمی‌تر باشد و با آرگومان \fB\-\-enable\-small\fP در \fB\&./configure\fP پیکربندی شده باشد، افزودن \fB\-\-data\-ciphers\-fallback cipher\fP به پیکربندی کارخواه همراه با رمز صریحی که کارساز استفاده می‌کند، ضروری است. .SS منسوخ شدن Blowfish در حالت CBC (BF\-CBC) .sp گزینه \fB\-\-cipher\fP در OpenVPN 2.4 و نگارش‌های قدیمی‌تر به طور پیش‌فرض روی \fBBF\-CBC\fP تنظیم شده بود. این مقدار پیش‌فرض برای اطمینان از سازگاری عقبروی هرگز تغییر داده نشد. در OpenVPN 2.5 این رفتار اکنون تغییر یافته است به طوری که اگر \fB\-\-cipher\fP به طور صریح تنظیم نشده باشد، دیگر اجازه استفاده از رمز ضعیف \fBBF\-CBC\fP را نمی‌دهد و لازم است به طور صریح به عنوان \fB\-\-cipher BFC\-CBC\fP اضافه شود یا به \fB\-\-data\-ciphers\fP افزوده گردد\&. .sp ما اکیداً توصیه می‌کنیم که در عوض در اسرع وقت از BF\-CBC به یک رمز امن‌تر مهاجرت کنید. .SH "پیکربندی شبکه (NETWORK CONFIGURATION)" .sp نرم‌افزار OpenVPN از دو بخش پیکربندی شبکه تشکیل شده است. یک بخش \fIپیوند\fP (link) بین سمت محلی و دوردست است، بخش دیگر \fIآداپتور شبکه مجازی\fP (دستگاه tun/tap) است. .SS گزینه‌های پیوند (Link Options) .sp این بخش از گزینه‌های پیوند، گزینه‌های مربوط به اتصال میان میزبان محلی و دوردست را پوشش می‌دهد. .INDENT 0.0 .TP .BI \-\-bind \ keywords اتصال (Bind) به آدرس و درگاه محلی. این مقدار پیش‌فرض است مگر اینکه از یکی از گزینه‌های \fB\-\-proto tcp\-client\fP ، \fB\-\-http\-proxy\fP یا \fB\-\-socks\-proxy\fP استفاده شود. .sp اگر کلیدواژه اختیاری \fBipv6only\fP مشخص شده باشد، OpenVPN هنگام باز شدن یک سوکت IPv6 تنها به IPv6 (برخلاف IPv6 و IPv4) متصل خواهد شد. .TP .B \-\-float به همتای دوردست اجازه می‌دهد تا آدرس IP و/یا شماره درگاه خود را تغییر دهد، مانند تغییرات ناشی از DHCP یا نگاشت‌های NAT. گزینه \fB\-\-float\fP فقط هنگام استفاده از انتقال UDP کار می‌کند. .sp گزینه \fB\-\-float\fP هنگامی که همراه با \fB\-\-remote\fP مشخص شود به یک نشست OpenVPN اجازه می‌دهد ابتدا به همتایی با آدرس مشخص متصل شود، اما اگر بسته‌ها از یک آدرس جدید برسند و تمام آزمون‌های احراز هویت را بگذرانند، آدرس جدید کنترل نشست را در دست خواهد گرفت. این ویژگی زمانی مفید است که به همتایی با آدرس پویا مانند یک کاربر dial\-in یا کارخواه DHCP متصل می‌شوید. .sp در اصل، \fB\-\-float\fP به OpenVPN می‌گوید که بسته‌های احراز هویت شده را از هر آدرسی بپذیرد، نه فقط آدرسی که در گزینه \fB\-\-remote\fP مشخص شده است. .TP .BI \-\-fragment \ args نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX fragment max fragment max mtu .EE .UNINDENT .UNINDENT .sp قطعه‌بندی داخلی دیتاگرام را فعال می‌کند تا هیچ دیتاگرام UDP که بزرگ‌تر از \fBmax\fP بایت باشد ارسال نشود. .sp اگر پارامتر \fBmtu\fP وجود داشته باشد، پارامتر \fBmax\fP طوری تفسیر می‌شود که شامل سربار کپسوله‌سازی IP و UDP باشد. پارامتر \fBmtu\fP در نسخه 2.6.0 نرم‌افزار OpenVPN معرفی شده است. .sp اگر پارامتر \fBmtu\fP وجود نداشته باشد، پارامتر \fBmax\fP همانند پارامتر \fB\-\-link\-mtu\fP تفسیر می‌شود، یعنی اندازه بسته UDP پس از اضافه شدن سربار کپسوله‌سازی، بدون احتساب سرآیند خود UDP. .sp گزینه \fB\-\-fragment\fP تنها زمانی کاربرد دارد که از پروتکل UDP استفاده می‌کنید (\fB\-\-proto udp\fP). .sp گزینه \fB\-\-fragment\fP به اندازه ۴ بایت سربار به ازای هر دیتاگرام اضافه می‌کند. .sp گزینه \fB\-\-mssfix\fP را در ادامه به عنوان یک گزینه مرتبط و مهم با \fB\-\-fragment\fP\& ببینید. .sp همچنین باید توجه داشت که این گزینه برای جایگزینی قطعه‌بندی UDP در سطح پشته IP در نظر گرفته نشده است. این گزینه تنها به عنوان آخرین راهکار در زمانی که کشف MTU مسیر (path MTU discovery) مختل شده است کاربرد دارد. استفاده از این گزینه نسبت به اصلاح کشف MTU مسیر برای پیوند IP شما و استفاده از قطعه‌بندی بومی IP به جای آن، کارایی کمتری دارد. .sp با این حال، شرایطی وجود دارد که استفاده از قابلیت قطعه‌بندی داخلی OpenVPN\(aq ممکن است تنها گزینه شما باشد، مانند انتقال یک جریان چندپخشی (multicast) بر بستر UDP از طریق تونل که نیازمند قطعه‌بندی است. .TP .BI \-\-keepalive \ args یک دستورالعمل کمکی که برای ساده‌سازی بیان \fB\-\-ping\fP و \fB\-\-ping\-restart\fP\& طراحی شده است. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX keepalive interval timeout .EE .UNINDENT .UNINDENT .sp هر \fBinterval\fP ثانیه یک پینگ ارسال می‌کند، و اگر پینگی به مدت \fBtimeout\fP ثانیه دریافت نشد، مجدداً راه‌اندازی می‌شود. هر دو مقدار به ۸۶۴۰۰ ثانیه محدود هستند. از آنجا که مهلت زمانی در سمت سرور دو برابر می‌شود، \fBtimeout\fP در حالت سرور به ۴۳۲۰۰ ثانیه محدود است. .sp این گزینه را می‌توان در هر دو سمت کارخواه و سرور استفاده کرد، اما قرار دادن آن در سمت سرور کافی است چرا که گزینه‌های مناسب \fB\-\-ping\fP و \fB\-\-ping\-restart\fP را به کارخواه ارسال (push) می‌کند. اگر در هر دو سمت سرور و کارخواه استفاده شود، مقادیر ارسال‌شده از سرور مقادیر محلی کارخواه را بازنویسی خواهند کرد. .sp آرگومان \fBtimeout\fP در سمت سرور دو برابر طولانی‌تر خواهد بود. این امر تضمین می‌کند که اتمام مهلت زمانی در سمت کارخواه پیش از قطع اتصال توسط سمت سرور تشخیص داده شود. .sp برای مثال، \fB\-\-keepalive 10 60\fP به صورت زیر بسط داده می‌شود: .INDENT 7.0 .INDENT 3.5 .sp .EX if mode server: ping 10 # Argument: interval ping\-restart 120 # Argument: timeout*2 push \(dqping 10\(dq # Argument: interval push \(dqping\-restart 60\(dq # Argument: timeout else ping 10 # Argument: interval ping\-restart 60 # Argument: timeout .EE .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-link\-mtu \ n \fBمنسوخ‌شده\fP حد بالایی را برای اندازه بسته‌های UDP که بین همتایان OpenVPN ارسال می‌شوند تعیین می‌کند. \fIبهتر است این پارامتر را تنظیم نکنید مگر اینکه بدانید چه کار می‌کنید.\fP .sp به دلیل متغیر بودن اندازه سرایند IP (۲۰ بایت برای IPv4 و ۴۰ بایت برای IPv6) و الگوریتم رمزنگاری کانال داده که به صورت پویا مذاکره می‌شود، این گزینه قابل اعتماد نیست. توصیه می‌شود به جای آن tun\-mtu را با فضای خالی کافی تنظیم کنید. .TP .BI \-\-local \ args نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX local host|* [port] [protocol] .EE .UNINDENT .UNINDENT .sp نام میزبان محلی یا آدرس IP و درگاه برای bind. در صورت تعیین، OpenVPN به این آدرس متصل (bind) می‌شود. در صورت عدم تعیین، OpenVPN به تمام رابط‌ها متصل می‌شود. \(aq*\(aq می‌تواند به عنوان نام میزبان استفاده شود و به معنی \(aqهر میزبان\(aq است (OpenVPN روی آنچه توسط سیستم‌عامل برگردانده می‌شود شنود خواهد کرد). روی یک کلاینت، یا در حالت نقطه\-به\-نقطه، این مقدار فقط یک بار می‌تواند مشخص شود (۱ سوکت). .sp در راه‌اندازی OpenVPN در حالت \fB\-\-server\fP، این مقدار می‌تواند چندین بار مشخص شود تا چندین سوکت شنود روی آدرس‌ها و/یا درگاه‌های مختلف باز کند. برای تعیین چندین درگاه شنود بدون مشخص کردن آدرس، از \(aq*\(aq برای نشان دادن \(dqاستفاده از مقدار پیش‌فرضی که سیستم‌عامل ارائه می‌دهد\(dq استفاده کنید، برای \(dqتمام آدرس‌های IPv4\(dq از \(dq0.0.0.0\(dq و برای \(dqتمام آدرس‌های IPv6\(dq از \(aq::\(aq استفاده کنید. \fB\-\-local\fP متضمن \fB\-\-bind\fP است\&. .TP .BI \-\-lport \ port شماره درگاه پیش‌فرض TCP/UDP را تنظیم می‌کند. نمی‌تواند همراه با گزینه \fB\-\-nobind\fP استفاده شود. شماره درگاه \fB0\fP تنها برای دستیابی به \(dqاتصال bind() به یک شماره درگاه تصادفی تخصیص‌یافته\(dq در صورتی پذیرفته می‌شود که یک آدرس IP برای اتصال با \fB\-\-local\fP مشخص شده باشد\&. .TP .BI \-\-mark \ value بسته‌های رمزگذاری‌شده ارسالی را با \fBvalue\fP علامت‌گذاری می‌کند\&. مقدار mark می‌تواند در قوانین مسیریابی سیاستی (policy routing) و فیلتر بسته (packetfilter) مطابقت داده شود. این گزینه فقط در لینوکس پشتیبانی می‌شود و در سایر سیستم‌های عامل کاری انجام نمی‌دهد. .TP .BI \-\-mode \ m حالت اصلی OpenVPN را تعیین می‌کند. به صورت پیش‌فرض، OpenVPN در حالت نقطه\-به\-نقطه (\fBp2p\fP) اجرا می‌شود. OpenVPN 2.0 حالت جدیدی (\fBserver\fP) معرفی می‌کند که قابلیت سرور چندکلاینتی را پیاده‌سازی می‌نماید. .TP .BI \-\-mssfix \ args نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX mssfix max [mtu] mssfix max [fixed] mssfix .EE .UNINDENT .UNINDENT .sp به نشست‌های TCP در حال اجرا روی تونل اعلام می‌کند که اندازه بسته ارسالی خود را به گونه‌ای محدود کنند که پس از کپسوله‌سازی توسط OpenVPN، اندازه بسته UDP حاصل که OpenVPN به همتای خود ارسال می‌کند از \fBmax\fP بایت تجاوز نکند. مقدار پیش‌فرض \fB1492 mtu\fP است\&. برای غیرفعال کردن mssfix از مقدار \fB0\fP به عنوان max استفاده کنید. .sp در صورت تعیین پارامتر \fBmtu\fP، مقدار \fBmax\fP به عنوان اندازه نهایی بسته‌های VPN شامل سرایند IP و UDP تفسیر می‌شود. پشتیبانی از پارامتر \fBmtu\fP در نسخه 2.6.0 نرم‌افزار OpenVPN اضافه شد. .sp اگر پارامتر \fBmtu\fP مشخص نشده باشد، پارامتر \fBmax\fP به همان روش پارامتر \fB\-\-link\-mtu\fP تفسیر می‌شود؛ یعنی اندازه بسته UDP پس از اضافه شدن سربار کپسوله‌سازی، اما بدون در نظر گرفتن سرایند خود UDP. بسته نهایی حداکثر ۲۸ بایت برای IPv4 و ۴۸ بایت برای IPv6 بزرگتر خواهد بود (۲۰/۴۰ بایت برای سرایند IP و ۸ بایت برای سرایند UDP). مقدار پیش‌فرض 1450 اجازه می‌دهد بسته‌های OpenVPN روی پیوندی با MTU برابر با 1478 یا بالاتر بدون قطعه‌قطعه شدن در سطح IP منتقل شوند (و 1498 برای IPv6). .sp اگر پارامتر \fBfixed\fP تعیین شود، OpenVPN تلاشی برای محاسبه سربار کپسوله‌سازی VPN نمی‌کند، بلکه مقدار MSS را برای محدود کردن اندازه بسته‌های IP بار داده (payload) به عدد مشخص شده تنظیم می‌کند. برای بسته‌های IPv4 مقدار MSS به mssfix \- 40 و برای بسته‌های IPv6 به mssfix \- 60 کاهش می‌یابد. .sp اگر \fB\-\-mssfix\fP بدون هیچ پارامتری مشخص شود، در صورت تعیین \fB\-\-fragment\fP پارامترهای آن را به ارث می‌برد، در غیر این صورت از مقدار پیش‌فرض برای \fB\-\-mssfix\fP استفاده می‌کند. .sp گزینه \fB\-\-mssfix\fP تنها زمانی کاربرد دارد که از پروتکل UDP برای ارتباط همتا\-به\-همتای OpenVPN استفاده کنید، یعنی \fB\-\-proto udp\fP\&. .sp \fB\-\-mssfix\fP و \fB\-\-fragment\fP در حالت ایده‌آل می‌توانند با هم استفاده شوند؛ به طوری که \fB\-\-mssfix\fP در وهله اول تلاش می‌کند تا TCP نیازی به قطعه‌قطعه کردن بسته‌ها نداشته باشد، و اگر بسته‌های بزرگی به هر حال عبور کنند (از پروتکل‌هایی غیر از TCP)، \fB\-\-fragment\fP آن‌ها را به صورت داخلی قطعه‌قطعه می‌کند. .sp گزینه‌های \fB\-\-max\-packet\-size\fP، \fB\-\-fragment\fP و \fB\-\-mssfix\fP برای دور زدن مواردی طراحی شده‌اند که کشف Path MTU در مسیر شبکه بین همتایان OpenVPN دچار اختلال است. .sp نشانه معمول چنین اختلالی، اتصال OpenVPN است که با موفقیت برقرار می‌شود، اما در حین استفاده فعال متوقف می‌گردد. .sp اگر \fB\-\-fragment\fP و \fB\-\-mssfix\fP با هم استفاده شوند، \fB\-\-mssfix\fP پارامتر پیش‌فرض \fBmax\fP خود را از گزینه \fB\-\-fragment max\fP دریافت می‌کند. .sp بنابراین، می‌توان حداکثر اندازه بسته UDP را با گزینه‌های زیر به 1300 کاهش داد (یک راهکار اولیه مناسب برای حل مشکلات اتصال مربوط به MTU): .INDENT 7.0 .INDENT 3.5 .sp .EX \-\-tun\-mtu 1500 \-\-fragment 1300 \-\-mssfix .EE .UNINDENT .UNINDENT .sp اگر گزینه \fBmax\-packet\-size size\fP در پیکربندی استفاده شود، به گونه‌ای عمل می‌کند که گویی \fBmssfix size mtu\fP در پیکربندی مشخص شده است. .UNINDENT .INDENT 0.0 .TP .BI \-\-mtu\-disc \ type آیا کشف MTU مسیر (Path MTU discovery) روی کانال TCP/UDP انجام شود؟ تنها در سیستم‌عامل‌هایی مانند لینوکس پشتیبانی می‌شود که از فراخوان سیستمی لازم برای تنظیم آن پشتیبانی می‌کنند. .sp نوع‌های معتبر: .sp \fBno\fP هرگز فریم‌های DF (Don\(aqt Fragment) ارسال نشود .sp \fBmaybe\fP استفاده از راهنمایی‌های مبتنی بر مسیر .sp \fByes\fP همیشه DF (Don\(aqt Fragment) .TP .B \-\-mtu\-test برای اندازه‌گیری تجربی MTU هنگام راه‌اندازی اتصال، گزینهٔ \fB\-\-mtu\-test\fP را به پیکربندی خود اضافه کنید. برنامهٔ OpenVPN بسته‌های پینگ در اندازه‌های مختلف را به همتای راه دور می‌فرستد و بزرگ‌ترین بسته‌هایی را که با موفقیت دریافت شده‌اند اندازه‌گیری می‌کند. فرایند \fB\-\-mtu\-test\fP معمولاً حدود ۳ دقیقه طول می‌کشد تا کامل شود. .TP .B \-\-nobind به آدرس و درگاه محلی متصل (bind) نشود. پشتهٔ IP یک درگاه پویا برای بسته‌های بازگشتی اختصاص خواهد داد. از آنجا که مقدار درگاه پویا از قبل توسط یک همتا قابل شناسایی نیست، این گزینه تنها برای همتاهایی مناسب است که اتصال را با استفاده از گزینهٔ \fB\-\-remote\fP آغاز می‌کنند. .TP .B \-\-passtos فیلد TOS بستهٔ تونل را برابر با مقدار TOS بار داده (payload) قرار می‌دهد. .TP .BI \-\-ping \ n اگر برای حداقل \fBn\fP ثانیه هیچ بسته‌ای ارسال نشده باشد، به میزبان راه دور روی کانال کنترلی TCP/UDP پینگ بفرست (گزینهٔ \fB\-\-ping\fP را روی هر دو همتا مشخص کنید تا بسته‌های پینگ در هر دو جهت ارسال شوند، زیرا بسته‌های پینگ OpenVPN مانند بسته‌های پینگ IP پژواک نمی‌شوند). .sp حداکثر مقدار برای \fBn\fP برابر ۸۶۴۰۰ ثانیه است. .sp این گزینه دو کاربرد در نظر گرفته شده دارد: .INDENT 7.0 .IP 1. 3 سازگاری با دیوارهای آتش با قابلیت حفظ وضعیت (stateful). پینگ دوره‌ای تضمین می‌کند که قاعدهٔ دیوار آتش با حفظ وضعیت که اجازهٔ عبور به بسته‌های UDP برنامهٔ OpenVPN می‌دهد، منقضی (time out) نشود. .IP 2. 3 فراهم کردن پایه‌ای برای میزبان راه دور جهت آزمایش وجود همتای خود با استفاده از گزینهٔ \fB\-\-ping\-exit\fP\&. .UNINDENT .sp هنگام استفاده از OpenVPN در حالت سرور، \fB\-\-keepalive\fP را نیز ببینید. .TP .BI \-\-ping\-exit \ n باعث خروج OpenVPN پس از گذشت \fBn\fP ثانیه بدون دریافت پینگ یا بسته‌ای دیگر از راه دور می‌شود. این گزینه می‌تواند با \fB\-\-inactive\fP، \fB\-\-ping\fP و \fB\-\-ping\-exit\fP ترکیب شود تا یک قطع ارتباط دو سطحی بر اثر عدم فعالیت ایجاد کند. .sp حداکثر مقدار برای \fBn\fP برابر ۸۶۴۰۰ ثانیه است. .sp برای نمونه، .INDENT 7.0 .INDENT 3.5 .sp .EX openvpn [options...] \-\-inactive 3600 \-\-ping 10 \-\-ping\-exit 60 .EE .UNINDENT .UNINDENT .sp هنگامی که روی هر دو همتا استفاده شود، باعث می‌شود اگر همتا قطع ارتباط کرد، OpenVPN ظرف ۶۰ ثانیه خارج شود، اما در صورتی که دادهٔ تونل واقعی رد و بدل نشود، پس از یک ساعت خارج خواهد شد. .TP .BI \-\-ping\-restart \ n مشابه \fB\-\-ping\-exit\fP، اما پس از گذشت \fBn\fP ثانیه بدون دریافت پینگ یا بستهٔ دیگر از راه دور، راه‌اندازی مجدد با \fBSIGUSR1\fP را فعال می‌کند. .sp حداکثر مقدار برای \fBn\fP برابر ۸۶۴۰۰ ثانیه است. .sp این گزینه در مواردی مفید است که همتای راه دور دارای آدرس IP پویا است و از یک نام DNS با TTL پایین برای ردیابی آدرس IP با استفاده از سرویسی مانند \% به همراه یک کلاینت DNS پویا مانند \fBddclient\fP استفاده می‌شود. .sp اگر دسترسی به همتا امکان‌پذیر نباشد، راه‌اندازی مجدد فعال شده و باعث بازخوانی مجدد نام میزبان مشخص‌شده در \fB\-\-remote\fP می‌شود (در صورتی که \fB\-\-resolv\-retry\fP نیز مشخص شده باشد). .sp در حالت سرور، \fB\-\-ping\-restart\fP، \fB\-\-inactive\fP یا هر نوع سیگنال تولیدشدهٔ داخلی دیگر همیشه روی اشیاء نمونهٔ کلاینت به‌صورت جداگانه اعمال می‌شود، نه روی کل سرور. همچنین توجه داشته باشید که در حالت سرور، هر سیگنال تولیدشدهٔ داخلی که معمولاً باعث راه‌اندازی مجدد می‌شود، در عوض باعث حذف شیء نمونهٔ کلاینت خواهد شد. .sp در حالت کلاینت، پارامتر \fB\-\-ping\-restart\fP به‌طور پیش‌فرض روی ۱۲۰ ثانیه تنظیم شده است. این پیش‌فرض تا زمانی که کلاینت مقدار جایگزین را از سرور (بر اساس تنظیم \fB\-\-keepalive\fP در پیکربندی سرور) دریافت کند، برقرار خواهد بود. برای غیرفعال کردن پیش‌فرض ۱۲۰ ثانیه، مقدار \fB\-\-ping\-restart 0\fP را روی کلاینت تنظیم کنید. .sp برای اطلاعات بیشتر دربارهٔ \fBSIGUSR1\fP بخش سیگنال‌ها را در ادامه ببینید. .sp توجه داشته باشید که رفتار \fBSIGUSR1\fP می‌تواند توسط گزینه‌های \fB\-\-persist\-tun\fP، \fB\-\-persist\-local\-ip\fP و \fB\-\-persist\-remote\-ip\fP تغییر کند. .sp همچنین توجه داشته باشید که \fB\-\-ping\-exit\fP و \fB\-\-ping\-restart\fP مانعة‌الجمع هستند و نمی‌توان آن‌ها را با هم استفاده کرد. .TP .B \-\-ping\-timer\-rem تایمر \fB\-\-ping\-exit\fP / \fB\-\-ping\-restart\fP را تنها در صورتی اجرا کن که یک آدرس راه دور داشته باشیم. اگر دیمن را در حالت شنود آغاز می‌کنید (یعنی بدون همتای صریح \fB\-\-remote\fP) و نمی‌خواهید زمان‌سنجی مهلت زمانی تا زمان اتصال یک همتای راه دور آغاز شود، از این گزینه استفاده کنید. .TP .BI \-\-proto \ p از پروتکل \fBp\fP برای ارتباط با میزبان راه دور استفاده کن. \fBp\fP می‌تواند \fBudp\fP، \fBtcp\-client\fP یا \fBtcp\-server\fP باشد. همچنین می‌توانید با مشخص کردن \fBp\fP به‌ترتیب به‌صورت \fBudp4\fP، \fBtcp4\-client\fP، \fBtcp4\-server\fP یا \fBudp6\fP، \fBtcp6\-client\fP، \fBtcp6\-server\fP، برنامهٔ OpenVPN را به استفادهٔ تنها از IPv4 یا تنها IPv6 محدود کنید. .sp پروتکل پیش‌فرض در صورت مشخص نشدن \fB\-\-proto\fP، \fBudp\fP است. .sp برای کارکرد UDP، باید \fB\-\-proto udp\fP روی هر دو همتا مشخص شود. .sp برای کارکرد TCP، یک همتا باید از \fB\-\-proto tcp\-server\fP و همتای دیگر از \fB\-\-proto tcp\-client\fP استفاده کند. همتایی که با \fBtcp\-server\fP آغاز شده باشد برای اتصال ورودی به‌طور نامحدود منتظر می‌ماند. همتایی که با \fBtcp\-client\fP آغاز شده تلاش به اتصال می‌کند و در صورت شکست، ۵ ثانیه متوقف شده (قابل تنظیم از طریق گزینهٔ \fB\-\-connect\-retry\fP) و مجدداً به‌طور نامحدود یا تا N بار تلاش (قابل تنظیم از طریق گزینهٔ \fB\-\-connect\-retry\-max\fP) تلاش خواهد کرد. هر دو کلاینت و سرور TCP در صورتی که هر یک از طرفین اتصال را بازنشانی کند، سیگنال راه‌اندازی مجدد SIGUSR1 را شبیه‌سازی می‌کنند. .sp برنامهٔ OpenVPN برای عملکرد بهینه روی UDP طراحی شده است، اما قابلیت TCP برای شرایطی که UDP قابل استفاده نیست فراهم شده است. در مقایسه با UDP، پروتکل TCP هنگام استفاده روی شبکه‌های غیرقابل‌اطمینان یا شلوغ معمولاً تا حدی کارایی و پایداری کمتری خواهد داشت. .sp این مقاله برخی از مشکلات تونل‌سازی IP روی TCP را تشریح می‌کند: \% .sp با این حال، موارد خاصی وجود دارد که در آن‌ها استفاده از TCP ممکن است از دیدگاه امنیت و پایداری سودمند باشد، مانند تونل‌سازی پروتکل‌های غیر IP یا پروتکل‌های UDP در سطح برنامه، یا تونل‌سازی پروتکل‌هایی که لایهٔ قابلیت‌اطمینان داخلی ندارند. .UNINDENT .INDENT 0.0 .TP .BI \-\-port \ port شماره یا نام درگاه TCP/UDP برای هر دو بخش محلی و دوردست (هر دو گزینه \fB\-\-lport\fP و \fB\-\-rport\fP را روی درگاه داده‌شده تنظیم می‌کند). مقدار پیش‌فرض فعلی یعنی 1194 نشان‌دهنده شماره درگاه رسمی اختصاص‌یافته توسط IANA برای OpenVPN است و از نسخه 2.0\-beta17 استفاده می‌شود. نسخه‌های پیشین از درگاه 5000 به عنوان پیش‌فرض استفاده می‌کردند. .TP .BI \-\-rport \ port تنظیم شماره یا نام درگاه TCP/UDP مورد استفاده توسط گزینه \fB\-\-remote\fP. درگاه همچنین می‌تواند مستقیماً با استفاده از گزینه \fB\-\-remote\fP تنظیم شود. .TP .BI \-\-replay\-window \ args تغییر اندازه پنجره لغزان و پنجره زمانی محافظت در برابر تکرار (replay protection). .sp ساختارهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX replay\-window n replay\-window n t .EE .UNINDENT .UNINDENT .sp استفاده از یک پنجره لغزان محافظت در برابر تکرار با اندازه \fBn\fP و پنجره زمانی \fBt\fP ثانیه. .sp به‌طور پیش‌فرض \fBn\fP برابر \fB64\fP (پیش‌فرض IPSec) و \fBt\fP برابر \fB15\fP ثانیه است. .sp این گزینه تنها در حالت UDP کاربرد دارد، یعنی زمانی که \fB\-\-proto udp\fP مشخص شده باشد یا هیچ گزینه \fB\-\-proto\fP تعیین نشده باشد. .sp هنگامی که OpenVPN بسته‌های IP را از طریق UDP تونل می‌کند، این احتمال وجود دارد که بسته‌ها دور ریخته شوند یا بدون ترتیب تحویل داده شوند. از آنجا که OpenVPN، همانند IPSec، لایه فیزیکی شبکه را شبیه‌سازی می‌کند، دنباله بسته‌های نامرتب را می‌پذیرد و چنین بسته‌هایی را با همان ترتیبی که دریافت شده‌اند به پشته پروتکل TCP/IP تحویل می‌دهد، به شرطی که چندین شرط را برآورده کنند. .INDENT 7.0 .IP a. 3 بسته نمی‌تواند تکراری باشد. .IP b. 3 اگر بسته‌ای بدون ترتیب برسد، تنها در صورتی پذیرفته می‌شود که تفاوت بین شماره ترتیب آن و بالاترین شماره ترتیبی که تاکنون دریافت شده کمتر از \fBn\fP\& باشد. .IP c. 3 اگر بسته‌ای بدون ترتیب برسد، تنها در صورتی پذیرفته می‌شود که حداکثر تا \fBt\fP ثانیه پس از هر بسته‌ای با شماره ترتیب بالاتر برسد. .UNINDENT .sp اگر از یک پیوند شبکه‌ای با خط لوله بزرگ استفاده می‌کنید (به این معنی که حاصل‌ضرب پهنای باند و تأخیر بالا است)، ممکن است بخواهید از مقدار بزرگ‌تری برای \fBn\fP\& استفاده کنید. پیوندهای ماهواره‌ای به‌ویژه اغلب به این موضوع نیاز دارند. .sp اگر OpenVPN را با \fB\-\-verb 4\fP اجرا کنید، هر بار که بیشترین عقب‌گرد شماره ترتیب دیده‌شده تا کنون افزایش یابد، پیام \(dqPID_ERR replay\-window backtrack occurred [x]\(dq را خواهید دید. از این پیام می‌توان برای کالیبره کردن \fBn\fP\& استفاده کرد. .sp در مورد روش مناسب برای رسیدگی به بازآرایی بسته‌ها در لایه امنیتی، اختلاف نظرهایی وجود دارد. .sp به‌طور مشخص، لایه امنیتی تا چه میزان باید از پروتکل کپسوله‌شده در برابر حملاتی که خود را به عنوان اتلاف بسته و بازآرایی عادی رخ‌داده در شبکه‌های IP جا می‌زنند، محافظت کند؟ .sp رویکرد IPSec و OpenVPN این است که بازآرایی بسته‌ها را در یک پنجره ثابت مشخص از شماره‌های ترتیب مجاز بدانند. .sp برنامه OpenVPN با محدود کردن اندازه پنجره از نظر زمانی و همچنین فضای ترتیبی، مدل IPSec را ارتقا می‌دهد. .sp برنامه OpenVPN همچنین انتقال بر بستر TCP را به عنوان یک گزینه اضافه می‌کند (چیزی که توسط IPSec ارائه نمی‌شود)، که در این حالت OpenVPN می‌تواند موضع بسیار سخت‌گیرانه‌ای در قبال حذف و بازآرایی پیام‌ها اتخاذ کند: اجازه آن را ندهد. از آنجا که TCP قابلیت اطمینان را تضمین می‌کند، هرگونه رخداد اتلاف بسته یا بازآرایی می‌تواند یک حمله در نظر گرفته شود. .sp از این حیث، می‌توان گفت هنگامی که پروتکل‌های کاربردی غیر IP یا UDP که ممکن است در برابر حمله حذف یا بازآرایی پیام آسیب‌پذیر باشند تونل می‌شوند (حملاتی که در محدوده پارامترهای عملیاتی عادی شبکه‌های IP قرار می‌گیرند)، انتقال تونل بر بستر TCP ترجیح داده می‌شود. .sp بنابراین می‌توان گفت که هرگز نباید یک پروتکل غیر IP یا پروتکل کاربردی UDP را روی UDP تونل کرد، اگر آن پروتکل ممکن است در برابر حمله حذف یا بازآرایی پیامی که در محدوده پارامترهای عملیاتی مورد انتظار از لایه فیزیکی IP قرار می‌گیرد، آسیب‌پذیر باشد. این مشکل به سادگی با استفاده از TCP به عنوان لایه انتقال VPN برطرف می‌شود. .TP .BI \-\-replay\-persist \ file پایدار نگه داشتن وضعیت محافظت در برابر تکرار در طول نشست‌ها با استفاده از \fBfile\fP برای ذخیره و بارگذاری مجدد وضعیت. .sp این گزینه یک نسخه دیسکی از وضعیت فعلی محافظت در برابر تکرار (یعنی جدیدترین برچسب زمانی و شماره ترتیب بسته دریافت‌شده از همتای دوردست) را نگه می‌دارد، تا در صورتی که یک نشست OpenVPN متوقف و دوباره راه‌اندازی شد، هرگونه تکرار بسته‌هایی که از قبل توسط نشست قبلی دریافت شده بودند را رد کند. .sp این گزینه تنها زمانی معنادار است که محافظت در برابر تکرار فعال باشد (پیش‌فرض) و شما از حالت TLS به همراه \fB\-\-tls\-auth\fP\& استفاده کنید. .TP .BI \-\-session\-timeout \ n پس از گذشت \fBn\fP ثانیه از آغاز نشست، سیگنال \fBSIGTERM\fP را برای نمونه کلاینت ارسال می‌کند و OpenVPN را مجبور به قطع ارتباط می‌نماید. در حالت کلاینت، OpenVPN ارتباط را قطع کرده و خارج می‌شود، در حالی که در حالت سرور تمام نشست‌های کلاینت خاتمه می‌یابند. .sp این گزینه همچنین می‌تواند در پرونده پیکربندی نمونه کلاینت با استفاده از \fB\-\-client\-config\-dir\fP تعیین شود یا به‌طور پویا با استفاده از یک اسکریپت \fB\-\-client\-connect\fP تولید گردد. در این حالت‌ها، تنها نشست کلاینت مربوطه خاتمه می‌یابد. .TP .BI \-\-socket\-flags \ flags اعمال پرچم‌های داده‌شده به سوکت انتقال OpenVPN. در حال حاضر تنها از \fBTCP_NODELAY\fP پشتیبانی می‌شود. .sp پرچم سوکت \fBTCP_NODELAY\fP در حالت TCP مفید است و باعث می‌شود هسته، بسته‌های تونل را بلافاصله از طریق اتصال TCP ارسال کند، بدون اینکه سعی کند چند بسته کوچک‌تر را در یک بسته بزرگ‌تر دسته‌بندی نماید. این امر می‌تواند به بهبود چشمگیری در تأخیر منجر شود. .sp از نسخه 2.7.6 برنامه OpenVPN، پرچم \fBTCP_NODELAY\fP به‌طور پیش‌فرض روی هر سوکت TCP فعال است، بنابراین مشخص کردن آن در اینجا دیگر ضروری نیست. .UNINDENT .INDENT 0.0 .TP .B \-\-tcp\-nodelay \fBTCP_NODELAY\fP به طور پیش‌فرض روی هر سوکت TCP فعال است. در \fB\-\-mode server\fP این گزینه علاوه بر این \fBsocket\-flags TCP_NODELAY\fP را به کلاینت‌های در حال اتصال ارسال (push) می‌کند، تا کلاینت‌های قدیمی‌تر از 2.7.6 نیز آن را دریافت کنند. این گزینه را می‌توان پس از اینکه چنین کلاینت‌هایی دیگر در حال استفاده نبودند، حذف کرد. .sp ماکرو به صورت زیر بسط می‌یابد: .INDENT 7.0 .INDENT 3.5 .sp .EX if mode server: push \(dqsocket\-flags TCP_NODELAY\(dq .EE .UNINDENT .UNINDENT .TP .BI \-\-max\-packet\-size \ size این گزینه به OpenVPN دستور می‌دهد تا با محدود کردن اندازه بسته کانال کنترلی و تنظیم \fB\-\-mssfix\fP\&، تلاش کند بیشینه اندازه بسته در هنگام نوشتن (on\-write) را محدود نماید. .sp OpenVPN تلاش خواهد کرد پیام‌های کانال کنترلی خود را زیر این اندازه نگه دارد، اما به دلیل برخی محدودیت‌ها در پروتکل، این امر همیشه امکان‌پذیر نیست. اگر این گزینه تنظیم نشود، پیش‌فرض بیشینه اندازه بسته کنترلی 1250 خواهد بود. اندازه بسته کانال کنترلی به مقادیری بین 154 و 2048 محدود خواهد شد. بیشینه اندازه بسته شامل سربار کپسوله‌سازی مانند UDP و IP است. .sp از نظر \fB\-\-mssfix\fP به این صورت گسترش می‌یابد: .INDENT 7.0 .INDENT 3.5 .sp .EX mssfix size mtu .EE .UNINDENT .UNINDENT .sp اگر نیاز دارید \fB\-\-mssfix\fP را برای کانال داده و بیشینه اندازه بسته کانال کنترلی به صورت مستقل تنظیم کنید، ابتدا از \fB\-\-max\-packet\-size\fP و سپس از یک \fB\-\-mssfix\fP در پیکربندی استفاده کنید. .sp به طور کلی اندازه پیش‌فرض 1250 به جز در موارد خاص تقریباً در همه جا کار می‌کند، به‌ویژه از آنجا که IPv6 نیازمند یک MTU به اندازه 1280 یا بزرگ‌تر است. .UNINDENT .SS آداپتور شبکه مجازی (رابط VPN) .sp گزینه‌های این بخش مربوط به پیکربندی رابط شبکه مجازی tun/tap، از جمله تنظیم آدرس IP در VPN و مسیریابی شبکه است. .INDENT 0.0 .TP .BI \-\-bind\-dev \ device (فقط لینوکس) \fBdevice\fP را تنظیم می‌کند تا سوکت سرور را به یک دستگاه Virtual Routing and Forwarding (VRF) متصل کند .TP .B \-\-block\-ipv6 در کلاینت، به جای ارسال بسته‌های IPv6 روی تونل VPN، به تمام بسته‌های IPv6 با یک پیام ICMPv6 no route host پاسخ داده می‌شود. در سرور، به تمام بسته‌های IPv6 از سمت کلاینت‌ها با یک پیام ICMPv6 no route to host پاسخ داده می‌شود. این گزینه برای مواردی در نظر گرفته شده است که IPv6 باید مسدود شود و گزینه‌های دیگر در دسترس نیستند. \fB\-\-block\-ipv6\fP در صورت تنظیم، از IPv6 راه دور به عنوان آدرس مبدا بسته‌های ICMPv6 استفاده می‌کند، در غیر این صورت از \fBfe80::7\fP به عنوان آدرس مبدا استفاده خواهد کرد. .sp برای معنادار بودن این گزینه باید حتماً ترافیک را به سمت رابط tun مسیریابی کنید. بلوک پیکربندی نمونه زیر تمام ترافیک IPv6 را به OpenVPN ارسال می‌کند و به تمام درخواست‌ها با no route to host پاسخ می‌دهد، که به طور موثری IPv6 را مسدود می‌کند (جهت جلوگیری از نشت اتصالات IPv6 از کلاینت‌های dual\-stack در سرویس‌های VPN با IPv4 تنها). .INDENT 7.0 .TP .B \fBClient config\fP .INDENT 7.0 .INDENT 3.5 .sp .EX \-\-ifconfig\-ipv6 fd15:53b6:dead::2/64 fd15:53b6:dead::1 \-\-redirect\-gateway ipv6 \-\-block\-ipv6 .EE .UNINDENT .UNINDENT .TP .B \fBServer config\fP ارسال یک پیکربندی ipv6 «معتبر» به کلاینت و مسدود کردن آن در سرور .INDENT 7.0 .INDENT 3.5 .sp .EX \-\-push \(dqifconfig\-ipv6 fd15:53b6:dead::2/64 fd15:53b6:dead::1\(dq \-\-push \(dqredirect\-gateway ipv6\(dq \-\-block\-ipv6 .EE .UNINDENT .UNINDENT .UNINDENT .sp نکته: این گزینه بر ترافیک ارسال شده از سمت سرور به طرف کلاینت تاثیری نمی‌گذارد (نه در سمت سرور و نه در سمت کلاینت). این امر ضروری دانسته نشده است، زیرا با عدم پیکربندی IPv6 روی tun سرور یا تنظیم یک قانون دیوار آتش در سمت سرور، به راحتی می‌توان از چنین ترافیکی جلوگیری کرد. .TP .BI \-\-dev \ device دستگاه شبکه مجازی TUN/TAP که می‌تواند \fBtunX\fP، \fBtapX\fP، \fBnull\fP یا یک رشته نام دلخواه باشد (\fBX\fP را می‌توان برای یک دستگاه پویا حذف کرد.) .sp اگر نه \fB\-\-dev\fP و نه \fB\-\-dev\-type\fP مشخص نشده باشند، OpenVPN به طور پیش‌فرض روی \fBtun\fP قرار می‌گیرد، یعنی یک دستگاه \fBtunX\fP با نام‌گذاری پویا ایجاد می‌کند و یک تونل لایه ۳ را اجرا می‌کند. .sp برای نمونه‌ای از راه‌اندازی یک دستگاه TUN، بخش مثال‌های زیر را ببینید. .sp شما باید در هر دو سمت اتصال یا از دستگاه‌های tun استفاده کنید یا در هر دو سمت از دستگاه‌های tap. نمی‌توانید آن‌ها را ترکیب کنید، زیرا لایه‌های شبکه زیرین متفاوتی را نشان می‌دهند: .INDENT 7.0 .TP .B \fBtun\fP دستگاه‌ها IPv4 یا IPv6 را کپسوله‌سازی می‌کنند (لایه ۳ مدل OSI) .TP .B \fBtap\fP دستگاه‌ها Ethernet 802.3 را کپسوله‌سازی می‌کنند (لایه ۲ مدل OSI). .UNINDENT .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX dev tun2 dev tap4 dev ovpn .EE .UNINDENT .UNINDENT .sp اینکه اگر نام دستگاه \fBtun\fP یا \fBtap\fP نباشد چه اتفاقی رخ می‌دهد، به پلتفرم وابسته است. .sp در اکثر پلتفرم‌ها، \fBtunN\fP (مانند tun2، tun30) و \fBtapN\fP (مانند tap3) یک رابط tun/tap شماره‌گذاری شده با همان شماره مشخص شده ایجاد می‌کنند \- این مورد زمانی مفید است که چندین نمونه OpenVPN فعال باشند، و نیاز به دانستن نگاشت نمونه به دستگاه باشد. برخی پلتفرم‌ها از \(dqnumbered tap\(dq پشتیبانی نمی‌کنند، بنابراین تلاش برای \fB\-\-dev tap3\fP ناموفق خواهد بود. .sp نام‌های دلخواه دستگاه (مانند \fB\-\-dev tun\-home\fP) فقط روی FreeBSD (با درایور هسته DCO برای دستگاه‌های \fBtun\fP) و لینوکس (برای هر دو دستگاه \fBtun\fP و \fBtap\fP، درایور DCO و tun/tap) کار خواهند کرد. .sp اگر چنین نام دستگاهی با \fBtun\fP یا \fBtap\fP آغاز شود (مانند \fBtun\-home\fP)، OpenVPN نوع دستگاه مناسب را به طور خودکار انتخاب خواهد کرد. در غیر این صورت نوع دستگاه مورد نظر باید با \fB\-\-dev\-type tun\fP یا \fB\-\-dev\-type tap\fP\& مشخص شود. .sp روی Windows، فقط نام‌های \fBtun\fP و \fBtap\fP پشتیبانی می‌شوند. انتخاب در میان چندین درایور یا نمونه درایور نصب شده با \fB\-\-dev\-node\fP\& انجام می‌شود. .UNINDENT .INDENT 0.0 .TP .BI \-\-dev\-node \ node این یک گزینه به‌شدت وابسته به سیستم برای اثرگذاری بر انتخاب درایور tun/tap است. .sp در لینوکس، دستگاه‌های tun/tap با دسترسی به \fB/dev/net/tun\fP ایجاد می‌شوند، و نام این دستگاه می‌تواند با استفاده از \fB\-\-dev\-node ...\fP\& تغییر کند. .sp در Mac OS X این گزینه می‌تواند برای تعیین پیاده‌سازی پیش‌فرض tun استفاده شود. استفاده از \fB\-\-dev\-node utun\fP استفاده از پشتیبانی بومی هسته Darwin tun را اجباری می‌کند. از \fB\-\-dev\-node utunN\fP برای انتخاب یک نمونه utun مشخص استفاده کنید. برای اجبار به استفاده از \fBtun.kext\fP (\fB/dev/tunX\fP) از \fB\-\-dev\-node tun\fP\& استفاده کنید. در صورت عدم تعیین گزینه \fB\-\-dev\-node\fP، برنامه openvpn ابتدا تلاش می‌کند utun را باز کند، و در صورت شکست به tun.kext بازمی‌گردد. .sp در سیستم‌های ویندوز، آداپتور TAP\-Win32 را که در Network Connections Control Panel به نام \fBnode\fP است یا GUID خام آداپتور درون آکولاد را انتخاب کنید. گزینه \fB\-\-show\-adapters\fP در ویندوز نیز می‌تواند برای شمارش تمام آداپتورهای TAP\-Win32 موجود استفاده شود و هم نام کنترل پنل اتصالات شبکه و هم GUID را برای هر آداپتور TAP\-Win32 نمایش می‌دهد. .sp در سایر پلتفرم‌ها، در صورت پشتیبانی در آن پلتفرم، \fB\-\-dev\-node node\fP بر نام‌گذاری دستگاه tun/tap ایجاد شده اثر می‌گذارد. اگر OpenVPN نتواند بر اساس نام تشخیص دهد که \fBnode\fP یک دستگاه TUN است یا TAP، باید \fB\-\-dev\-type tun\fP یا \fB\-\-dev\-type tap\fP\& را نیز مشخص کنید. .sp اگر \fBnode\fP با رشته \fBunix:\fP آغاز شود، openvpn با باقی آرگومان مانند یک برنامه رفتار خواهد کرد. OpenVPN برنامه را اجرا کرده و یک سوکت موقت دامنه یونیکس (unix domain socket) ایجاد می‌کند که همراه با پیکربندی tun به عنوان متغیرهای محیطی به برنامه ارسال می‌شود. سوکت موقت دامنه یونیکس در متغیر محیطی \fBTUNTAP_SOCKET_FD\fP\& منتقل خواهد شد. .sp این حالت \fBunix:\fP اساساً برای استفاده با شبیه‌ساز شبکه lwipovpn طراحی شده است (\%). .TP .BI \-\-dev\-type \ device\-type از چه نوع دستگاهی استفاده می‌شود؟ \fBdevice\-type\fP باید \fBtun\fP (لایه ۳ OSI) یا \fBtap\fP (لایه ۲ OSI) باشد. از این گزینه تنها در صورتی استفاده کنید که دستگاه TUN/TAP استفاده‌شده با \fB\-\-dev\fP با \fBtun\fP یا \fBtap\fP\& شروع نشود. .TP .BI \-\-dhcp\-option \ args تنظیم پارامترهای شبکه اضافی در پلتفرم‌های پشتیبانی‌شده. ممکن است روی کلاینت مشخص شود یا از سرور ارسال (push) شود. در ویندوز این گزینه‌ها به‌طور پیش‌فرض توسط درایور \fBtap\-windows6\fP یا در صورت غیرفعال بودن dhcp مستقیماً توسط OpenVPN مدیریت می‌شوند. کلاینت \fBOpenVPN for Android\fP نیز آن‌ها را به صورت داخلی پردازش می‌کند. .sp در سایر پلتفرم‌ها این گزینه‌ها پیش از فراخوانی اسکریپت \fB\-\-up\fP، تنها در محیط کلاینت با نام \fBforeign_option_{n}\fP ذخیره می‌شوند. برای دریافت و تفسیر این موارد در صورت نیاز، باید از یک افزونه یا اسکریپت \fB\-\-up\fP استفاده شود. بسیاری از توزیع‌های لینوکس شامل چنین اسکریپت‌هایی هستند و برخی رابط‌های کاربری شخص ثالث مانند tunnelblick نیز همراه با اسکریپت‌هایی برای پردازش این گزینه‌ها ارائه می‌شوند. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX dhcp\-option type [parm] .EE .UNINDENT .UNINDENT .INDENT 7.0 .TP .B \fBDOMAIN\fP \fBname\fP تنظیم پسوند DNS ویژه اتصال به \fBname\fP\&. .TP .B \fBADAPTER_DOMAIN_SUFFIX\fP \fBname\fP نام مستعار برای \fBDOMAIN\fP\&. این یک گزینه سازگاری است و نباید در استقرارهای جدید استفاده شود. .TP .B \fBDOMAIN\-SEARCH\fP \fBname\fP افزودن \fBname\fP به فهرست جستجوی دامنه. برای افزودن موارد بیشتر این گزینه را تکرار کنید. تا ۱۰ دامنه پشتیبانی می‌شود. .TP .B \fBDNS\fP \fBaddress\fP تنظیم آدرس IPv4 یا IPv6 کارساز نام دامنه (DNS) اصلی. برای تنظیم آدرس‌های کارساز DNS ثانویه این گزینه را تکرار کنید. .sp نکته: کارسازهای DNS IPv6 در حال حاضر با استفاده از netsh تنظیم می‌شوند (کد DHCP فعلی تنها می‌تواند DHCP نسخه IPv4 را مدیریت کند، و آن پروتکل تنها آدرس‌های IPv4 را در همه جا مجاز می‌داند). این گزینه در محیط قرار خواهد گرفت تا در صورت نیاز، یک اسکریپت \fB\-\-up\fP بتواند بر اساس آن عمل کند. .TP .B \fBWINS\fP \fBaddress\fP تنظیم آدرس کارساز WINS اصلی (کارساز نام NetBIOS روی TCP/IP). برای تنظیم آدرس‌های کارساز WINS ثانویه این گزینه را تکرار کنید. .TP .B \fBNBDD\fP \fBaddress\fP تنظیم آدرس کارساز NBDD اصلی (کارساز توزیع دیتاگرام NetBIOS روی TCP/IP). برای تنظیم آدرس‌های کارساز NBDD ثانویه این گزینه را تکرار کنید. .TP .B \fBNTP\fP \fBaddress\fP تنظیم آدرس کارساز NTP اصلی (پروتکل زمان شبکه). برای تنظیم آدرس‌های کارساز NTP ثانویه این گزینه را تکرار کنید. .TP .B \fBNBT\fP \fBtype\fP تنظیم نوع گره NetBIOS روی TCP/IP. گزینه‌های ممکن: .INDENT 7.0 .TP .B \fB1\fP b\-node (پخش همگانی) .TP .B \fB2\fP p\-node (پرس‌وجوهای نام نقطه به نقطه از یک کارساز WINS) .TP .B \fB4\fP m\-node (پخش همگانی و سپس پرس‌وجو از کارساز نام) .TP .B \fB8\fP h\-node (پرس‌وجو از کارساز نام، سپس پخش همگانی). .UNINDENT .TP .B \fBNBS\fP \fBscope\-id\fP تنظیم دامنه (Scope) پروتکل NetBIOS روی TCP/IP. یک شناسه دامنه NetBIOS یک سرویس نام‌گذاری گسترش‌یافته برای ماژول NetBIOS روی TCP/IP (معروف به NBT) فراهم می‌کند. هدف اصلی شناسه دامنه NetBIOS، جداسازی ترافیک NetBIOS در یک شبکه واحد تنها به گره‌هایی با شناسه دامنه NetBIOS یکسان است. شناسه دامنه NetBIOS یک رشته متنی است که به نام NetBIOS پیوست می‌شود. شناسه دامنه NetBIOS در دو میزبان باید مطابقت داشته باشد، در غیر این صورت دو میزبان قادر به برقراری ارتباط نخواهند بود. شناسه دامنه NetBIOS همچنین به رایانه‌ها اجازه می‌دهد در صورت داشتن شناسه‌های دامنه متفاوت، از نام رایانه یکسانی استفاده کنند. شناسه دامنه بخشی از نام NetBIOS می‌شود و نام را یکتا می‌سازد. (این توصیف دامنه‌های NetBIOS با قدردانی از \%) .TP .B \fBDISABLE\-NBT\fP غیرفعال کردن Netbios\-over\-TCP/IP. .UNINDENT .INDENT 7.0 .TP .B code \fIPROXY_HTTP\fP \fBhost\fP \fBport\fP تنظیم یک پراکسی HTTP که هنگام اتصال به VPN باید استفاده شود. .sp این گزینه در حال حاضر تنها روی OpenVPN for Android کار می‌کند و نیازمند اندروید ۱۰ یا بالاتر است. .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-ifconfig \ args تنظیم پارامترهای آداپتور TUN/TAP. این گزینه به \fIآدرس IP\fP نقطه پایانی VPN محلی نیاز دارد. برای دستگاه‌های TUN در حالت نقطه\-به\-نقطه (point\-to\-point)، آرگومان بعدی باید آدرس IP نقطه پایانی VPN دوردست باشد. برای دستگاه‌های TAP یا دستگاه‌های TUN استفاده‌شده با \fB\-\-topology subnet\fP، آرگومان دوم ماسک زیرشبکه بخش شبکه مجازی در حال ساخت یا متصل‌شونده است. .sp برای دستگاه‌های TUN که اتصالات مجازی IP نقطه\-به\-نقطه را ممکن می‌سازند (هنگام استفاده در حالت \fB\-\-topology net30\fP یا \fBp2p\fP)، کاربرد مناسب \fB\-\-ifconfig\fP به کار بردن دو آدرس IP خصوصی است که عضو هیچ زیرشبکه در حال استفاده‌ای نباشند. این آدرس‌های IP می‌توانند متوالی باشند و ترتیب آن‌ها در سمت دوردست باید معکوس شود. پس از برقراری VPN، با پینگ کردن \fBrn\fP، ارتباط از درون بستر VPN پینگ خواهد شد. .sp برای دستگاه‌های TAP که امکان ایجاد بخش‌های اترنت مجازی را فراهم می‌کنند، یا دستگاه‌های TUN در حالت \fB\-\-topology subnet\fP (که \(dqشبکه‌های چندنقطه‌ای\(dq مجازی ایجاد می‌کنند)، \fB\-\-ifconfig\fP برای تنظیم یک آدرس IP و ماسک زیرشبکه درست مانند پیکربندی یک آداپتور فیزیکی اترنت استفاده می‌شود. اگر در تلاش برای اتصال به یک پل اترنت (ethernet bridge) دوردست هستید، آدرس IP و زیرشبکه باید روی مقادیری تنظیم شوند که در بخش اترنت پل‌شده معتبر باشند (توجه داشته باشید که از DHCP نیز می‌توان برای همین منظور استفاده کرد). .sp این گزینه، با اینکه اساساً به عنوان واسطی برای دستور \fBifconfig\fP(8) عمل می‌کند، برای ساده‌سازی پیکربندی تونل TUN/TAP از طریق ارائه یک رابط استاندارد برای پیاده‌سازی‌های گوناگون ifconfig در پلتفرم‌های مختلف طراحی شده است. .sp پارامترهای \fB\-\-ifconfig\fP که آدرس‌های IP هستند را می‌توان با نام قابل تحلیل از طریق DNS یا پرونده /etc/hosts نیز مشخص کرد. .sp برای دستگاه‌های TAP، در صورتی که رابط TAP اجاره آدرس IP را از یک سرور DHCP دریافت می‌کند، نباید از \fB\-\-ifconfig\fP استفاده شود. .sp نمونه‌ها: .INDENT 7.0 .INDENT 3.5 .sp .EX # tun device in net30/p2p mode ifconfig 10.8.0.2 10.8.0.1 # tun/tap device in subnet mode ifconfig 10.8.0.2 255.255.255.0 .EE .UNINDENT .UNINDENT .TP .BI \-\-ifconfig\-ipv6 \ args پیکربندی یک آدرس IPv6 روی دستگاه \fItun\fP. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX ifconfig\-ipv6 ipv6addr/bits [ipv6remote] .EE .UNINDENT .UNINDENT .sp آرگومان \fBipv6addr/bits\fP آدرس IPv6 مورد استفاده است. پارامتر دوم در صورت مشخص نشدن درگاه (gateway)، به عنوان مقصد مسیر برای \fB\-\-route\-ipv6\fP استفاده می‌شود. .sp گزینه \fB\-\-topology\fP هیچ تأثیری بر \fB\-\-ifconfig\-ipv6\fP ندارد. .TP .B \-\-ifconfig\-noexec دستورهای ifconfig/netsh را واقعاً اجرا نکن، بلکه در عوض پارامترهای \fB\-\-ifconfig\fP را با استفاده از متغیرهای محیطی به اسکریپت‌ها ارسال کن. .TP .B \-\-ifconfig\-nowarn اگر گزینه \fB\-\-ifconfig\fP در این سمت اتصال با سمت دوردست مطابقت نداشت، هشدار بررسی سازگاری گزینه‌ها را صادر نکن. این گزینه زمانی مفید است که می‌خواهید مزایای کلی بررسی سازگاری گزینه‌ها را حفظ کنید (همچنین گزینه \fB\-\-disable\-occ\fP را ببینید) و در عین حال فقط مؤلفه ifconfig این بررسی را غیرفعال کنید. .sp برای نمونه، اگر پیکربندی‌ای دارید که در آن میزبان محلی از \fB\-\-ifconfig\fP استفاده می‌کند اما میزبان دوردست استفاده نمی‌کند، از \fB\-\-ifconfig\-nowarn\fP در میزبان محلی استفاده کنید. .sp این گزینه همچنین هشدارهای مربوط به تداخل بالقوه آدرس‌ها را بی‌صدا می‌کند، که گاهی با ایجاد هشدارهای \(dqمثبت کاذب\(dq کاربران باتجربه‌تر را آزار می‌دهد. .TP .BI \-\-lladdr \ address آدرس لایه پیوند (link layer address) را که بیشتر به عنوان آدرس MAC شناخته می‌شود مشخص کنید. فقط برای دستگاه‌های TAP اعمال می‌شود. .TP .B \-\-persist\-tun هنگام راه‌اندازی‌های مجدد ناشی از \fBSIGUSR1\fP یا \fB\-\-ping\-restart\fP، دستگاه TUN/TAP را نبندید و دوباره باز نکنید یا اسکریپت‌های up/down را اجرا نکنید. .sp سیگنال \fBSIGUSR1\fP یک سیگنال راه‌اندازی مجدد مشابه \fBSIGHUP\fP است، اما کنترل دقیق‌تری روی گزینه‌های بازنشانی ارائه می‌دهد. .sp در لینوکس، این گزینه زمانی می‌تواند مفید باشد که OpenVPN به عنوان ریشه (root) اجرا نمی‌شود و دسترسی CAP_NET_ADMIN به آن داده نشده است، چرا که در غیر این صورت به فرایند اجازه غیرفعال و فعال کردن مجدد رابط داده نخواهد شد. .sp در کنار موارد فوق، استفاده از \fB\-\-persist\-tun\fP به رابط تونل اجازه می‌دهد تمام تنظیمات IP/مسیر را حفظ کند، بنابراین به کاربر امکان می‌دهد هرگونه محافظت پیشرفته در برابر نشت ترافیک را پیاده‌سازی کند (لطفاً توجه داشته باشید که برای محافظت کامل، باید قوانین مسیر/دیوار آتش اضافی برقرار باشند). .TP .BI \-\-redirect\-gateway \ flags اجرای خودکار دستورهای مسیریابی برای هدایت مجدد تمام ترافیک خروجی IP از طریق VPN. این یک گزینه سمت کلاینت است. .sp این گزینه سه مرحله را انجام می‌دهد: .INDENT 7.0 .IP 1. 3 ایجاد یک مسیر ایستا برای آدرس \fB\-\-remote\fP که به درگاه پیش‌فرض از پیش موجود فوروارد می‌شود. این کار برای این انجام می‌شود که مرحله \fB(3)\fP یک حلقه مسیریابی ایجاد نکند. .IP 2. 3 حذف مسیر درگاه پیش‌فرض. .IP 3. 3 تنظیم درگاه پیش‌فرض جدید روی آدرس نقطه پایانی VPN (که از \fB\-\-route\-gateway\fP یا پارامتر دوم \fB\-\-ifconfig\fP در صورت مشخص شدن \fB\-\-dev tun\fP به دست می‌آید). .UNINDENT .sp هنگامی که تونل برچیده می‌شود، تمام مراحل بالا معکوس می‌شوند تا مسیر پیش‌فرض اصلی بازیابی شود. .sp پرچم‌های گزینه: .INDENT 7.0 .TP .B \fBlocal\fP اگر هر دو طرف OpenVPN به طور مستقیم از طریق یک زیرشبکه مشترک متصل هستند (مانند ارتباط بی‌سیم)، پرچم \fBlocal\fP را اضافه کنید. پرچم \fBlocal\fP باعث حذف مرحله \fB(1)\fP در بالا می‌شود. .TP .B \fBautolocal\fP تلاش برای تعیین خودکار فعال‌سازی پرچم \fBlocal\fP در بالا. .TP .B \fBdef1\fP استفاده از این پرچم برای بازنویسی درگاه پیش‌فرض با استفاده از \fB0.0.0.0/1\fP و \fB128.0.0.0/1\fP به جای \fB0.0.0.0/0\fP\&. این کار این مزیت را دارد که درگاه پیش‌فرض اصلی را بازنویسی می‌کند اما آن را به طور کامل پاک نمی‌کند. .TP .B \fBbypass\-dhcp\fP افزودن یک مسیر مستقیم به سرور DHCP (در صورتی که غیرمحلی باشد) که تونل را دور می‌زند (در کلاینت‌های ویندوز موجود است، ممکن است در کلاینت‌های غیرویندوزی در دسترس نباشد). .TP .B \fBbypass\-dns\fP افزودن یک مسیر مستقیم به سرور(های) DNS (در صورتی که غیرمحلی باشند) که تونل را دور می‌زند (در کلاینت‌های ویندوز موجود است، ممکن است در کلاینت‌های غیرویندوزی در دسترس نباشد). .TP .B \fBblock\-local\fP مسدود کردن دسترسی به LAN محلی در هنگام فعال بودن تونل، به جز خود درگاه LAN. این کار با مسیریابی LAN محلی (به جز آدرس درگاه LAN) به داخل تونل انجام می‌شود. در ویندوز فیلترهای WFP علاوه بر مسیرها اضافه می‌شوند که دسترسی به منابعی که از طریق آداپتور VPN مسیریابی نمی‌شوند را مسدود می‌کنند. این پرچم را برای محافظت در برابر حملات نوع TunnelCrack ارسال کنید (ببینید: \%). .TP .B \fBipv6\fP هدایت مجدد مسیریابی IPv6 به داخل تونل. این مشابه پرچم \fBdef1\fP عمل می‌کند، به این صورت که مسیرهای خاص‌تر IPv6 اضافه می‌شوند (\fB2000::/4\fP، \fB3000::/4\fP) و کل فضای یونی‌کست IPv6 را پوشش می‌دهند. .TP .B \fB!ipv4\fP ترافیک IPv4 را هدایت مجدد نکن \- معمولاً در جفت پرچم \fBipv6 !ipv4\fP برای هدایت مجدد ترافیک فقط IPv6 استفاده می‌شود. .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-redirect\-private \ flags مانند \fB\-\-redirect\-gateway\fP، اما تغییر واقعی در درگاه پیش‌فرض (default gateway) ایجاد نمی‌کند. هنگام فرستادن (push) زیرشبکه‌های خصوصی مفید است. .TP .BI \-\-route\-table \ id مشخص کردن یک شناسه (id) جدول پیش‌فرض برای استفاده با \-\-route. به صورت پیش‌فرض، OpenVPN مسیرها را در جدول مسیریابی اصلی سیستم‌عامل نصب می‌کند، اما با این گزینه، می‌توان از یک جدول مسیریابی تعریف‌شده توسط کاربر به‌جای آن استفاده کرد. .sp (تنها در لینوکس پشتیبانی می‌شود، در دیگر پلتفرم‌ها بی‌اثر است). .TP .BI \-\-route \ args افزودن مسیر به جدول مسیریابی پس از برقراری اتصال. می‌توان چندین مسیر را مشخص کرد. مسیرها پیش از بسته‌شدن دستگاه TUN/TAP به صورت خودکار و با ترتیب معکوس برچیده می‌شوند. .sp نحو‌های معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX route network/IP route network/IP netmask route network/IP netmask gateway route network/IP netmask gateway metric .EE .UNINDENT .UNINDENT .sp این گزینه به عنوان یک جایگزین راحت برای دستور شل \fBroute\fP(8) در نظر گرفته شده است، در حالی که هم‌زمان مفاهیم قابل حمل در سراسر پلتفرم‌های OpenVPN فراهم می‌کند. .INDENT 7.0 .TP .B \fBnetmask\fP در صورت مشخص نشدن، پیش‌فرض روی \fB255.255.255.255\fP تنظیم می‌شود .TP .B \fBgateway\fP مقدار پیش‌فرض از \fB\-\-route\-gateway\fP یا دومین پارامتر \fB\-\-ifconfig\fP در صورت مشخص بودن \fB\-\-dev tun\fP گرفته می‌شود. .TP .B \fBmetric\fP مقدار پیش‌فرض در صورت تنظیم شدن از \fB\-\-route\-metric\fP گرفته می‌شود، در غیر این صورت \fB0\fP\& است. .UNINDENT .sp مقدار پیش‌فرض را می‌توان با خالی گذاشتن یک گزینه یا تنظیم آن روی \fBdefault\fP\& مشخص کرد. .sp پارامترهای \fBnetwork\fP و \fBgateway\fP همچنین می‌توانند به عنوان یک نام قابل حل توسط DNS یا پرونده \fB/etc/hosts\fP، یا به عنوان یکی از سه کلیدواژه ویژه مشخص شوند: .INDENT 7.0 .TP .B \fBvpn_gateway\fP نشانی نقطه پایانی دوردست VPN (مشتق‌شده از \fB\-\-route\-gateway\fP یا پارامتر دوم \fB\-\-ifconfig\fP هنگامی که \fB\-\-dev tun\fP مشخص شده باشد). .TP .B \fBnet_gateway\fP درگاه پیش‌فرض IP از قبل موجود، خوانده‌شده از جدول مسیریابی (در همه سیستم‌عامل‌ها پشتیبانی نمی‌شود). .TP .B \fBremote_host\fP نشانی \fB\-\-remote\fP در صورتی که OpenVPN در حالت کلاینت اجرا شده باشد، و در حالت سرور تعریف‌نشده است. .UNINDENT .TP .BI \-\-route\-delay \ args نحو‌های معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX route\-delay route\-delay n route\-delay n w .EE .UNINDENT .UNINDENT .sp تاخیر به مدت \fBn\fP ثانیه (پیش‌فرض \fB0\fP) پس از برقراری اتصال، پیش از افزودن مسیرها. اگر \fBn\fP برابر با \fB0\fP باشد، مسیرها بلافاصله پس از برقراری اتصال افزوده می‌شوند. در صورت حذف \fB\-\-route\-delay\fP، مسیرها بلافاصله پس از باز شدن دستگاه TUN/TAP و اجرای اسکریپت \fB\-\-up\fP، پیش از هرگونه کاهش سطح دسترسی \fB\-\-user\fP یا \fB\-\-group\fP (یا اجرای \fB\-\-chroot\fP) افزوده خواهند شد. .sp این گزینه برای سناریوهایی طراحی شده که در آن‌ها از DHCP برای تنظیم نشانی‌های آداپتور tap استفاده می‌شود. این تاخیر به دست‌تکانی DHCP زمان کافی برای تکمیل پیش از افزودن مسیرها را می‌دهد. .sp در ویندوز، \fB\-\-route\-delay\fP با انتظار به مدت \fBw\fP ثانیه (پیش‌فرض \fB30\fP) برای بالا آمدن آداپتور TAP\-Win32 پیش از افزودن مسیرها، هوشمندانه‌تر عمل می‌کند. .TP .BI \-\-route\-ipv6 \ args راه‌اندازی مسیریابی IPv6 در سیستم برای ارسال شبکه IPv6 تعیین‌شده به داخل \fItun\fP مربوط به OpenVPN\&. .sp نحو‌های معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX route\-ipv6 ipv6addr/bits route\-ipv6 ipv6addr/bits gateway route\-ipv6 ipv6addr/bits gateway metric .EE .UNINDENT .UNINDENT .INDENT 7.0 .TP .B \fBgateway\fP تنها برای مسیرهای IPv6 از طریق دستگاه‌های \fItap\fP استفاده می‌شود، و در صورت عدم وجود، فیلد \fBipv6remote\fP از \fB\-\-ifconfig\-ipv6\fP یا \fB\-\-route\-ipv6\-gateway\fP استفاده خواهد شد. .TP .B \fBmetric\fP مقدار پیش‌فرض در صورت تنظیم شدن از \fB\-\-route\-metric\fP گرفته می‌شود، در غیر این صورت \fB0\fP\& است. .UNINDENT .UNINDENT .INDENT 0.0 .TP .BI \-\-route\-gateway \ arg تعیین یک \fIgateway\fP پیش‌فرض برای استفاده با \fB\-\-route\fP\&. .sp اگر \fBdhcp\fP به عنوان پارامتر مشخص شود، نشانی درگاه (gateway) از طریق مذاکره DHCP با LAN سمت سرور OpenVPN استخراج خواهد شد. .sp ساختارهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX route\-gateway gateway route\-gateway dhcp .EE .UNINDENT .UNINDENT .TP .BI \-\-route\-ipv6\-gateway \ gw تعیین یک درگاه (gateway) پیش‌فرض \fBgw\fP برای استفاده با \fB\-\-route\-ipv6\fP\&. .TP .BI \-\-route\-metric \ m تعیین یک متریک پیش‌فرض \fBm\fP برای استفاده با \fB\-\-route\fP\&. .TP .B \-\-route\-noexec مسیرها را به‌طور خودکار اضافه یا حذف نکن. در عوض مسیرها را با استفاده از متغیرهای محیطی به اسکریپت \fB\-\-route\-up\fP ارسال کن. .TP .B \-\-route\-nopull هنگام استفاده با \fB\-\-client\fP یا \fB\-\-pull\fP، گزینه‌های ارسال‌شده توسط سرور را بپذیر، به جز مسیرها، block\-outside\-dns و گزینه‌های dhcp مانند کارگزارهای DNS. .sp هنگام استفاده روی کلاینت، این گزینه عملاً سرور را از افزودن مسیرها به جدول مسیریابی کلاینت بازمی‌دارد، با این حال توجه داشته باشید که این گزینه همچنان به سرور اجازه می‌دهد ویژگی‌های TCP/IP رابط TUN/TAP کلاینت را تنظیم کند. .TP .BI \-\-topology \ mode پیکربندی توپولوژی آدرس‌دهی مجازی هنگام اجرا در حالت \fB\-\-dev tun\fP\&. این دستورالعمل در حالت \fB\-\-dev tap\fP که همیشه از توپولوژی \fBsubnet\fP استفاده می‌کند، هیچ معنایی ندارد. .sp اگر این دستورالعمل را روی سرور تنظیم کنید، دستورالعمل‌های \fB\-\-server\fP و \fB\-\-server\-bridge\fP به‌طور خودکار تنظیمات توپولوژی انتخابی شما را به کلاینت‌ها نیز ارسال می‌کنند. این دستورالعمل را می‌توان به‌صورت دستی نیز به کلاینت‌ها ارسال کرد. مانند دستورالعمل \fB\-\-dev\fP، این دستورالعمل نیز باید همیشه بین کلاینت و سرور سازگار باشد. .sp \fBmode\fP می‌تواند یکی از موارد زیر باشد: .INDENT 7.0 .TP .B \fBsubnet\fP استفاده از یک زیرشبکه به‌جای یک توپولوژی نقطه\-به\-نقطه با پیکربندی رابط tun با یک نشانی IP محلی و ماسک زیرشبکه (subnet mask)، مشابه توپولوژی استفاده‌شده در حالت \fB\-\-dev tap\fP و پل‌زنی اترنت (ethernet bridging). این حالت به ازای هر کلاینت متصل یک نشانی IP اختصاص می‌دهد و روی ویندوز نیز کار می‌کند. این حالت پیش‌فرض است. .TP .B \fBnet30\fP استفاده از یک توپولوژی نقطه\-به\-نقطه، با اختصاص یک زیرشبکه 30/ به ازای هر کلاینت. این حالت به گونه‌ای طراحی شده است که وقتی برخی یا همه کلاینت‌های متصل سیستم‌های ویندوزی هستند، رفتارهای نقطه\-به\-نقطه را امکان‌پذیر سازد. .TP .B \fBp2p\fP استفاده از یک توپولوژی نقطه\-به\-نقطه که در آن نقطه پایانی دوردست رابط tun کلاینت همیشه به نقطه پایانی محلی رابط tun سرور اشاره می‌کند. این حالت به ازای هر کلاینت متصل یک نشانی IP اختصاص می‌دهد. فقط زمانی استفاده شود که هیچ‌یک از کلاینت‌های متصل سیستم‌های ویندوزی نباشند. .UNINDENT .sp \fIنکته:\fP استفاده از \fB\-\-topology subnet\fP تفسیر آرگومان‌های \fB\-\-ifconfig\fP را به معنای \(dqaddress netmask\(dq تغییر می‌دهد، و نه \(dqlocal remote\(dq. .TP .BI \-\-tun\-mtu \ args ساختارهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX tun\-mtu tun\-mtu tun\-mtu tun\-mtu occ\-mtu .EE .UNINDENT .UNINDENT .sp مقدار MTU دستگاه TUN را \fBtun\-mtu\fP در نظر می‌گیرد و MTU پیوند را از آن مشتق می‌کند. در بیشتر موارد، احتمالاً می‌خواهید این پارامتر را روی مقدار پیش‌فرض خود باقی بگذارید. .sp مقدار پیش‌فرض برای \fBtun\-mtu\fP برابر 1500 است. .sp مقدار OCC MTU می‌تواند برای جلوگیری از هشدارهای عدم تطابق MTU از سوی کلاینت‌ها استفاده شود. اگر \fBocc\-mtu\fP مشخص نشود، پیش‌فرض آن برابر با tun\-mtu خواهد بود. .sp مقدار MTU (Maximum Transmission Units) حداکثر اندازه دیتاگرام بر حسب بایت است که می‌تواند بدون تکه‌تکه شدن (unfragmented) از طریق یک مسیر شبکه خاص ارسال شود. OpenVPN نیازمند آن است که بسته‌ها روی کانال‌های داده و کنترل به‌صورت تکه‌تکه‌نشده ارسال شوند. .sp مشکلات MTU اغلب خود را به صورت اتصالات معلق‌شده در دوره‌های استفاده فعال نشان می‌دهند. .sp بهتر است از گزینه‌های \fB\-\-fragment\fP و/یا \fB\-\-mssfix\fP برای مقابله با مشکلات اندازه MTU استفاده شود. .sp نکته: بسته به پلتفرم، سیستم‌عامل اجازه دریافت بسته‌های بزرگتر از \fBtun\-mtu\fP را می‌دهد (مانند Linux و FreeBSD) اما پلتفرم‌های دیگر (مانند macOS) بسته‌های دریافتی را به همان اندازه MTU محدود می‌کنند. .TP .BI \-\-tun\-mtu\-max \ maxmtu حداکثر اندازه MTU را که یک سرور می‌تواند اعمال کند روی \fBmaxmtu\fP پیکربندی می‌کند، با پیکربندی بافرهای داخلی برای پشتیبانی از حداقل این اندازه بسته. مقدار پیش‌فرض برای \fBmaxmtu\fP برابر 1600 است. در حال حاضر فقط افزایش به بیش از 1600 امکان‌پذیر است، و تلاش برای کاهش max\-mtu به زیر 1600 نادیده گرفته خواهد شد. .TP .BI \-\-tun\-mtu\-extra \ n فرض می‌کند که دستگاه TUN/TAP ممکن است در هنگام خواندن، حداکثر تا \fBn\fP بایت بیشتر از اندازه \fB\-\-tun\-mtu\fP بازگرداند. این پارامتر به‌طور پیش‌فرض 0 است که برای اکثر دستگاه‌های TUN کافی است. دستگاه‌های TAP ممکن است سربار اضافی بیش از اندازه MTU ایجاد کنند، و هنگام استفاده از دستگاه‌های TAP مقدار 32 پیش‌فرض است. این پارامتر فقط اندازه بافر داخلی OpenVPN را کنترل می‌کند، بنابراین هیچ سربار انتقالی ناشی از استفاده از یک مقدار بزرگتر وجود ندارد. .UNINDENT .SS عملیات‌های مستقل TUN/TAP .sp این دو عملیات مستقل به \fB\-\-dev\fP و به‌طور اختیاری به \fB\-\-user\fP و/یا \fB\-\-group\fP نیاز خواهند داشت\&. .INDENT 0.0 .TP .B \-\-mktun (مستقل) ایجاد یک تونل ماندگار در پلتفرم‌هایی که از آن پشتیبانی می‌کنند مانند لینوکس. به‌طور معمول تونل‌های TUN/TAP تنها در بازه زمانی‌ای که یک برنامه آن‌ها را باز نگه داشته است وجود دارند. این گزینه از قابلیت درایور TUN/TAP برای ساخت تونل‌های ماندگاری بهره می‌برد که در میان چندین بار اجرای OpenVPN باقی می‌مانند و تنها زمانی از بین می‌روند که حذف شوند یا دستگاه بازراه‌اندازی شود. .sp یکی از مزایای تونل‌های ماندگار این است که نیاز به اسکریپت‌های مجزای \fB\-\-up\fP و \fB\-\-down\fP را برای اجرای دستورات مناسب \fBifconfig\fP(8) و \fBroute\fP(8) از بین می‌برند. این دستورات را می‌توان در همان اسکریپت شل که نشست OpenVPN را آغاز یا متوقف می‌کند قرار داد. .sp مزیت دیگر این است که اتصالات باز روی تونل مبتنی بر TUN/TAP با راه‌اندازی مجدد همتای OpenVPN بازنشانی نخواهند شد. این مورد می‌تواند برای برقراری اتصال بدون وقفه از طریق تونل در صورت بازنشانی DHCP آدرس IP عمومی همتا مفید باشد (گزینه \fB\-\-ipchange\fP در بالا را ببینید). .sp یکی از معایب تونل‌های ماندگار این است که پیکربندی خودکار مقدار MTU آن‌ها دشوارتر است (گزینه‌های \fB\-\-link\-mtu\fP و \fB\-\-tun\-mtu\fP در بالا را ببینید). .sp در برخی پلتفرم‌ها مانند ویندوز، تونل‌های TAP\-Win32 به‌طور پیش‌فرض ماندگار هستند. .TP .B \-\-rmtun (مستقل) حذف یک تونل ماندگار. .UNINDENT .SS مسیریابی و فورواردینگ مجازی (VRF) .sp گزینه‌های این بخش مربوط به پیکربندی مسیریابی و فورواردینگ مجازی در ترکیب با سیستم‌عامل پایه است. .sp در حال حاضر این امکان تنها در لینوکس پشتیبانی می‌شود و هسته >= 4.9 پیشنهاد می‌شود. .sp این قابلیت برای نمونه زمانی می‌تواند کاربردی باشد که شبکه خارجی فقط باید به عنوان وسیله‌ای برای اتصال به برخی نقاط پایانی VPN استفاده شود و تمامی ترافیک عادی صرفاً از طریق تونل(ها) هدایت گردد. این کار را می‌توان با راه‌اندازی یک VRF و پیکربندی رابط متصل به شبکه خارجی به عنوان بخشی از VRF انجام داد. نمونه‌های زیر این پیکربندی را پوشش می‌دهند. .sp گزینه دیگر قرار دادن رابط tun/tap در یک VRF است. این کار می‌تواند با یک up\-script انجام شود که از دستور \fBip link set\fP نشان‌داده‌شده در زیر استفاده می‌کند. .SS راه‌اندازی VRF با iproute2 .sp ایجاد VRF با نام \fBvrf_external\fP و نگاشت آن به جدول مسیریابی \fB1023\fP .INDENT 0.0 .INDENT 3.5 .sp .EX ip link add vrf_external type vrf table 1023 .EE .UNINDENT .UNINDENT .sp انتقال \fBeth0\fP به داخل \fBvrf_external\fP .INDENT 0.0 .INDENT 3.5 .sp .EX ip link set master vrf_external dev eth0 .EE .UNINDENT .UNINDENT .sp هرگونه پیشوند پیکربندی‌شده روی \fBeth0\fP از جدول مسیریابی :code\(gamain\(ga به جدول مسیریابی \fB1023\fP منتقل خواهد شد .SS راه‌اندازی VRF با ifupdown .sp برای توزیع‌های بر پایه دبیان، بسته \fBifupdown2\fP تقریباً یک جایگزین مستقیم برای \fBifupdown\fP به همراه VRFها و قابلیت‌های دیگر ارائه می‌دهد. پیکربندی برای رابط \fBeth0\fP که بخشی از VRF با نام code:\fIvrf_external\fP باشد می‌تواند به این صورت باشد: .INDENT 0.0 .INDENT 3.5 .sp .EX auto eth0 iface eth0 address 192.0.2.42/24 address 2001:db8:08:15::42/64 gateway 192.0.2.1 gateway 2001:db8:08:15::1 vrf vrf_external auto vrf_external iface vrf_external vrf\-table 1023 .EE .UNINDENT .UNINDENT .SS پیکربندی OpenVPN .sp پیکربندی OpenVPN باید شامل این خط باشد: .INDENT 0.0 .INDENT 3.5 .sp .EX bind\-dev vrf_external .EE .UNINDENT .UNINDENT .SS مطالعه بیشتر .sp ویکی‌پدیا صفحه مناسبی درباره VRFها دارد: \% .sp این ارائه از بخش شبکه FrOSCon 2018 نمایی کلی از قابلیت‌های پیشرفته لایه ۲ و لایه ۳ لینوکس ارائه می‌دهد .INDENT 0.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 اسلایدها: \% .IP \(bu 2 ویدیو (آلمانی): \% .UNINDENT .UNINDENT .UNINDENT .SH "یکپارچه‌سازی اسکریپت (SCRIPTING INTEGRATION)" .sp برنامه OpenVPN می‌تواند اسکریپت‌های خارجی را در مراحل مختلف چرخه حیات فرایند OpenVPN اجرا کند. .SS "ترتیب اجرای اسکریپت‌ها (Script Order of Execution)" .INDENT 0.0 .IP 1. 4 \fB\-\-dns\-updown\fP .sp پس از مقیدسازی سوکت TCP/UDP و باز شدن TUN/TAP، پیش از \fB\-\-up\fP اجرا می‌شود. .IP 2. 4 \fB\-\-up\fP .sp پس از مقیدسازی سوکت TCP/UDP و باز شدن TUN/TAP، پس از \fB\-\-dns\-updown\fP اجرا می‌شود. .IP 3. 4 \fB\-\-tls\-verify\fP .sp زمانی اجرا می‌شود که هنوز همتای دوردست غیرقابل‌اعتماد است. .IP 4. 4 \fB\-\-ipchange\fP .sp پس از احراز هویت اتصال، یا تغییر آدرس IP دوردست اجرا می‌شود. .IP 5. 4 \fB\-\-client\-connect\fP .sp در حالت \fB\-\-mode server\fP بلافاصله پس از احراز هویت کلاینت اجرا می‌شود. .IP 6. 4 \fB\-\-route\-up\fP .sp پس از احراز هویت اتصال، بلافاصله یا پس از چند ثانیه مشخص‌شده توسط گزینه \fB\-\-route\-delay\fP اجرا می‌شود. .IP 7. 4 \fB\-\-route\-pre\-down\fP .sp درست پیش از حذف مسیرها اجرا می‌شود. .IP 8. 4 \fB\-\-client\-disconnect\fP .sp در حالت \fB\-\-mode server\fP هنگام خاموش شدن یا قطع کلاینت اجرا می‌شود. .IP 9. 4 \fB\-\-dns\-updown\fP .sp پیش از بسته شدن TCP/UDP و TUN/TAP، پیش از \fB\-\-down\fP اجرا می‌شود. .IP 10. 4 \fB\-\-down\fP .sp پس از بسته شدن TCP/UDP و TUN/TAP، پس از \fB\-\-dns\-updown\fP اجرا می‌شود. .IP 11. 4 \fB\-\-learn\-address\fP .sp در حالت \fB\-\-mode server\fP هر زمان که یک آدرس/مسیر IP یا آدرس MAC به جدول مسیریابی داخلی OpenVPN اضافه شود اجرا می‌گردد. .IP 12. 4 \fB\-\-auth\-user\-pass\-verify\fP .sp در حالت \fB\-\-mode server\fP در اتصال‌های جدید کلاینت، زمانی که کلاینت هنوز غیرقابل‌اعتماد است اجرا می‌شود. .IP 13. 4 \fB\-\-client\-crresponse\fP .INDENT 4.0 .INDENT 3.5 در حالت \fB\-\-mode server\fP هر زمان که یک کلاینت پیام \fBCR_RESPONSE\fP ارسال کند اجرا می‌شود. .UNINDENT .UNINDENT .UNINDENT .SS "قلاب‌های اسکریپت (SCRIPT HOOKS)" .INDENT 0.0 .TP .BI \-\-auth\-user\-pass\-verify \ args کلاینت را ملزم به ارائه نام‌کاربری/گذرواژه (احتمالاً علاوه بر گواهی کلاینت) برای احراز هویت می‌کند. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX auth\-user\-pass\-verify cmd method .EE .UNINDENT .UNINDENT .sp برنامه OpenVPN دستور \fBcmd\fP را برای اعتبارسنجی نام‌کاربری/گذرواژه ارائه‌شده توسط کلاینت اجرا می‌کند. .sp بخش \fBcmd\fP شامل مسیر یک اسکریپت (یا برنامه اجرایی) است که می‌تواند با آرگومان‌های اختیاری همراه باشد. مسیر و آرگومان‌ها می‌توانند در نقل‌قول‌های تکی یا دوتایی قرار گیرند و/یا با استفاده از بک‌اسلش گریز داده شوند، و باید با یک یا چند فاصله از یکدیگر جدا شوند. .sp اگر \fBmethod\fP روی \fBvia\-env\fP تنظیم شود، OpenVPN دستور \fBcmd\fP را با متغیرهای محیطی \fBusername\fP و \fBpassword\fP که روی رشته‌های نام‌کاربری/گذرواژه ارائه‌شده توسط کلاینت تنظیم شده‌اند فراخوانی می‌کند. \fIتوجه داشته باشید\fP که این روش در پلتفرم‌هایی که محیط فرایند را برای سایر فرایندهای غیرممتاز قابل‌مشاهده می‌کنند ناامن است. .sp اگر \fBmethod\fP روی \fBvia\-file\fP تنظیم شود، OpenVPN نام‌کاربری و گذرواژه را در دو خط نخست یک فایل موقت می‌نویسد. نام فایل به عنوان یک آرگومان به \fBcmd\fP داده می‌شود، و فایل پس از بازگشت اسکریپت به‌طور خودکار توسط OpenVPN حذف خواهد شد. مکان فایل موقت توسط گزینه \fB\-\-tmp\-dir\fP کنترل می‌شود. برای امنیت، تنظیم آن روی یک رسانه ذخیره‌سازی فرار مانند \fB/dev/shm\fP (در صورت وجود) را در نظر بگیرید تا از نوشته شدن فایل نام‌کاربری/گذرواژه روی دیسک سخت جلوگیری شود. .sp اسکریپت باید نام‌کاربری و گذرواژه را بررسی کند، و در صورت پذیرش درخواست احراز هویت کلاینت کد خروج موفقیت‌آمیز (\fB0\fP)، برای رد کلاینت کد شکست (\fB1\fP)، یا برای به تعویق انداختن احراز هویت کد (\fB2\fP) را بازگرداند. اگر احراز هویت به تعویق بیفتد، اسکریپت باید یک عملیات پس‌زمینه یا غیرمسدودکننده دیگر را اجرا/فورک کند تا احراز هویت در پس‌زمینه ادامه یابد. پس از اتمام احراز هویت، مقدار \fB1\fP یا \fB0\fP باید در فایل مشخص‌شده توسط \fBauth_control_file\fP نوشته شود. .sp اگر فایل مشخص‌شده توسط \fBauth_failed_reason_file\fP وجود داشته باشد و دارای محتوای غیرخالی باشد، محتوای این فایل به عنوان پیام AUTH_FAILED استفاده می‌شود. برای جلوگیری از شرایط رقابتی، این فایل باید پیش از \fBauth_control_file\fP نوشته شود. .sp این دلیل شکست احراز هویت می‌تواند عبارتی ساده مانند \(dqUser has been permanently disabled\(dq باشد، اما پیام‌های شکست احراز هویت ویژه دیگری نیز وجود دارند. .sp پیام \fBTEMP\fP نشان می‌دهد که احراز هویت موقتاً ناموفق بوده و کلاینت باید تلاش مجدد برای اتصال را ادامه دهد. سرور می‌تواند اختیاری پیامی خوانا برای کاربر ارائه دهد و نحوه اقدام را به کلاینت راهنمایی کند. کلیدواژه‌های پیام \fBAUTH_FAILED,TEMP\fP مقادیر/کلیدهای جداشده با ویرگول هستند و نحوه اقدام را به کلاینت نشان می‌دهند. کلیدواژه‌های تعریف‌شده فعلی عبارتند از: .INDENT 7.0 .TP .B \fBbackoff\fP \fBs\fP به کلاینت دستور می‌دهد حداقل \fBs\fP ثانیه پیش از تلاش بعدی برای اتصال صبر کند. اگر کلاینت از قبل تأخیر بیشتری برای اتصال مجدد استفاده می‌کرد، این تأخیر کوتاه‌تر نخواهد شد. .TP .B \fBadvance addr\fP به کلاینت دستور می‌دهد به آدرس (IP) بعدی سرور فعلی متصل شود. .TP .B \fBadvance remote\fP به کلاینت دستور می‌دهد از باقی آدرس‌های IP سرور فعلی صرف‌نظر کرده و به سرور بعدی مشخص‌شده در فایل پیکربندی متصل شود. .TP .B \fBadvance no\fP به کلاینت دستور می‌دهد اتصال مجدد به همان سرور را تکرار کند. .UNINDENT .sp برای مثال، پیام \fBTEMP[backoff 42,advance no]: No free IP addresses\fP نشان می‌دهد که اتصال VPN در حال حاضر نمی‌تواند برقرار شود و به کلاینت دستور می‌دهد ۴۲ ثانیه دیگر مجدداً تلاش کند. .sp هنگام استفاده از احراز هویت معوق، اسکریپت همچنین می‌تواند با نوشتن در فایل مشخص‌شده توسط \fBauth_pending_file\fP درخواست احراز هویت در حال انتظار کند. خط اول باید زمان مهلت (timeout) بر حسب ثانیه باشد، خط دوم روش مورد نیاز (مانند crtext) و خط سوم باید مقادیر EXTRA باشد همان‌طور که در بخش \fBclient\-pending\-auth\fP از فایل \fBdoc/management.txt\fP مستند شده است. .sp این دستورالعمل برای ایجاد رابطی به سبک افزونه جهت گسترش قابلیت‌های احراز هویت OpenVPN طراحی شده است. .sp برای محافظت در برابر کلاینتی که رشته نام‌کاربری یا گذرواژه مخرب ارسال می‌کند، رشته نام‌کاربری فقط باید شامل این نویسه‌ها باشد: الفبانمایی، زیرخط (\(aq\fB_\fP\(aq)، خط تیره (\(aq\fB\-\fP\(aq)، نقطه (\(aq\fB\&.\fP\(aq) یا ات‌ساین (\(aq\fB@\fP\(aq). رشته گذرواژه می‌تواند شامل هر نویسه قابل‌چاپی به جز CR یا LF باشد. هر نویسه غیرمجاز در رشته نام‌کاربری یا گذرواژه به زیرخط (\(aq\fB_\fP\(aq) تبدیل خواهد شد. .sp تمام اسکریپت‌های تعریف‌شده توسط کاربر باید در نحوه مدیریت این رشته‌ها دقت کنند تا از بروز آسیب‌پذیری‌های امنیتی جلوگیری شود. هرگز از این رشته‌ها به گونه‌ای استفاده نکنید که توسط یک مفسر شل ارزیابی یا گریز داده شوند. .sp برای مشاهده یک اسکریپت نمونه که احراز هویت PAM را انجام می‌دهد، فایل \fBsample\-scripts/auth\-pam.pl\fP را در توزیع منبع OpenVPN بررسی کنید. .UNINDENT .INDENT 0.0 .TP .B \-\-client\-crresponse .INDENT 7.0 .INDENT 3.5 هنگامی که کلاینت یک پاسخ به چالش (challenge response) متنی ارسال می‌کند، اجرا می‌شود. .sp نحو معتبر: .INDENT 0.0 .INDENT 3.5 .sp .EX client\-crresponse cmd .EE .UNINDENT .UNINDENT .UNINDENT .UNINDENT .sp برنامه OpenVPN پاسخ کلاینت را در یک پرونده موقت می‌نویسد. نام پرونده به عنوان یک آرگومان به \fBcmd\fP ارسال می‌شود، و پرونده پس از بازگشت اسکریپت به صورت خودکار توسط OpenVPN حذف خواهد شد. .sp پاسخ دقیقاً همان‌طور که از کلاینت آمده ارسال می‌شود. اسکریپت باید خودش بررسی کند که آیا ورودی معتبر است یا خیر، برای مثال آیا ورودی دارای کدگذاری base64 معتبر است یا نه. .sp اسکریپت می‌تواند نتیجه اعتبارسنجی را مستقیماً در \fBauth_control_file بنویسد یا آن را بیشتر به تعویق بیندازد. برای جزئیات به \(ga\fP\-\-auth\-user\-pass\-verify\(ga\(ga مراجعه کنید. .sp برای یک اسکریپت نمونه که احراز هویت دو مرحله‌ای مبتنی بر TOTP (RFC 6238) را پیاده‌سازی می‌کند، \fBsample\-scripts/totpauth.py\fP\& را ببینید. .TP .BI \-\-client\-connect \ cmd اجرای دستور \fBcmd\fP هنگام اتصال کلاینت. .sp \fBcmd\fP شامل یک مسیر به یک اسکریپت (یا برنامه اجرایی) است که به صورت اختیاری آرگومان‌هایی به دنبال آن می‌آیند. مسیر و آرگومان‌ها می‌توانند داخل کوتیشن تکی یا دوتایی قرار گیرند و/یا با استفاده از بک‌اسلش گریز داده شوند، و باید با یک یا چند فاصله از هم جدا شوند. .sp نام عمومی (common name) و آدرس IP کلاینتِ تازه احراز هویت شده به عنوان متغیرهای محیطی به دستور ارسال می‌شوند (بخش متغیرهای محیطی را در زیر ببینید). همچنین مسیر یک پرونده موقت تازه ایجاد شده به عنوان آخرین آرگومان (پس از هر آرگومان مشخص شده در \fBcmd\fP ) به دستور داده می‌شود، تا توسط دستور جهت ارسال دستورالعمل‌های پرونده پیکربندی تولید شده به صورت پویا به OpenVPN استفاده شود. .sp اگر اسکریپت بخواهد یک پرونده پیکربندی پویا برای اعمال روی سرور هنگام اتصال کلاینت تولید کند، باید آن را در پرونده‌ای که نامش در آخرین آرگومان مشخص شده بنویسد. .sp برای گزینه‌هایی که می‌توانند به صورت مجاز در یک پرونده پیکربندی تولید شده به صورت پویا استفاده شوند، گزینه \fB\-\-client\-config\-dir\fP را در زیر ببینید. .sp توجه داشته باشید که مقدار بازگشتی \fBscript\fP مهم است. اگر \fBscript\fP یک وضعیت خطای غیر صفر برگرداند، باعث قطع اتصال کلاینت خواهد شد. .sp اگر یک \fB\-\-client\-connect\fP بخواهد تولید پیکربندی را به تعویق بیندازد، اسکریپت باید از متغیرهای محیطی \fBclient_connect_deferred_file\fP و \fBclient_connect_config_file\fP استفاده کند و وضعیت را بر این اساس در این پرونده‌ها بنویسد. برای جزئیات بیشتر به بخش متغیرهای محیطی مراجعه کنید. .TP .BI \-\-client\-disconnect \ cmd مشابه \fB\-\-client\-connect\fP اما هنگام خاموش شدن نمونه کلاینت فراخوانی می‌شود. فراخوانی نخواهد شد مگر اینکه اسکریپت و پلاگین‌های \fB\-\-client\-connect\fP (در صورت تعریف شدن) پیش‌تر روی این نمونه با وضعیت بازگشتی موفقیت‌آمیز (0) فراخوانی شده باشند. .sp استثنای این قاعده زمانی است که دستور یا پلاگین‌های \fB\-\-client\-disconnect\fP به صورت آبشاری (cascaded) باشند، و حداقل یکی از توابع client\-connect موفق شده باشد؛ در این حالت همه توابع client\-disconnect برای اسکریپت‌ها و پلاگین‌ها هنگام حذف شیء نمونه کلاینت فراخوانی خواهند شد، حتی در مواردی که برخی از توابع مرتبط client\-connect وضعیت خطا برگردانده باشند. .sp هیچ آرگومان اضافی به دستور \fB\-\-client\-disconnect\fP ارسال نمی‌شود (تنها همان آرگومان‌های مشخص شده در cmd، در صورت وجود). .TP .BI \-\-dns\-updown \ cmd اجرای دستور \fBcmd\fP، به جای دستور پیش‌فرض DNS up/down که همراه با openvpn ارائه می‌شود. اگر \fBcmd\fP برابر با \fBdisable\fP باشد، دستور \fB\-\-dns\-updown\fP اجرا نمی‌شود. .sp اگر دستور اختصاصی خود را می‌نویسید، لطفاً مطمئن شوید که پروفایل‌های سرور \fB\-\-dns\fP غیرقابل اعمال نادیده گرفته شوند. تنظیمات درگاه، DNSSEC و انتقال امن باید رعایت شوند. اگر split DNS امکان‌پذیر نباشد، می‌توان از تغییر مسیر کامل (full redirect) به عنوان یک راهکار جایگزین استفاده کرد. اگر پیکربندی همه آدرس‌های سرور یا دامنه‌های جستجو امکان‌پذیر نباشد، آن‌ها را به همان ترتیبی که فهرست شده‌اند اعمال کنید. .sp توجه داشته باشید که \fB\-\-dns\-updown\fP در همه پلتفرم‌ها پشتیبانی نمی‌شود. در Windows تنظیم DNS همیشه توسط سرویس انجام خواهد شد. در Android تنظیم DNS از طریق رابط مدیریتی منتقل می‌شود. .sp توجه داشته باشید که در صورت عدم وجود گزینه‌های \fB\-\-dns\fP، ممکن است \fB\-\-dhcp\-option\fPهای مربوط به DNS تبدیل شوند تا برای این قلاب در دسترس باشند. اگر هرگونه گزینه \fB\-\-dns server\fP وجود داشته باشد، \fB\-\-dhcp\-option\fPهای مربوط به DNS همیشه نادیده گرفته خواهند شد. اگر یک اسکریپت \fB\-\-up\fP تعریف شده باشد، متغیرهای محیطی foreign_option از گزینه‌های \fB\-\-dns\fP تولید شده و به اسکریپت ارسال می‌شوند. در صورت تعریف اسکریپت \fB\-\-up\fP، دستور پیش‌فرض \fB\-\-dns\-updown\fP اجرا نمی‌شود. هر دوی این کارها برای سازگاری با گذشته انجام شده است. در صورتی که می‌خواهید حتی با وجود تعریف \fB\-\-up\fP دستور \fB\-\-dns\-updown\fP اجرا شود، می‌توانید یک دستور سفارشی تعریف کنید یا از \fBforce\fP به عنوان \fBcmd\fP برای اجرای دستور پیش‌فرض استفاده کنید. در این حالت هیچ متغیر محیطی DNS به \fB\-\-up\fP ارسال نخواهد شد. .TP .BI \-\-down \ cmd اجرای دستور \fBcmd\fP پس از بسته شدن دستگاه TUN/TAP (پس از تغییر UID با \fB\-\-user\fP و/یا \fB\-\-chroot\fP ). \fBcmd\fP شامل مسیری به یک اسکریپت (یا برنامه اجرایی) است که به صورت اختیاری آرگومان‌هایی به دنبال آن می‌آیند. مسیر و آرگومان‌ها می‌توانند داخل کوتیشن تکی یا دوتایی قرار گیرند و/یا با استفاده از بک‌اسلش گریز داده شوند، و باید با یک یا چند فاصله از هم جدا شوند. .sp با همان پارامترها و متغیرهای محیطی گزینه \fB\-\-up\fP در بالا فراخوانی می‌شود. .sp توجه داشته باشید که اگر با استفاده از \fB\-\-user\fP و/یا \fB\-\-group\fP سطح دسترسی را کاهش دهید، اسکریپت \fB\-\-down\fP شما نیز با دسترسی کاهش‌یافته اجرا خواهد شد. .TP .B \-\-down\-pre فراخوانی دستور/اسکریپت \fB\-\-down\fP قبل از بسته شدن TUN/TAP، به جای بعد از آن. .UNINDENT .INDENT 0.0 .TP .BI \-\-ipchange \ cmd اجرای دستور \fBcmd\fP هنگامی که نشانی IP راه دور ما برای نخستین بار احراز هویت شده یا تغییر می‌کند. .sp \fBcmd\fP شامل مسیری به یک اسکریپت (یا برنامه اجرایی) است که به صورت اختیاری می‌تواند با آرگومان‌ها همراه شود. مسیر و آرگومان‌ها می‌توانند درون نقل‌قول تکی یا جفتی قرار گرفته و/یا با استفاده از بک‌اسلش گریز داده شوند، و باید با یک یا چند فاصله از یکدیگر جدا شوند. .sp هنگام اجرای \fBcmd\fP، دو آرگومان پس از هر آرگومان مشخص‌شده در \fBcmd\fP به صورت زیر افزوده می‌شوند: .INDENT 7.0 .INDENT 3.5 .sp .EX cmd ip address port number .EE .UNINDENT .UNINDENT .sp از \fB\-\-ipchange\fP در حالت \fB\-\-mode server\fP استفاده نکنید. به جای آن از یک اسکریپت \fB\-\-client\-connect\fP استفاده کنید. .sp برای پارامترهای اضافی ارسالی به عنوان متغیرهای محیطی، بخش متغیرهای محیطی در زیر را ببینید. .sp اگر در محیطی با نشانی‌های IP پویا کار می‌کنید که نشانی IP هر یک از طرفین می‌تواند بدون اطلاع قبلی تغییر کند، می‌توانید برای نمونه از این اسکریپت برای ویرایش پرونده \fB/etc/hosts\fP با نشانی فعلی طرف مقابل استفاده کنید. این اسکریپت هر بار که همتای راه دور نشانی IP خود را تغییر دهد اجرا خواهد شد. .sp به همین ترتیب اگر نشانی IP \fIما\fP به دلیل DHCP تغییر کند، باید اسکریپت تغییر نشانی IP خود را (صفحه راهنمای \fBdhcpcd\fP(8) را ببینید) به گونه‌ای پیکربندی کنیم تا یک سیگنال \fBSIGHUP\fP یا \fBSIGUSR1\fP به OpenVPN ارسال کند. سپس OpenVPN اتصال را با آخرین همتای احراز هویت‌شده روی نشانی IP جدیدش دوباره برقرار خواهد کرد. .TP .BI \-\-learn\-address \ cmd اجرای دستور \fBcmd\fP برای اعتبارسنجی نشانی‌های مجازی یا مسیرهای کلاینت. .sp \fBcmd\fP شامل مسیری به یک اسکریپت (یا برنامه اجرایی) است که به صورت اختیاری می‌تواند با آرگومان‌ها همراه شود. مسیر و آرگومان‌ها می‌توانند درون نقل‌قول تکی یا جفتی قرار گرفته و/یا با استفاده از بک‌اسلش گریز داده شوند، و باید با یک یا چند فاصله از هم جدا شوند. .sp سه آرگومان به هر آرگومان مشخص در \fBcmd\fP به صورت زیر پیوست خواهد شد: .INDENT 7.0 .TP .B \fB$1\fP \- [عملیات] \fB\(dqadd\(dq\fP، \fB\(dqupdate\(dq\fP یا \fB\(dqdelete\(dq\fP بر اساس اینکه نشانی به جدول مسیریابی درونی OpenVPN افزوده، ویرایش یا از آن حذف شده است یا خیر. .TP .B \fB$2\fP \- [نشانی] نشانی‌ای که در حال یادگیری یا فراموش‌شدن است. این مقدار می‌تواند شامل موارد زیر باشد: .INDENT 7.0 .IP \(bu 2 یک نشانی IPv4 مانند \fB\(dq198.162.10.14\(dq\fP، .IP \(bu 2 یک زیرشبکه IPv4 مانند \fB\(dq198.162.10.0/24\(dq\fP، .IP \(bu 2 یک نشانی IPv6 مانند \fB\(dq2001:db8:1:2:3:4:5:6\(dq\fP، .IP \(bu 2 یک زیرشبکه IPv6 مانند \fB\(dq2001:db8:1:2:3:4:5::/112\(dq\fP، یا .IP \(bu 2 یک نشانی اترنت MAC (هنگامی که \fB\-\-dev tap\fP استفاده می‌شود) مانند \fB\(dq00:FF:01:02:03:04\(dq\fP\&. .UNINDENT .TP .B \fB$3\fP \- [نام عمومی] نام عمومی (Common Name) روی گواهی مرتبط با کلاینت متصل به این نشانی. تنها برای عملیات‌های \fB\(dqadd\(dq\fP یا \fB\(dqupdate\(dq\fP وجود دارد، نه \fB\(dqdelete\(dq\fP\&. .UNINDENT .sp در متدهای \fB\(dqadd\(dq\fP یا \fB\(dqupdate\(dq\fP، اگر اسکریپت کد خطایی (غیرصفر) بازگرداند، OpenVPN نشانی را رد کرده و جدول مسیریابی درونی خود را تغییر نخواهد داد. .sp به طور معمول، اسکریپت \fBcmd\fP از اطلاعات ارائه‌شده در بالا برای تنظیم ورودی‌های مناسب دیواره آتش روی رابط TUN/TAP مربوط به VPN استفاده می‌کند. از آنجا که OpenVPN ارتباط بین نشانی مجازی IP یا MAC و نام عمومی احراز هویت‌شده کلاینت را فراهم می‌کند، به اسکریپت تعریف‌شده توسط کاربر امکان می‌دهد تا سیاست‌های دسترسی دیواره آتش را بر اساس نام عمومی سطح‌بالای کلاینت، به جای نشانی‌های مجازی سطح‌پایین کلاینت پیکربندی کند. .sp اتصال یک کلاینت دارای پشته دوگانه (dual\-stack) به سرور دوپشته‌ای باعث دو بار فراخوانی پشت سر هم اسکریپت \fBcmd\fP خواهد شد، زیرا سرور هر یک از نشانی‌های IPv4 و IPv6 کلاینت را یاد می‌گیرد. .TP .BI \-\-route\-up \ cmd اجرای دستور \fBcmd\fP پس از افزودن مسیرها، منوط به \fB\-\-route\-delay\fP\&. .sp \fBcmd\fP شامل مسیری به یک اسکریپت (یا برنامه اجرایی) است که به صورت اختیاری می‌تواند با آرگومان‌ها همراه شود. مسیر و آرگومان‌ها می‌توانند درون نقل‌قول تکی یا جفتی قرار گرفته و/یا با استفاده از بک‌اسلش گریز داده شوند، و باید با یک یا چند فاصله از هم جدا شوند. .sp برای پارامترهای اضافی ارسالی به عنوان متغیرهای محیطی، بخش متغیرهای محیطی در زیر را ببینید. .TP .BI \-\-route\-pre\-down \ cmd اجرای دستور \fBcmd\fP پیش از حذف مسیرها هنگام قطع اتصال. .sp \fBcmd\fP شامل مسیری به یک اسکریپت (یا برنامه اجرایی) است که به صورت اختیاری می‌تواند با آرگومان‌ها همراه شود. مسیر و آرگومان‌ها می‌توانند درون نقل‌قول تکی یا جفتی قرار گرفته و/یا با استفاده از بک‌اسلش گریز داده شوند، و باید با یک یا چند فاصله از هم جدا شوند. .sp برای پارامترهای اضافی ارسالی به عنوان متغیرهای محیطی، بخش متغیرهای محیطی در زیر را ببینید. .TP .BI \-\-setenv \ args تنظیم یک متغیر محیطی سفارشی \fBname=value\fP برای ارسال به اسکریپت. .sp نحوهای معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX setenv name value setenv FORWARD_COMPATIBLE 1 setenv opt config_option .EE .UNINDENT .UNINDENT .sp با تنظیم \fBFORWARD_COMPATIBLE\fP روی \fB1\fP، بررسی نحو پرونده پیکربندی ساده‌تر می‌شود به طوری که دستورالعمل‌های ناشناخته به جای خطای مهلک، هشدار صادر می‌کنند، بر این فرض که دستورالعمل ناشناخته مفروض ممکن است در نسخه‌های آینده OpenVPN معتبر باشد. .sp این گزینه باید با احتیاط استفاده شود، زیرا دلایل امنیتی موجهی برای متوقف شدن OpenVPN در صورت شناسایی مشکلات در یک پرونده پیکربندی وجود دارد. با این حال، دلایل معتبری نیز برای کاهش ملایم کارایی ویژگی‌های جدید نرم‌افزار هنگام مواجهه با نسخه‌های قدیمی‌تر نرم‌افزار وجود دارد. .sp همچنین امکان برچسب‌گذاری یک دستورالعمل مشخص وجود دارد تا در صورت عدم شناسایی آن، خطای مهلکی رخ ندهد. برای انجام این کار، عبارت زیر را پیش از دستورالعمل قرار دهید: \fBsetenv opt\fP .sp نسخه‌های پیش از OpenVPN 2.3.3 همیشه گزینه‌های تنظیم‌شده با دستورالعمل \fBsetenv opt\fP را نادیده می‌گیرند. .sp همچنین \fB\-\-ignore\-unknown\-option\fP را ببینید. .UNINDENT .INDENT 0.0 .TP .BI \-\-setenv\-safe \ args تنظیم یک متغیر محیطی سفارشی \fBOPENVPN_name\fP با مقدار \fBvalue\fP برای ارسال به اسکریپت‌ها. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX setenv\-safe name value .EE .UNINDENT .UNINDENT .sp این دستورالعمل برای ارسال (push) از سمت سرور به کلاینت‌ها طراحی شده است، و افزودن پیشوند \fBOPENVPN_\fP به متغیر محیطی یک اقدام احتیاطی برای جلوگیری از حملاتی از نوع \fBLD_PRELOAD\fP توسط یک سرور مخرب یا آسیب‌دیده است. .TP .BI \-\-tls\-verify \ cmd اجرای دستور \fBcmd\fP برای اعتبارسنجی نام X509 یک اتصال TLS در حال انتظار که سایر آزمون‌های گواهی را پشت سر گذاشته است (به‌جز ابطال از طریق دستورالعمل \fB\-\-crl\-verify\fP؛ آزمون ابطال پس از آزمون \fB\-\-tls\-verify\fP رخ می‌دهد). .sp دستور \fBcmd\fP باید برای مجاز کردن ادامه دست‌تکانی TLS مقدار \fB0\fP و برای شکست مقدار \fB1\fP را برگرداند. .sp دستور \fBcmd\fP شامل مسیری به یک اسکریپت (یا برنامه اجرایی) است که می‌تواند با آرگومان‌هایی دنبال شود. مسیر و آرگومان‌ها ممکن است در نقل‌قول تکی یا دوتایی قرار گیرند و/یا با بک‌اسلش گریز داده شوند، و باید با یک یا چند فاصله از هم جدا شوند. .sp هنگامی که \fBcmd\fP اجرا می‌شود، دو آرگومان پس از هر آرگومانی که در \fBcmd\fP مشخص شده باشد، به صورت زیر اضافه می‌شود: .INDENT 7.0 .INDENT 3.5 .sp .EX cmd certificate_depth subject .EE .UNINDENT .UNINDENT .sp این آرگومان‌ها به ترتیب عبارتند از عمق فعلی گواهی و نام متمایز موضوع (subject dn) گواهی X509 طرف مقابل. .sp این قابلیت زمانی مفید است که طرف مقابل که می‌خواهید به آن اعتماد کنید گواهی‌ای دارد که توسط مرجع صدور گواهی امضا شده است که گواهی‌های بسیار دیگری را نیز امضا کرده است، در حالی که لزوماً نمی‌خواهید به همه آنها اعتماد کنید، بلکه ترجیح می‌دهید در پذیرش گواهی طرف مقابل گزینشی عمل کنید. این قابلیت به شما امکان می‌دهد اسکریپتی بنویسید که نام X509 را در یک گواهی آزمایش کرده و تصمیم بگیرد که آیا باید پذیرفته شود یا خیر. برای یک اسکریپت ساده perl که فیلد نام عمومی (common name) را روی گواهی آزمایش می‌کند، فایل \fBverify\-cn\fP را در توزیع OpenVPN ببینید. .sp برای پارامترهای بیشتر که به عنوان متغیرهای محیطی ارسال می‌شوند، بخش Environmental Variables را در زیر ببینید. .TP .BI \-\-tls\-export\-cert \ dir افزودن متغیر محیطی \fBpeer_cert\fP هنگام فراخوانی اسکریپت \fB\-\-tls\-verify\fP یا اجرای قلاب افزونه OPENVPN_PLUGIN_TLS_VERIFY برای اعتبارسنجی گواهی. .sp این متغیر محیطی شامل مسیر یک گواهی با کدبندی PEM از گواهی طرف مقابل فعلی در پوشه \fBdir\fP\& است. .TP .BI \-\-up \ cmd اجرای دستور \fBcmd\fP پس از باز شدن موفقیت‌آمیز دستگاه TUN/TAP (پیش از تغییر UID گزینه \fB\-\-user\fP). .sp دستور \fBcmd\fP شامل مسیری به یک اسکریپت (یا برنامه اجرایی) است که می‌تواند با آرگومان‌هایی دنبال شود. مسیر و آرگومان‌ها ممکن است در نقل‌قول تکی یا دوتایی قرار گیرند و/یا با بک‌اسلش گریز داده شوند، و باید با یک یا چند فاصله از هم جدا شوند. .sp دستور up برای مشخص کردن دستورات مسیریابی که ترافیک IP به مقصد زیرشبکه‌های خصوصی واقع در سمت دیگر اتصال VPN را به درون تونل هدایت می‌کنند، کاربرد دارد. .sp برای \fB\-\-dev tun\fP به این صورت اجرا می‌شود: .INDENT 7.0 .INDENT 3.5 .sp .EX cmd tun_dev tun_mtu 0 ifconfig_local_ip ifconfig_remote_ip [init | restart] .EE .UNINDENT .UNINDENT .sp برای \fB\-\-dev tap\fP به این صورت اجرا می‌شود: .INDENT 7.0 .INDENT 3.5 .sp .EX cmd tap_dev tap_mtu 0 ifconfig_local_ip ifconfig_netmask [init | restart] .EE .UNINDENT .UNINDENT .sp برای پارامترهای بیشتر که به عنوان متغیرهای محیطی ارسال می‌شوند، بخش Environmental Variables را در زیر ببینید. آرگومان \fB0\fP قبلاً \fBlink_mtu\fP بوده است که دیگر به اسکریپت‌ها ارسال نمی‌شود \- برای حفظ ترتیب آرگومان‌ها، با \fB0\fP\& جایگزین شده است. .sp توجه داشته باشید که اگر \fBcmd\fP شامل آرگومان‌هایی باشد، تمام آرگومان‌های تولیدشده توسط OpenVPN به آن‌ها الحاق می‌شوند تا فهرست آرگومانی ساخته شود که برنامه اجرایی با آن فراخوانی خواهد شد. .sp معمولاً \fBcmd\fP اسکریپتی را برای افزودن مسیرها به تونل اجرا می‌کند. .sp به‌طور معمول اسکریپت up پس از باز شدن دستگاه TUN/TAP فراخوانی می‌شود. در این زمینه، آخرین پارامتر خط فرمان ارسالی به اسکریپت \fIinit.\fP خواهد بود. اگر از گزینه \fB\-\-up\-restart\fP نیز استفاده شود، اسکریپت up برای راه‌اندازی‌های مجدد نیز فراخوانی خواهد شد. راه‌اندازی مجدد به عنوان مقداردهی اولیه جزئی مجدد OpenVPN در نظر گرفته می‌شود که در آن نمونه TUN/TAP حفظ می‌گردد (گزینه \fB\-\-persist\-tun\fP این حفظ را فعال می‌کند). راه‌اندازی مجدد می‌تواند توسط سیگنال SIGUSR1، اتمام مهلت زمان \fB\-\-ping\-restart\fP، یا بازنشانی اتصال هنگامی که پروتکل TCP با گزینه \fB\-\-proto\fP فعال است رخ دهد. اگر راه‌اندازی مجدد رخ دهد، و \fB\-\-up\-restart\fP مشخص شده باشد، اسکریپت up با \fIrestart\fP به عنوان آخرین پارامتر فراخوانی خواهد شد. .INDENT 7.0 .TP .B \fINOTE:\fP هنگام راه‌اندازی مجدد، OpenVPN مجموعه کامل متغیرهای محیطی را به اسکریپت ارسال نمی‌کند. به‌ویژه، هیچ‌چیز مربوط به مسیریابی و درگاه‌ها ارسال نخواهد شد، زیرا در هر صورت نیازی به انجام کاری نیست \- تمام پیکربندی‌های مسیریابی از قبل برقرار هستند. علاوه بر این، اسکریپت up\-restart با تنظیمات تقلیل‌یافته UID/GID اجرا خواهد شد (در صورت پیکربندی). .UNINDENT .sp مثال مستقل زیر نحوه فراخوانی اسکریپت \fB\-\-up\fP را هم در زمینه مقداردهی اولیه و هم راه‌اندازی مجدد نشان می‌دهد. (\fINOTE:\fP به دلایل امنیتی، مثال زیر را اجرا نکنید مگر اینکه درگاه UDP 9999 توسط دیوار آتش شما مسدود شده باشد. همچنین، مثال به طور نامحدود اجرا خواهد شد، بنابراین باید با control\-c آن را متوقف کنید). .INDENT 7.0 .INDENT 3.5 .sp .EX openvpn \-\-dev tun \-\-port 9999 \-\-verb 4 \-\-ping\-restart 10 \e \-\-up \(aqecho up\(aq \-\-down \(aqecho down\(aq \-\-persist\-tun \e \-\-up\-restart .EE .UNINDENT .UNINDENT .sp توجه داشته باشید که OpenVPN همچنین گزینه \fB\-\-ifconfig\fP را برای اعمال خودکار ifconfig روی دستگاه TUN فراهم می‌کند، که نیاز به تعریف اسکریپت \fB\-\-up\fP را برطرف می‌سازد، مگر اینکه بخواهید مسیرها را نیز در اسکریپت \fB\-\-up\fP پیکربندی کنید. .sp اگر \fB\-\-ifconfig\fP نیز مشخص شده باشد، OpenVPN نقاط انتهایی محلی و دوردست ifconfig را در خط فرمان به اسکریپت \fB\-\-up\fP ارسال می‌کند تا بتوان از آن‌ها برای پیکربندی مسیرهایی مانند زیر استفاده کرد: .INDENT 7.0 .INDENT 3.5 .sp .EX route add \-net 10.0.0.0 netmask 255.255.255.0 gw $5 .EE .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-\-up\-delay به تاخیر انداختن باز شدن TUN/TAP و اجرای احتمالی اسکریپت \fB\-\-up\fP تا پس از برقراری اتصال TCP/UDP با همتا (peer). .sp در حالت \fB\-\-proto udp\fP، این گزینه معمولاً نیازمند استفاده از \fB\-\-ping\fP است تا شروع اتصال در غیاب داده‌های تونل شناسایی شود، چرا که UDP یک پروتکل \(dqبدون اتصال (connectionless)\(dq است. .sp در ویندوز، این گزینه تغییر وضعیت رسانه TAP\-Win32 به \(dqconnected\(dq را تا زمان برقراری اتصال، یعنی دریافت اولین بسته احراز هویت شده از همتا به تاخیر می‌اندازد. .TP .B \-\-up\-restart فعال کردن فراخوانی اسکریپت‌های \fB\-\-up\fP و \fB\-\-down\fP برای راه‌اندازی‌های مجدد و همچنین شروع اولیه برنامه. این گزینه به طور کامل‌تر در بالا در مستندات گزینه \fB\-\-up\fP توضیح داده شده است. .UNINDENT .SS انواع رشته و نگاشت مجدد .sp در موارد خاص، OpenVPN نویسه‌ها را در رشته‌ها بازنگاشت (remapping) می‌کند. در اصل، هر نویسه‌ای خارج از مجموعه نویسه‌های مجاز برای هر نوع رشته، به خط زیر (\(aq_\(aq) تبدیل خواهد شد. .INDENT 0.0 .TP .B \fIپرسش: چرا نگاشت مجدد رشته ضروری است؟\fP این یک ویژگی امنیتی مهم برای جلوگیری از کدگذاری مخرب رشته‌ها از منابع غیرقابل اعتماد است تا به عنوان آرگومان به اسکریپت‌ها ارسال نشوند، در متغیرهای محیطی ذخیره نشوند، به عنوان نام مشترک استفاده نشوند، به نام پرونده ترجمه نشوند، و غیره. .TP .B \fIپرسش: آیا نگاشت مجدد رشته می‌تواند غیرفعال شود؟\fP خیر. گزینه‌های \fB\-\-no\-name\-remapping\fP و \fB\-\-compat\-names\fP در نگارش 2.5 حذف شده‌اند زیرا بیش از حد ناامن در نظر گرفته می‌شدند. .UNINDENT .sp در اینجا مرور کوتاهی از انواع رشته‌های کنونی OpenVPN و دسته نویسه‌های مجاز برای هر رشته آورده شده است: .INDENT 0.0 .TP .B \fIنام‌های X509\fP حروف و ارقام، خط زیر (\(aq_\(aq)، خط تیره (\(aq\-\(aq)، نقطه (\(aq.\(aq)، ات‌ساین (\(aq@\(aq)، دونقطه (\(aq:\(aq)، اسلش (\(aq/\(aq)، و مساوی (\(aq=\(aq). نویسه حرفی\-عددی (Alphanumeric) به عنوان نویسه‌ای تعریف می‌شود که باعث بازگرداندن مقدار true توسط تابع isalnum() در کتابخانه C شود. .TP .B \fIنام‌های مشترک (Common Names)\fP حروف و ارقام، خط زیر (\(aq_\(aq)، خط تیره (\(aq\-\(aq)، نقطه (\(aq.\(aq)، و ات‌ساین (\(aq@\(aq). .TP .B \fIنام کاربری \-\-auth\-user\-pass\fP مشابه نام مشترک، با یک استثنا: نام کاربری به صورت خام و بدون نگاشت مجدد رشته به افزونه \fBOPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY\fP ارسال می‌شود. .TP .B \fIگذرواژه \-\-auth\-user\-pass\fP هر نویسه \(dqقابل چاپ\(dq به جز CR یا LF. نویسه قابل چاپ به عنوان نویسه‌ای تعریف می‌شود که باعث بازگرداندن مقدار true توسط تابع isprint() در کتابخانه C شود. .TP .B \fIنام پرونده \-\-client\-config\-dir مشتق‌شده از common name یا username\fP حروف و ارقام، خط زیر (\(aq_\(aq)، خط تیره (\(aq\-\(aq)، ات‌ساین (\(aq@\(aq)، و نقطه (\(aq.\(aq) به جز \(dq.\(dq یا \(dq..\(dq به عنوان رشته‌های مستقل. .TP .B \fIنام‌های متغیرهای محیطی\fP حروف و ارقام یا خط زیر (\(aq_\(aq). .TP .B \fIمقادیر متغیرهای محیطی\fP هر نویسه قابل چاپ. .UNINDENT .sp برای تمام موارد، نویسه‌های موجود در یک رشته که عضو دسته نویسه‌های مجاز برای آن نوع رشته نیستند، به خط زیر (\(aq_\(aq) بازنگاشت خواهند شد. .SS متغیرهای محیطی .sp پس از تنظیم، یک متغیر به طور نامحدود باقی می‌ماند تا زمانی که با یک مقدار جدید یا راه‌اندازی مجدد بازنشانی شود، .sp در حالت سرور، دامنه متغیرهای محیطی تنظیم‌شده توسط OpenVPN بر اساس اشیاء کلاینت مرتبط با آن‌ها مشخص می‌شود، بنابراین نباید هیچ مشکلی در دسترسی اسکریپت‌ها به متغیرهای قدیمی و از پیش تنظیم‌شده که به نمونه‌های مختلف کلاینت ارجاع دارند وجود داشته باشد. .INDENT 0.0 .TP .B \fBbytes_received\fP تعداد کل بایت‌های دریافت شده از کلاینت در طول نشست VPN. پیش از اجرای اسکریپت \fB\-\-client\-disconnect\fP مقداردهی می‌شود. .TP .B \fBbytes_sent\fP تعداد کل بایت‌های ارسال شده به کلاینت در طول نشست VPN. پیش از اجرای اسکریپت \fB\-\-client\-disconnect\fP مقداردهی می‌شود. .TP .B \fBclient_connect_config_file\fP مسیر پرونده پیکربندی که باید توسط اسکریپت \fB\-\-client\-connect\fP در آن نوشته شود (اختیاری، در صورتی که پیکربندی مجزا برای هر نشست مد نظر باشد). این همان نام پرونده‌ای است که از طریق آرگومان خط فرمان در هنگام فراخوانی اسکریپت \fB\-\-client\-connect\fP ارسال می‌شود. .TP .B \fBclient_connect_deferred_file\fP این پرونده می‌تواند به صورت اختیاری برای اعلام کد وضعیت اسکریپت یا افزونه \fB\-\-client\-connect\fP نوشته شود. فقط اولین نویسه در پرونده اهمیت دارد. این نویسه باید یا \fB1\fP برای نشان دادن اجرای عادی اسکریپت باشد، \fB0\fP نشان‌دهنده خطا است (همانند وضعیت خروج غیر صفر) یا \fB2\fP برای نشان دادن این که اسکریپت بازگرداندن پرونده پیکربندی را به تعویق انداخته است. .sp برای رسیدگی معوق (پس‌زمینه)، اسکریپت یا افزونه حتماً باید \fB2\fP را در پرونده بنویسد تا تعویق را اعلام کند و سپس با کد خروج \fB0\fP بازگردد تا پیام \fBdeferred handler started OK\fP را مخابره کند\&. .sp سپس یک فرایند پس‌زمینه یا مشابه آن باید وظیفه نوشتن پیکربندی در پرونده مشخص‌شده توسط متغیر محیطی \fBclient_connect_config_file\fP را به عهده بگیرد و پس از اتمام، مقدار \fB1\fP (یا در صورت بروز خطا \fB0\fP) را در این پرونده بنویسد. .sp نبود هرگونه نویسه در پرونده هنگام پایان اجرای اسکریپت، همانند \fB1\fP تفسیر می‌شود\&. این به اسکریپت‌هایی که برای پشتیبانی از سازوکار تعویق نوشته نشده‌اند اجازه می‌دهد تا بدون تغییر مورد استفاده قرار گیرند. .UNINDENT .INDENT 0.0 .TP .B \fBcommon_name\fP نام عمومی (common name) مربوط به X509 یک کلاینت احراز هویت شده. پیش از اجرای اسکریپت‌های \fB\-\-client\-connect\fP، \fB\-\-client\-disconnect\fP و \fB\-\-auth\-user\-pass\-verify\fP تنظیم می‌شود. .TP .B \fBconfig\fP نام نخستین پروندهٔ \fB\-\-config\fP. هنگام راه‌اندازی برنامه تنظیم شده و با SIGHUP بازنشانی می‌شود. .TP .B \fBdaemon\fP اگر دستورالعمل \fB\-\-daemon\fP مشخص شده باشد روی \(dq1\(dq و در غیر این صورت روی \(dq0\(dq تنظیم می‌شود. هنگام راه‌اندازی برنامه تنظیم شده و با SIGHUP بازنشانی می‌شود. .TP .B \fBdaemon_log_redirect\fP اگر دستورالعمل‌های \fB\-\-log\fP یا \fB\-\-log\-append\fP مشخص شده باشند روی \(dq1\(dq و در غیر این صورت روی \(dq0\(dq تنظیم می‌شود. هنگام راه‌اندازی برنامه تنظیم شده و با SIGHUP بازنشانی می‌شود. .TP .B \fBdev\fP نام واقعی دستگاه TUN/TAP، شامل شمارهٔ واحد در صورت وجود. پیش از اجرای اسکریپت‌های \fB\-\-up\fP یا \fB\-\-down\fP تنظیم می‌شود. .TP .B \fBdev_idx\fP در ویندوز، نمایهٔ (index) دستگاه مربوط به آداپتور TUN/TAP (جهت استفاده در فراخوانی‌های netsh.exe که گاهی با نام‌های رابط به درستی کار نمی‌کنند). پیش از اجرای اسکریپت‌های \fB\-\-up\fP یا \fB\-\-down\fP تنظیم می‌شود. .TP .B \fBdns_*\fP گزینه‌های پیکربندی \fB\-\-dns\fP از طریق این مجموعه از متغیرهای محیطی در دسترس اجرای \fB\-\-dns\-updown\fP قرار خواهند گرفت. متغیرها تنها در صورتی پدیدار می‌شوند که به گزینهٔ مربوطه مقداری تخصیص داده شده باشد. برای آگاهی از مفهوم دقیق هر متغیر، لطفاً به مستندات \fB\-\-dns\fP\& مراجعه کنید. .INDENT 7.0 .INDENT 3.5 .sp .EX dns_search_domain_{n} dns_server_{n}_address_{m} dns_server_{n}_port_{m} dns_server_{n}_resolve_domain_{m} dns_server_{n}_dnssec dns_server_{n}_transport dns_server_{n}_sni .EE .UNINDENT .UNINDENT .TP .B \fBforeign_option_{n}\fP گزینه‌ای که از طریق \fB\-\-push\fP به کلاینتی ارسال (push) شده که به طور بومی از آن پشتیبانی نمی‌کند، مانند \fB\-\-dhcp\-option\fP در یک سیستم غیرویندوزی، پیش از اجرای اسکریپت \fB\-\-up\fP در این دنباله از متغیرهای محیطی ذخیره خواهد شد. .TP .B \fBifconfig_ipv6_local\fP نشانی IPv6 محلی نقطهٔ پایانی VPN مشخص‌شده در گزینهٔ \fB\-\-ifconfig\-ipv6\fP (پارامتر اول). پیش از فراخوانی دستورهای \fBifconfig\fP یا code:\fInetsh\fP (نسخهٔ ویندوزی ifconfig) توسط OpenVPN تنظیم می‌شود که معمولاً قبل از اجرای اسکریپت \fB\-\-up\fP رخ می‌دهد. .TP .B \fBifconfig_ipv6_netbits\fP طول پیشوند (prefix length) شبکهٔ IPv6 در رابط VPN. مشتق‌شده از پارامتر nnn/ در نشانی IPv6 در گزینهٔ \fB\-\-ifconfig\-ipv6\fP (پارامتر اول). پیش از فراخوانی دستورهای \fBifconfig\fP یا \fBnetsh\fP (نسخهٔ ویندوزی ifconfig) توسط OpenVPN تنظیم می‌شود که معمولاً قبل از اجرای اسکریپت \fB\-\-up\fP رخ می‌دهد. .TP .B \fBifconfig_ipv6_remote\fP نشانی IPv6 دوردست (remote) نقطهٔ پایانی VPN مشخص‌شده در گزینهٔ \fB\-\-ifconfig\-ipv6\fP (پارامتر دوم). پیش از فراخوانی دستورهای \fBifconfig\fP یا \fBnetsh\fP (نسخهٔ ویندوزی ifconfig) توسط OpenVPN تنظیم می‌شود که معمولاً قبل از اجرای اسکریپت \fB\-\-up\fP رخ می‌دهد. .TP .B \fBifconfig_local\fP نشانی IP محلی نقطهٔ پایانی VPN مشخص‌شده در گزینهٔ \fB\-\-ifconfig\fP (پارامتر اول). پیش از فراخوانی دستورهای \fBifconfig\fP یا \fBnetsh\fP (نسخهٔ ویندوزی ifconfig) توسط OpenVPN تنظیم می‌شود که معمولاً قبل از اجرای اسکریپت \fB\-\-up\fP رخ می‌دهد. .TP .B \fBifconfig_remote\fP نشانی IP دوردست (remote) نقطهٔ پایانی VPN مشخص‌شده در گزینهٔ \fB\-\-ifconfig\fP (پارامتر دوم) هنگامی که \fB\-\-dev tun\fP استفاده شده باشد. پیش از فراخوانی دستورهای \fBifconfig\fP یا \fBnetsh\fP (نسخهٔ ویندوزی ifconfig) توسط OpenVPN تنظیم می‌شود که معمولاً قبل از اجرای اسکریپت \fB\-\-up\fP رخ می‌دهد. .TP .B \fBifconfig_netmask\fP ماسک زیرشبکهٔ (subnet mask) بخش اترنت مجازی که به عنوان پارامتر دوم در \fB\-\-ifconfig\fP هنگام استفاده از \fB\-\-dev tap\fP مشخص شده است. پیش از فراخوانی دستورهای \fBifconfig\fP یا \fBnetsh\fP (نسخهٔ ویندوزی ifconfig) توسط OpenVPN تنظیم می‌شود که معمولاً قبل از اجرای اسکریپت \fB\-\-up\fP رخ می‌دهد. .TP .B \fBifconfig_pool_local_ip\fP نشانی IPv4 مجازی محلی برای تونل TUN/TAP برگرفته از دستورالعمل \fB\-\-ifconfig\-push\fP در صورت تعیین، یا در غیر این صورت از استخر ifconfig (کنترل‌شده با دستورالعمل پروندهٔ پیکربندی \fB\-\-ifconfig\-pool\fP). تنها برای تونل‌های \fB\-\-dev tun\fP تنظیم می‌شود. این گزینه در کارساز پیش از اجرای اسکریپت‌های \fB\-\-client\-connect\fP و \fB\-\-client\-disconnect\fP تنظیم می‌شود. .TP .B \fBifconfig_pool_local_ip6\fP نشانی IPv6 مجازی محلی برای تونل TUN/TAP برگرفته از دستورالعمل \fB\-\-ifconfig\-ipv6\-push\fP در صورت تعیین، یا در غیر این صورت از استخر ifconfig (کنترل‌شده با دستورالعمل پروندهٔ پیکربندی \fB\-\-ifconfig\-ipv6\-pool\fP). تنها برای تونل‌های \fB\-\-dev tun\fP تنظیم می‌شود. این گزینه در کارساز پیش از اجرای اسکریپت‌های \fB\-\-client\-connect\fP و \fB\-\-client\-disconnect\fP تنظیم می‌شود. .TP .B \fBifconfig_pool_netmask\fP نت‌ماسک (netmask) مجازی IPv4 برای تونل TUN/TAP برگرفته از دستورالعمل \fB\-\-ifconfig\-push\fP در صورت تعیین، یا در غیر این صورت از استخر ifconfig (کنترل‌شده با دستورالعمل پروندهٔ پیکربندی \fB\-\-ifconfig\-pool\fP). تنها برای تونل‌های \fB\-\-dev tap\fP تنظیم می‌شود. این گزینه در کارساز پیش از اجرای اسکریپت‌های \fB\-\-client\-connect\fP و \fB\-\-client\-disconnect\fP تنظیم می‌شود. .TP .B \fBifconfig_pool_ip6_netbits\fP طول پیشوند (prefix length) مجازی IPv6 برای تونل TUN/TAP برگرفته از دستورالعمل \fB\-\-ifconfig\-ipv6\-push\fP در صورت تعیین، یا در غیر این صورت از استخر ifconfig (کنترل‌شده با دستورالعمل پروندهٔ پیکربندی \fB\-\-ifconfig\-ipv6\-pool\fP). تنها برای تونل‌های \fB\-\-dev tap\fP تنظیم می‌شود. این گزینه در کارساز پیش از اجرای اسکریپت‌های \fB\-\-client\-connect\fP و \fB\-\-client\-disconnect\fP تنظیم می‌شود. .UNINDENT .INDENT 0.0 .TP .B \fBifconfig_pool_remote_ip\fP نشانی IPv4 مجازی دوردست برای تونل TUN/TAP که در صورت تعیین، از دستورالعمل \fB\-\-ifconfig\-push\fP گرفته می‌شود، وگرنه از استخر ifconfig (کنترل‌شده توسط دستورالعمل پرونده پیکربندی \fB\-\-ifconfig\-pool\fP). این گزینه پیش از اجرای اسکریپت‌های \fB\-\-client\-connect\fP و \fB\-\-client\-disconnect\fP روی کارگزار تنظیم می‌شود. .TP .B \fBifconfig_pool_remote_ip6\fP نشانی IPv6 مجازی دوردست برای تونل TUN/TAP که در صورت تعیین، از دستورالعمل \fB\-\-ifconfig\-ipv6\-push\fP گرفته می‌شود، وگرنه از استخر ifconfig (کنترل‌شده توسط دستورالعمل پرونده پیکربندی \fB\-\-ifconfig\-ipv6\-pool\fP). این گزینه پیش از اجرای اسکریپت‌های \fB\-\-client\-connect\fP و \fB\-\-client\-disconnect\fP روی کارگزار تنظیم می‌شود. .TP .B \fBlink_mtu\fP \fIREMOVED\fP از OpenVPN 2.6.0 به بعد دیگر به اسکریپت‌ها ارسال نمی‌شود. پیش‌تر حداکثر اندازه بسته (بدون احتساب سربرگ IP) داده‌های تونل در حالت انتقال تونل UDP بود. .TP .B \fBlocal\fP پارامتر \fB\-\-local\fP. هنگام آغاز برنامه تنظیم شده و با SIGHUP بازنشانی می‌شود. .TP .B \fBlocal_port\fP شماره یا نام درگاه محلی، مشخص‌شده توسط \fB\-\-port\fP یا \fB\-\-lport\fP\&. هنگام آغاز برنامه تنظیم شده و با SIGHUP بازنشانی می‌شود. .TP .B \fBpassword\fP گذرواژه ارائه‌شده توسط کارخواه متصل‌شونده. تنها زمانی که تغییردهنده \fBvia\-env\fP مشخص شده باشد، پیش از اجرای اسکریپت \fB\-\-auth\-user\-pass\-verify\fP تنظیم شده و پس از بازگشت اسکریپت از محیط حذف می‌شود. .TP .B \fBpeer_cert\fP اگر گزینه \fB\-\-tls\-export\-cert\fP فعال باشد، این گزینه شامل مسیر گواهی همتای فعلی برای اعتبارسنجی در قالب PEM است. همچنین آرگومان certificate_depth را در دستور \fB\-\-tls\-verify\fP ببینید. .TP .B \fBproto\fP پارامتر \fB\-\-proto\fP. هنگام آغاز برنامه تنظیم شده و با SIGHUP بازنشانی می‌شود. .TP .B \fBremote_{n}\fP پارامتر \fB\-\-remote\fP. هنگام آغاز برنامه تنظیم شده و با SIGHUP بازنشانی می‌شود. .TP .B \fBremote_port_{n}\fP شماره درگاه دوردست، مشخص‌شده توسط \fB\-\-port\fP یا \fB\-\-rport\fP\&. هنگام آغاز برنامه تنظیم شده و با SIGHUP بازنشانی می‌شود. .TP .B \fBroute_net_gateway\fP درگاه پیش‌فرض IP موجود از قبل در جدول مسیریابی سیستم. پیش از اجرای اسکریپت \fB\-\-up\fP تنظیم می‌شود. .TP .B \fBroute_vpn_gateway\fP درگاه پیش‌فرض مورد استفاده گزینه‌های \fB\-\-route\fP، همان‌طور که در گزینه \fB\-\-route\-gateway\fP یا پارامتر دوم \fB\-\-ifconfig\fP هنگام تعیین \fB\-\-dev tun\fP مشخص شده است. پیش از اجرای اسکریپت \fB\-\-up\fP تنظیم می‌شود. .TP .B \fBroute_{parm}_{n}\fP مجموعه‌ای از متغیرها که هر مسیر برای اضافه‌شدن را تعریف کرده و پیش از اجرای اسکریپت \fB\-\-up\fP تنظیم می‌شوند. .sp مقدار \fBparm\fP یکی از موارد \fBnetwork\fP، \fBnetmask\(dq\fP، \fBgateway\fP یا \fBmetric\fP خواهد بود. .sp مقدار \fBn\fP شماره مسیر OpenVPN است که از 1 شروع می‌شود. .sp اگر شبکه یا درگاه نام‌های DNS قابل‌حل باشند، ترجمه نشانی IP آن‌ها به جای نام‌هایشان همان‌طور که در خط فرمان یا پرونده پیکربندی آمده ثبت خواهد شد. .TP .B \fBroute_ipv6_{parm}_{n}\fP مجموعه‌ای از متغیرها که هر مسیر IPv6 برای اضافه‌شدن را تعریف کرده و پیش از اجرای اسکریپت \fB\-\-up\fP تنظیم می‌شوند. .sp مقدار \fBparm\fP یکی از موارد \fBnetwork\fP، \fBgateway\fP یا \fBmetric\fP خواهد بود. برخلاف IPv4 که در یک متغیر محیطی جداگانه ارسال می‌شود، \fBroute_ipv6_network_{n}\fP شامل \fBnetmask\fP به صورت \fB/nnn\fP است. .sp مقدار \fBn\fP شماره مسیر OpenVPN است که از 1 شروع می‌شود. .sp اگر شبکه یا درگاه نام‌های DNS قابل‌حل باشند، ترجمه نشانی IP آن‌ها به جای نام‌هایشان همان‌طور که در خط فرمان یا پرونده پیکربندی آمده ثبت خواهد شد. .UNINDENT .sp \fBroute_redirect_gateway_ipv4\fP .INDENT 0.0 .TP .B \fBroute_redirect_gateway_ipv6\fP اگر درگاه پیش‌فرض مربوطه باید به داخل تونل هدایت شود روی \fB1\fP، و اگر قطعه LAN محلی نیز باید مسدود شود (\fBblock\-local\fP) روی \fB2\fP تنظیم می‌شود. در غیر این صورت تنظیم نمی‌شود. پیش از اجرای اسکریپت \fB\-\-up\fP تنظیم می‌شود. .TP .B \fBscript_context\fP پیش از اجرای اسکریپت up/down روی \(dqinit\(dq یا \(dqrestart\(dq تنظیم می‌شود. برای اطلاعات بیشتر، مستندات \fB\-\-up\fP\& را ببینید. .TP .B \fBscript_type\fP پیش از اجرای هر اسکریپت، این متغیر روی نوع اسکریپت در حال اجرا تنظیم می‌شود. می‌تواند یکی از موارد زیر باشد: \fBup\fP، \fBdown\fP، \fBipchange\fP، \fBroute\-up\fP، \fBtls\-verify\fP، \fBauth\-user\-pass\-verify\fP، \fBclient\-connect\fP، \fBclient\-disconnect\fP یا \fBlearn\-address\fP\&. پیش از اجرای هر اسکریپت تنظیم می‌شود. .TP .B \fBsignal\fP دلیل خروج یا راه‌اندازی مجدد. می‌تواند یکی از موارد \fBsigusr1\fP، \fBsighup\fP، \fBsigterm\fP، \fBsigint\fP، \fBinactive\fP (کنترل‌شده توسط گزینه \fB\-\-inactive\fP)، \fBping\-exit\fP (کنترل‌شده توسط گزینه \fB\-\-ping\-exit\fP)، \fBping\-restart\fP (کنترل‌شده توسط گزینه \fB\-\-ping\-restart\fP)، \fBconnection\-reset\fP (تحریک‌شده در بازنشانی اتصال TCP)، \fBerror\fP یا \fBunknown\fP (سیگنال نامشخص) باشد. این متغیر دقیقاً پیش از اجرای اسکریپت down تنظیم می‌شود. .UNINDENT .INDENT 0.0 .TP .B \fBtime_ascii\fP برچسب زمانی اتصال کلاینت، قالب‌بندی‌شده به‌صورت یک رشته زمانی خوانا برای انسان. پیش از اجرای اسکریپت \fB\-\-client\-connect\fP تنظیم می‌شود. .TP .B \fBtime_duration\fP مدت زمان (به ثانیه) نشست کلاینت که اکنون در حال قطع اتصال است. پیش از اجرای اسکریپت \fB\-\-client\-disconnect\fP تنظیم می‌شود. .TP .B \fBtime_unix\fP برچسب زمانی اتصال کلاینت، قالب‌بندی‌شده به‌صورت مقدار صحیح تاریخ/زمان یونیکس. پیش از اجرای اسکریپت \fB\-\-client\-connect\fP تنظیم می‌شود. .TP .B \fBtls_digest_{n}\fP / \fBtls_digest_sha256_{n}\fP شامل اثر انگشت SHA1 / SHA256 گواهی، که در آن \fBn\fP سطح اعتبارسنجی است. فقط برای اتصال‌های TLS تنظیم می‌شود. پیش از اجرای اسکریپت \fB\-\-tls\-verify\fP تنظیم می‌شود. .TP .B \fBtls_id_{n}\fP مجموعه‌ای از فیلدهای گواهی از همتای دوردست، که در آن \fBn\fP سطح اعتبارسنجی است. فقط برای اتصال‌های TLS تنظیم می‌شود. پیش از اجرای اسکریپت \fB\-\-tls\-verify\fP تنظیم می‌شود. .TP .B \fBtls_serial_{n}\fP شماره سریال گواهی همتای دوردست، که در آن \fBn\fP سطح اعتبارسنجی است. فقط برای اتصال‌های TLS تنظیم می‌شود. پیش از اجرای اسکریپت \fB\-\-tls\-verify\fP تنظیم می‌شود. این مقدار به‌صورت یک رشته ده‌دهی مانند \(dq933971680\(dq است، که برای انجام پرس‌وجوهای OCSP مبتنی بر سریال مناسب است (در OpenSSL، عبارت \(dq0x\(dq را به ابتدای رشته اضافه نکنید). اگر هنگام خواندن مقدار از گواهی مشکلی پیش بیاید، رشته‌ای خالی خواهد بود، بنابراین کد شما باید آن را بررسی کند. اسکریپت \fBcontrib/OCSP_check/OCSP_check.sh\fP را برای نمونه ببینید. .TP .B \fBtls_serial_hex_{n}\fP مانند \fBtls_serial_{n}\fP، اما در قالب هگزادسیمال (مانند \fB12:34:56:78:9A\fP). .TP .B \fBtun_mtu\fP میزان MTU برای دستگاه TUN/TAP. پیش از اجرای اسکریپت \fB\-\-up\fP یا \fB\-\-down\fP تنظیم می‌شود. .TP .B \fBtrusted_ip\fP / \fBtrusted_ip6\fP) آدرس IP واقعی کلاینت یا همتای متصل‌شونده که احراز هویت شده است. پیش از اجرای اسکریپت‌های \fB\-\-ipchange\fP، \fB\-\-client\-connect\fP و \fB\-\-client\-disconnect\fP تنظیم می‌شود. در صورت استفاده از نقاط انتهایی ipv6 (مانند udp6، tcp6)، متغیر \fBtrusted_ip6\fP به‌جای آن تنظیم می‌شود. .TP .B \fBtrusted_port\fP شماره پورت واقعی کلاینت یا همتای متصل‌شونده که احراز هویت شده است. پیش از اجرای اسکریپت‌های \fB\-\-ipchange\fP، \fB\-\-client\-connect\fP و \fB\-\-client\-disconnect\fP تنظیم می‌شود. .TP .B \fBuntrusted_ip\fP / \fBuntrusted_ip6\fP آدرس IP واقعی کلاینت یا همتای متصل‌شونده که هنوز احراز هویت نشده است. گاهی اوقات برای اجرای \fInmap\fP روی میزبان متصل‌شونده در یک اسکریپت \fB\-\-tls\-verify\fP استفاده می‌شود تا از درستی عملکرد فایروال اطمینان حاصل شود. پیش از اجرای اسکریپت‌های \fB\-\-tls\-verify\fP و \fB\-\-auth\-user\-pass\-verify\fP تنظیم می‌شود. در صورت استفاده از نقاط انتهایی ipv6 (مانند udp6، tcp6)، متغیر \fBuntrusted_ip6\fP به‌جای آن تنظیم می‌شود. .TP .B \fBuntrusted_port\fP شماره پورت واقعی کلاینت یا همتای متصل‌شونده که هنوز احراز هویت نشده است. پیش از اجرای اسکریپت‌های \fB\-\-tls\-verify\fP و \fB\-\-auth\-user\-pass\-verify\fP تنظیم می‌شود. .TP .B \fBusername\fP نام کاربری ارائه‌شده توسط کلاینت متصل‌شونده. تنها زمانی پیش از اجرای اسکریپت \fB\-\-auth\-user\-pass\-verify\fP تنظیم می‌شود که اصلاح‌کننده \fBvia\-env\fP مشخص شده باشد. .TP .B \fBX509_{n}_{subject_field}\fP یک فیلد موضوع (subject) گواهی X509 از همتای دوردست، که در آن \fBn\fP سطح اعتبارسنجی است. فقط برای اتصال‌های TLS تنظیم می‌شود. پیش از اجرای اسکریپت \fB\-\-tls\-verify\fP تنظیم می‌شود. این متغیر مشابه \fBtls_id_{n}\fP است به‌جز اینکه فیلدهای سازنده موضوع X509 تفکیک شده‌اند، و هیچ نگاشت مجددی روی رشته‌های این فیلدها اعمال نمی‌شود (به‌جز نگاشت مجدد نویسه‌های کنترلی به \(dq\fB_\fP\(dq). برای نمونه، متغیرهای زیر روی سرور OpenVPN با استفاده از گواهی نمونه کلاینت در sample\-keys (پرونده client.crt) تنظیم خواهند شد. توجه داشته باشید که سطح اعتبارسنجی برای گواهی کلاینت 0 و برای گواهی CA برابر با 1 است. .sp می‌توانید از گزینه \fB\-\-x509\-track\fP برای برون‌ریزی اطلاعات بیشتر یا کمتر از گواهی‌ها استفاده کنید. .INDENT 7.0 .INDENT 3.5 .sp .EX X509_0_emailAddress=me@myhost.mydomain X509_0_CN=Test\-Client X509_0_O=OpenVPN\-TEST X509_0_ST=NA X509_0_C=KG X509_1_emailAddress=me@myhost.mydomain X509_1_O=OpenVPN\-TEST X509_1_L=BISHKEK X509_1_ST=NA X509_1_C=KG .EE .UNINDENT .UNINDENT .UNINDENT .SS گزینه‌های واسط مدیریت (Management Interface Options) .sp برنامه OpenVPN یک واسط مدیریتی مبتنی بر سوکت غنی از ویژگی را برای هر دو حالت عملیاتی سرور و کلاینت فراهم می‌کند. .INDENT 0.0 .TP .BI \-\-management \ args فعال‌سازی سرور مدیریتی روی سوکت یونیکس \fBsocket\-name\fP در پلتفرم‌های پشتیبانی‌کننده، یا روی یک درگاه TCP مشخص‌شده. .sp ساختارهای نحوی معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX management socket\-name unix # management socket\-name unix pw\-file # (recommended) management IP port # (INSECURE) management IP port pw\-file # .EE .UNINDENT .UNINDENT .sp پارامتر \fBpw\-file\fP، در صورت مشخص شدن، پرونده گذرواژه‌ای است که گذرواژه در آن باید در سطر اول باشد. به‌جای نام پرونده می‌توان از کلیدواژه stdin استفاده کرد که هنگام شروع OpenVPN، گذرواژه مورد نیاز را از کاربر درخواست می‌کند. .sp برای سوکت‌های یونیکس، رفتار پیش‌فرض ایجاد یک سوکت دامنه یونیکس است که هر پردازشی می‌تواند به آن متصل شود. از دستورالعمل‌های \fB\-\-management\-client\-user\fP و \fB\-\-management\-client\-group\fP برای محدود کردن دسترسی استفاده کنید. .sp واسط مدیریت یک حالت ویژه فراهم می‌کند که در آن پیوند مدیریتی TCP می‌تواند روی خود تونل کار کند. برای فعال‌سازی این حالت، مقدار IP را روی \fBtunnel\fP\& تنظیم کنید. حالت تونل باعث می‌شود واسط مدیریت روی آدرس محلی VPN از واسط TUN/TAP به اتصالات TCP گوش فرا دهد. .sp هنگام فعال‌سازی واسط مدیریت روی TCP \fB*مراقب باشید*\fP. در این موارد باید \fIهمیشه\fP از \fBpw\-file\fP جهت محافظت واسط مدیریت با گذرواژه استفاده کنید. هر کاربری که بتواند به این \fBIP:port\fP متصل شود، قادر خواهد بود فرآیند OpenVPN را مدیریت، کنترل (و در آن اختلال ایجاد) کند. همچنین اکیداً توصیه می‌شود که IP روی 127.0.0.1 (localhost) تنظیم شود تا دسترسی به سرور مدیریت فقط به کلاینت‌های محلی محدود گردد. .sp اگرچه درگاه مدیریت برای کنترل برنامه‌ریزی‌شده OpenVPN توسط سایر برنامه‌ها طراحی شده است، اما امکان برقراری ارتباط telnet به این درگاه با استفاده از کلاینت telnet در حالت \(dqraw\(dq وجود دارد. پس از اتصال، عبارت \fBhelp\fP را برای مشاهده فهرست دستورها تایپ کنید. .sp برای مستندات دقیق درباره واسط مدیریت، پرونده \fImanagement\-notes.txt\fP را در پوشه management از توزیع سورس OpenVPN مشاهده کنید. .UNINDENT .INDENT 0.0 .TP .B \-\-management\-client رابط مدیریت به‌جای گوش دادن به‌عنوان یک سرور TCP یا روی یک سوکت یونیکس‌دامین، به‌عنوان کلاینت TCP/unix domain به \fBIP:port\fP مشخص‌شده توسط \fB\-\-management\fP متصل خواهد شد. .sp اگر اتصال کلاینت برقرار نشود یا قطع گردد، یک سیگنال SIGTERM تولید شده و باعث خروج OpenVPN می‌شود. .TP .B \-\-management\-client\-auth مسئولیت احراز هویت کلاینت‌ها پس از تأیید گواهی کلاینت آن‌ها را به کلاینت رابط مدیریت محول می‌کند. برای یادداشت‌های دقیق، \fBmanagement\-notes.txt\fP را در بسته توزیع OpenVPN ببینید. .TP .BI \-\-management\-client\-group \ g هنگامی که رابط مدیریت روی یک سوکت یونیکس‌دامین گوش می‌دهد، فقط اتصال‌ها از گروه \fBg\fP مجاز خواهند بود\&. .TP .BI \-\-management\-client\-user \ u هنگامی که رابط مدیریت روی یک سوکت یونیکس‌دامین گوش می‌دهد، فقط اتصال‌ها از کاربر \fBu\fP مجاز خواهند بود\&. .TP .BI \-\-management\-external\-cert \ certificate\-hint اجازه استفاده از گواهی خارجی را به‌جای گزینه \fB\-\-cert\fP می‌دهد (فقط کلاینت). آرگومان \fBcertificate\-hint\fP یک رشته دلخواه است که به‌عنوان یک آرگومان از اعلان \fINEED\-CERTIFICATE\fP به کلاینت رابط مدیریت ارسال می‌شود. به \fB\-\-management\-external\-key\fP نیاز دارد\&. .TP .BI \-\-management\-external\-key \ args اجازه استفاده از پرونده کلید خصوصی خارجی را به‌جای گزینه \fB\-\-key\fP می‌دهد (فقط کلاینت). .sp ساختار دستوری مجاز: .INDENT 7.0 .INDENT 3.5 .sp .EX management\-external\-key management\-external\-key nopadding management\-external\-key pkcs1 management\-external\-key pss .EE .UNINDENT .UNINDENT .sp یا هر ترکیبی مانند: .INDENT 7.0 .INDENT 3.5 .sp .EX management\-external\-key nopadding pkcs1 management\-external\-key pkcs1 pss .EE .UNINDENT .UNINDENT .sp پارامترهای اختیاری \fBnopadding\fP، \fBpkcs1\fP و \fBpss\fP پشتیبانی از الگوریتم‌های فاصله‌گذاری (padding) مختلف را اعلام می‌کنند. برای توضیحات کامل این ویژگی، \fBdoc/mangement\-notes.txt\fP را ببینید. .TP .B \-\-management\-forget\-disconnect باعث می‌شود هنگام قطع نشست مدیریت، OpenVPN گذرواژه‌ها را فراموش کند. .sp این دستور روی نام‌کاربری/گذرواژه \fB\-\-http\-proxy\fP تأثیری ندارد. آن همواره ذخیره (cache) می‌شود. .TP .B \-\-management\-hold اجرای OpenVPN را در وضعیت تعلیق آغاز می‌کند، تا زمانی که یک کلاینت رابط مدیریت صراحتاً آن را با دستور \fBhold release\fP فعال کند. .TP .BI \-\-management\-log\-cache \ n تعداد \fBn\fP خط اخیر از تاریخچه پرونده لاگ را برای استفاده توسط کانال مدیریت در حافظه موقت (cache) نگه می‌دارد. .TP .B \-\-management\-query\-passwords گذرواژه کلید خصوصی و نام‌کاربری/گذرواژه \fB\-\-auth\-user\-pass\fP را از کانال مدیریت استعلام می‌کند. تنها ورودی‌هایی از کانال مدیریت استعلام می‌شوند که در حالت عادی از کنسول درخواست می‌شدند. .TP .B \-\-management\-query\-proxy اطلاعات سرور پروکسی را برای یک \fB\-\-remote\fP مشخص از کانال مدیریت استعلام می‌کند (فقط کلاینت). .TP .B \-\-management\-query\-remote به رابط مدیریت اجازه بازنویسی (override) دستورهای \fB\-\-remote\fP را می‌دهد (فقط کلاینت). .TP .B \-\-management\-signal در صورت قطع نشست مدیریت، سیگنال SIGUSR1 را به OpenVPN ارسال می‌کند. این مورد زمانی کاربرد دارد که بخواهید هنگام خروج کاربر، نشست OpenVPN قطع شود. برای \fB\-\-management\-client\fP نیازی به این گزینه نیست چرا که قطع اتصال همواره یک سیگنال \fBSIGTERM\fP تولید می‌کند\&. .TP .B \-\-management\-up\-down رویدادهای بالا/پایین آمدن تونل (up/down) را به رابط مدیریت گزارش می‌دهد. .UNINDENT .SS گزینه‌های رابط افزونه (Plug\-in) .sp ‏OpenVPN می‌تواند با بارگذاری ماژول‌های افزونه خارجی در زمان اجرا گسترش یابد. این افزونه‌ها باید از پیش ساخته شده باشند و از OpenVPN Plug\-In API پیروی کنند. .INDENT 0.0 .TP .BI \-\-plugin \ args یک ماژول افزونه OpenVPN را بارگذاری می‌کند. .sp ساختار دستوری مجاز: .INDENT 7.0 .INDENT 3.5 .sp .EX plugin module\-name plugin module\-name \(dqarguments\(dq .EE .UNINDENT .UNINDENT .sp آرگومان اول باید \fBmodule\-name\fP باشد که افزونه مورد نظر برای بارگذاری را مشخص می‌کند. آرگومان دوم یک رشته مقداردهی اولیه (init) اختیاری است که مستقیماً به افزونه ارسال می‌شود. اگر مقداردهی اولیه شامل چندین آرگومان باشد، باید در علامت نقل‌قول دوتایی (\(dq) قرار گیرد. چندین ماژول افزونه می‌توانند در یک فرآیند OpenVPN بارگذاری شوند. .sp آرگومان \fBmodule\-name\fP می‌تواند صرفاً یک نام پرونده یا نام پرونده همراه با یک مسیر نسبی یا مطلق باشد. قالب نام پرونده و مسیر تعیین می‌کند که آیا افزونه از پوشه پیش‌فرض افزونه بارگذاری شود یا خارج از این پوشه. .INDENT 7.0 .INDENT 3.5 .sp .EX \-\-plugin path Effective directory used ===================== ============================= myplug.so DEFAULT_DIR/myplug.so subdir/myplug.so DEFAULT_DIR/subdir/myplug.so ./subdir/myplug.so CWD/subdir/myplug.so /usr/lib/my/plug.so /usr/lib/my/plug.so .EE .UNINDENT .UNINDENT .sp مقدار \fBDEFAULT_DIR\fP با پوشه پیش‌فرض افزونه که در زمان ساخت OpenVPN پیکربندی شده، جایگزین می‌شود. \fBCWD\fP پوشه جاری است که OpenVPN در آن راه‌اندازی شده یا پوشه‌ای است که OpenVPN از طریق گزینه \fB\-\-cd\fP پیش از گزینه \fB\-\-plugin\fP به آن جابجا شده است. .sp برای اطلاعات بیشتر و نمونه‌هایی از نحوه ساخت ماژول‌های افزونه OpenVPN، پرونده README موجود در پوشه \fBplugin\fP توزیع سورس OpenVPN را ببینید. .sp اگر از بسته نصبی RPM برای OpenVPN استفاده می‌کنید، \fB/usr/share/openvpn/plugin\fP را ببینید\&. مستندات در \fBdoc\fP و ماژول‌های افزونه اصلی در \fBlib\fP قرار دارند\&. .sp چندین ماژول افزونه را می‌توان به‌صورت آبشاری به‌کار برد و ماژول‌ها را می‌توان همراه با اسکریپت‌ها استفاده کرد. ماژول‌ها به ترتیبی که در پرونده پیکربندی اعلان شده‌اند توسط OpenVPN فراخوانی می‌شوند. اگر هم یک افزونه و هم یک اسکریپت برای فراخوانی بازگشتی (callback) یکسانی تنظیم شده باشند، اسکریپت در آخر فراخوانی می‌شود. چنانچه کد بازگشتی ماژول/اسکریپت یک تابع احراز هویت را کنترل کند (مانند tls\-verify، auth\-user\-pass\-verify، یا client\-connect)، در این صورت تک‌تک ماژول‌ها و اسکریپت‌ها باید وضعیت موفقیت‌آمیز (\fB0\fP) را برگردانند تا اتصال احراز هویت شود. .INDENT 7.0 .TP .B \fBهشدار\fP: افزونه‌ها ممکن است اجرای تعویقی (deferred execution) انجام دهند؛ بدین معنی که افزونه کنترل را به فرآیند اصلی OpenVPN برمی‌گرداند و نتیجه افزونه را بعداً از طریق یک نخ (thread) یا فرآیند دیگر ارائه می‌دهد. ‏OpenVPN از چند افزونه احراز هویت \fBدر شرایطی که بیش از یک افزونه\fP بخواهد احراز هویت تعویقی انجام دهد، پشتیبانی \fBنمی‌کند\fP. در صورت شناسایی چنین رفتاری، OpenVPN در اولین احراز هویت متوقف خواهد شد. .UNINDENT .UNINDENT .SS گزینه‌های مختص Windows .sp این گزینه‌ها در پلتفرم‌های غیر Windows ناشناخته در نظر گرفته شده و منجر به خطای مهلک می‌شوند (به جز \fB\-\-route\-method\fP). ممکن است بخواهید از \fB\-\-setenv opt\fP یا \fB\-\-ignore\-unknown\-option\fP برای نادیده گرفتن این خطا استفاده کنید. توجه داشته باشید که ارسال گزینه‌های ناشناخته از سمت سرور خطای مهلک ایجاد نمی‌کند. .INDENT 0.0 .TP .BI \-\-allow\-nonadmin \ TAP\-adapter (Standalone) تنظیم \fBTAP\-adapter\fP برای مجاز کردن دسترسی از حساب‌های غیر مدیر (non\-administrative). اگر \fBTAP\-adapter\fP حذف شود، تمام آداپتورهای TAP روی سیستم برای اجازه دسترسی غیر مدیر پیکربندی خواهند شد. تنظیم دسترسی غیر مدیر تنها به مدت زمانی که شیء دستگاه و درایور TAP\-Win32 بارگذاری شده باقی بمانند پایدار خواهد بود، و پس از راه‌اندازی مجدد، یا در صورت تخلیه و بارگذاری مجدد درایور، نیاز به فعال‌سازی مجدد خواهد داشت. این دستورالعمل تنها توسط یک مدیر (administrator) قابل استفاده است. .TP .B \-\-block\-outside\-dns مسدود کردن سرورهای DNS در سایر آداپتورهای شبکه جهت جلوگیری از نشت DNS. این گزینه از دسترسی هر برنامه‌ای به درگاه‌های TCP یا UDP شماره 53 به جز درگاه داخل تونل جلوگیری می‌کند. این گزینه از Windows Filtering Platform (WFP) استفاده کرده و در Windows Vista یا جدیدتر کار می‌کند. .TP .BI \-\-cryptoapicert \ select\-string \fI(فقط Windows/OpenSSL)\fP بارگذاری گواهی و کلید خصوصی از Windows Certificate System Store. .sp از این گزینه به جای \fB\-\-cert\fP و \fB\-\-key\fP\& استفاده کنید. .sp این قابلیت استفاده از هر کارت هوشمندی که توسط Windows پشتیبانی می‌شود، و همچنین هر نوع گواهی موجود در Cert Store که در آن به کلید خصوصی دسترسی دارید را ممکن می‌سازد. این گزینه با چند کارت هوشمند مختلف (GemSAFE، Cryptoflex، و Swedish Post Office eID) در سمت کلاینت، و همچنین یک گواهی نرم‌افزاری وارد شده PKCS12 در سمت سرور آزمایش شده است. .sp برای انتخاب یک گواهی بر اساس جستجوی زیررشته در موضوع (subject) گواهی: .INDENT 7.0 .INDENT 3.5 .sp .EX cryptoapicert \(dqSUBJ:Peter Runestig\(dq .EE .UNINDENT .UNINDENT .sp برای انتخاب یک گواهی بر اساس اثر انگشت (هش SHA1) گواهی: .INDENT 7.0 .INDENT 3.5 .sp .EX cryptoapicert \(dqTHUMB:f6 49 24 41 01 b4 ...\(dq .EE .UNINDENT .UNINDENT .sp رشته هگزادسیمال اثر انگشت را می‌توان به راحتی از رابط گرافیکی Windows Certificate Store رونوشت و جای‌گذاری کرد. فاصله‌های موجود در رشته هگز اختیاری هستند. .sp برای انتخاب یک گواهی بر اساس زیررشته در نام صادرکننده (issuer) گواهی: .INDENT 7.0 .INDENT 3.5 .sp .EX cryptoapicert \(dqISSUER:Sample CA\(dq .EE .UNINDENT .UNINDENT .sp برای انتخاب یک گواهی بر اساس نام الگوی گواهی یا OID الگو: .INDENT 7.0 .INDENT 3.5 .sp .EX cryptoapicert \(dqTMPL:Name of Template\(dq cryptoapicert \(dqTMPL:1.3.6.1.4...\(dq .EE .UNINDENT .UNINDENT .sp نخستین گواهی منقضی‌نشده یافت‌شده در مخزن کاربر یا مخزن ماشین که با select\-string مطابقت داشته باشد استفاده می‌شود. .TP .B \-\-dhcp\-release درخواست از Windows برای آزادسازی اجاره (lease) آداپتور TAP هنگام خاموش شدن. این گزینه اکنون هیچ اثری ندارد، زیرا از OpenVPN 2.4.1 به بعد به طور پیش‌فرض فعال است. .TP .B \-\-dhcp\-renew درخواست از Windows برای تمدید اجاره (lease) آداپتور TAP هنگام راه‌اندازی. این گزینه معمولاً غیرضروری است، زیرا Windows هنگام بالا آمدن آداپتور TAP به طور خودکار مذاکره مجدد DHCP را آغاز می‌کند، با این حال اگر ویژگی Media Status آداپتور TAP\-Win32 را روی \(dqAlways Connected\(dq تنظیم کرده باشید، ممکن است به این پرچم نیاز پیدا کنید. .TP .BI \-\-ip\-win32 \ method هنگام استفاده از \fB\-\-ifconfig\fP در Windows، آدرس IP و ماسک شبکه آداپتور TAP\-Win32 را با استفاده از \fBmethod\fP تنظیم کنید. از این گزینه استفاده نکنید مگر اینکه از \fB\-\-ifconfig\fP نیز استفاده کنید. .INDENT 7.0 .TP .B \fBmanual\fP آدرس IP یا ماسک شبکه را به صورت خودکار تنظیم نکنید. در عوض پیامی را به کنسول ارسال کرده و به کاربر اعلام کنید که آداپتور را به صورت دستی پیکربندی کند و IP/netmask مورد انتظار OpenVPN برای آداپتور را مشخص نمایید. .TP .B \fBdynamic [offset] [lease\-time]\fP تنظیم خودکار آدرس IP و ماسک شبکه از طریق پاسخ به پیام‌های پرس‌وجوی DHCP تولید شده توسط هسته. این حالت احتمالاً \(dqتمیزترین\(dq راه‌حل برای تنظیم ویژگی‌های TCP/IP است زیرا از پروتکل شناخته‌شده DHCP استفاده می‌کند. با این حال، دو پیش‌نیاز برای استفاده از این حالت وجود دارد: .INDENT 7.0 .IP 1. 3 ویژگی‌های TCP/IP برای آداپتور TAP\-Win32 باید روی \(dqObtain an IP address automatically\(dq تنظیم شده باشند، و .IP 2. 3 برنامه OpenVPN باید یک آدرس IP را در زیرشبکه تصاحب کند تا از آن به عنوان آدرس سرور DHCP مجازی استفاده نماید. .UNINDENT .sp به طور پیش‌فرض در حالت \fB\-\-dev tap\fP، برنامه OpenVPN نخستین آدرس معمولاً استفاده‌نشده در زیرشبکه را می‌گیرد. برای نمونه، اگر زیرشبکه شما \fB192.168.4.0 netmask 255.255.255.0\fP باشد، OpenVPN آدرس IP مقدار \fB192.168.4.0\fP را به عنوان آدرس سرور DHCP مجازی استفاده خواهد کرد. در حالت \fB\-\-dev tun\fP، برنامه OpenVPN باعث می‌شود سرور DHCP به گونه‌ای نقاب‌گذاری (masquerade) کند که گویی از نقطه پایانی راه دور می‌آید. .sp پارامتر اختیاری offset یک عدد صحیح است که > \fB\-256\fP و < \fB256\fP بوده و پیش‌فرض آن 0 است. اگر offset مثبت باشد، سرور DHCP به عنوان آدرس IP در آدرس شبکه + offset نقاب‌گذاری خواهد کرد. اگر offset منفی باشد، سرور DHCP به عنوان آدرس IP در آدرس پخش همگانی (broadcast) + offset نقاب‌گذاری می‌کند. .sp دستور \fBipconfig /all\fP در Windows می‌تواند برای نمایش آدرسی که Windows به عنوان سرور DHCP در نظر می‌گیرد استفاده شود. برنامه OpenVPN این آدرس را \(dqتصاحب\(dq خواهد کرد، بنابراین اطمینان حاصل کنید که از یک آدرس آزاد استفاده می‌کنید. با این وجود، نمونه‌های مختلف OpenVPN، از جمله سرانجام‌های مختلف یک اتصال یکسان، می‌توانند یک آدرس سرور DHCP مجازی مشترک داشته باشند. .sp پارامتر \fBlease\-time\fP مدت زمان اجاره انتساب DHCP داده‌شده به آداپتور TAP\-Win32 را کنترل می‌کند و بر حسب ثانیه مشخص می‌شود. معمولاً یک زمان اجاره بسیار طولانی ترجیح داده می‌شود زیرا از بین رفتن مسیرهای مرتبط با آداپتور TAP\-Win32 هنگام به خواب رفتن سیستم (sleep) جلوگیری می‌کند. مدت زمان پیش‌فرض اجاره یک سال است. .TP .B \fBnetsh\fP تنظیم خودکار آدرس IP و ماسک شبکه با استفاده از دستور خط فرمان \(dqnetsh\(dq در Windows. به نظر می‌رسد این روش در Windows XP به درستی کار می‌کند اما در Windows 2000 خیر. .TP .B \fBipapi\fP تنظیم خودکار آدرس IP و ماسک شبکه با استفاده از Windows IP Helper API. این رویکرد معناشناسی (semantics) ایده‌آلی ندارد، اگرچه آزمایش‌ها نشان داده است که در عمل به خوبی کار می‌کند. اگر از این گزینه استفاده می‌کنید، بهتر است ویژگی‌های TCP/IP آداپتور TAP\-Win32 را در حالت پیش‌فرض خود، یعنی \(dqObtain an IP address automatically.\(dq رها کنید. .TP .B \fBadaptive\fP (پیش‌فرض) در ابتدا روش \fBdynamic\fP را امتحان کنید و در صورتی که مذاکره DHCP با آداپتور TAP\-Win32 در مدت 20 ثانیه موفقیت‌آمیز نبود، به \fBnetsh\fP جابه‌جا شوید (fail over). این‌گونه خرابی‌ها زمانی رخ می‌دهند که برخی بسته‌های فایروال شخص ثالث نصب شده روی دستگاه کلاینت، مذاکره DHCP مورد استفاده آداپتور TAP\-Win32 را مسدود کنند. توجه داشته باشید که در صورت وقوع جابه‌جایی اضطراری (failover) به \fBnetsh\fP، ویژگی‌های TCP/IP آداپتور TAP\-Win32 از DHCP به ایستا (static) بازنشانی خواهند شد، و این امر باعث می‌شود که راه‌اندازی‌های بعدی OpenVPN با استفاده از حالت \fBadaptive\fP فوراً از \fBnetsh\fP استفاده کنند، به جای اینکه ابتدا \fBdynamic\fP را امتحان نمایند. .sp برای \(dqرها کردن\(dq حالت \fBadaptive\fP از استفاده از \fBnetsh\fP، برنامه OpenVPN را حداقل یک بار با استفاده از حالت \fBdynamic\fP اجرا کنید تا ویژگی‌های TCP/IP آداپتور TAP\-Win32 به پیکربندی DHCP بازگردانده شود. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-\-pause\-exit نمایش پیام \(dqpress any key to continue\(dq روی کنسول پیش از خروج برنامه OpenVPN. این گزینه هنگام اجرای OpenVPN روی یک پرونده پیکربندی از طریق منوی راست‌کلیک، به‌طور خودکار توسط Windows Explorer استفاده می‌شود. .TP .B \-\-register\-dns اجرای \fBipconfig /flushdns\fP و \fBipconfig /registerdns\fP هنگام آغاز اتصال. این کار برای واداشتن ویندوز به شناسایی سرورهای DNS ارسال‌شده شناخته شده است. .TP .BI \-\-route\-method \ m کدام روش \fBm\fP برای افزودن مسیرها در ویندوز استفاده شود؟ .INDENT 7.0 .TP .B \fBadaptive\fP (پیش‌فرض) ابتدا IP helper API را امتحان کن. در صورت شکست، به دستور شل route.exe بازگرد. .TP .B \fBipapi\fP استفاده از IP helper API. .TP .B \fBexe\fP فراخوانی دستور شل route.exe. .UNINDENT .TP .BI \-\-service \ args باید زمانی استفاده شود که OpenVPN به‌طور خودکار توسط برنامه دیگری در شرایطی اجرا می‌شود که هیچ تعاملی با کاربر از طریق نمایشگر یا صفحه‌کلید امکان‌پذیر نیست. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX service exit\-event [0|1] .EE .UNINDENT .UNINDENT .sp به‌طور کلی، کاربران نهایی هرگز نباید نیاز به استفاده صریح از این گزینه داشته باشند، زیرا هنگام اجرای یک پیکربندی مشخص OpenVPN به عنوان یک سرویس، این گزینه به‌طور خودکار توسط راه‌انداز سرویس OpenVPN افزوده می‌شود. .sp \fBexit\-event\fP نام یک شیء رویداد سراسری ویندوز است، و OpenVPN به‌طور مداوم وضعیت این شیء رویداد را نظارت کرده و هنگامی که سیگنال‌دهی شود، خارج می‌شود. .sp پارامتر دوم وضعیت اولیه \fBexit\-event\fP را مشخص می‌کند و به‌طور معمول پیش‌فرض آن 0 است. .sp چندین فرایند OpenVPN می‌توانند به‌طور هم‌زمان با همان پارامتر \fBexit\-event\fP اجرا شوند. در هر صورت، فرایند کنترل‌کننده می‌تواند به \fBexit\-event\fP سیگنال دهد و باعث خروج تمام آن فرایندهای OpenVPN شود. .sp هنگام اجرای یک فرایند OpenVPN با استفاده از دستورالعمل \fB\-\-service\fP، احتمالاً OpenVPN پنجره کنسولی برای خروجی دادن پیام‌های وضعیت/خطا نخواهد داشت، بنابراین استفاده از \fB\-\-log\fP یا \fB\-\-log\-append\fP برای نوشتن این پیام‌ها در یک پرونده مفید است. .TP .B \-\-show\-adapters (مستقل) نمایش آداپتورهای TAP\-Win32 موجود که می‌توان با استفاده از گزینه \fB\-\-dev\-node\fP انتخاب کرد. در سیستم‌های غیرویندوزی، دستور \fBifconfig\fP(8) قابلیت مشابهی ارائه می‌دهد. .TP .B \-\-show\-net (مستقل) نمایش دیدگاه OpenVPN از جدول مسیریابی سیستم و فهرست آداپتورهای شبکه. .TP .B \-\-show\-net\-up خروجی دادن دیدگاه OpenVPN از جدول مسیریابی سیستم و فهرست آداپتورهای شبکه به syslog یا پرونده گزارش، پس از بالا آمدن آداپتور TUN/TAP و اضافه شدن هرگونه مسیر. .TP .B \-\-show\-valid\-subnets (مستقل) نمایش زیرشبکه‌های معتبر برای شبیه‌سازی \fB\-\-dev tun\fP. از آنجا که درایور TAP\-Win32 یک رابط اترنت را به ویندوز صادر می‌کند، و از آنجا که دستگاه‌های TUN ماهیت نقطه‌به‌نقطه دارند، لازم است درایور TAP\-Win32 محدودیت‌های خاصی را بر انتخاب آدرس نقطه پایانی TUN اعمال کند. .sp به این صورت که، نقاط پایانی نقطه‌به‌نقطه استفاده‌شده در شبیه‌سازی دستگاه TUN باید دو آدرس میانی یک زیرشبکه /30 (با netmask 255.255.255.252) باشند. .TP .BI \-\-tap\-sleep \ n باعث می‌شود OpenVPN بلافاصله پس از تنظیم وضعیت آداپتور TAP\-Win32 روی \(dqconnected\(dq به مدت \fBn\fP ثانیه بخوابد. .sp این گزینه برای عیب‌یابی مشکلات گزینه‌های \fB\-\-ifconfig\fP و \fB\-\-ip\-win32\fP در نظر گرفته شده است، و برای دادن زمان به آداپتور TAP\-Win32 جهت آماده‌سازی پیش از اعمال عملیات‌های Windows IP Helper API روی آن استفاده می‌شود. .TP .BI \-\-win\-sys \ path تنظیم مسیر دایرکتوری سیستم ویندوز جهت استفاده برای یافتن برنامه‌های اجرایی سیستم مانند \fBroute.exe\fP و \fBnetsh.exe\fP\&. به‌طور پیش‌فرض، اگر این دستورالعمل مشخص نشود، OpenVPN از متغیر محیطی SystemRoot استفاده خواهد کرد. .sp رفتار این گزینه از OpenVPN 2.3 تغییر کرده است. پیش‌تر باید \fB\-\-win\-sys env\fP را برای استفاده از متغیر محیطی SystemRoot تعریف می‌کردید، در غیر این صورت پیش‌فرض آن \fBC:\e\eWINDOWS\fP بود\&. دیگر نیازی به استفاده از کلیدواژه \fBenv\fP نیست و نادیده گرفته خواهد شد. در صورت یافتن آن در پرونده پیکربندی، هشداری ثبت می‌شود. .UNINDENT .SS گزینه‌های اشکال‌زدایی مستقل .INDENT 0.0 .TP .BI \-\-show\-gateway \ args (مستقل) نمایش دروازه پیش‌فرض فعلی IPv4 و IPv6 و رابط متصل به دروازه (در صورتی که پروتکل مربوطه فعال باشد). .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX \-\-show\-gateway \-\-show\-gateway IPv4\-target \-\-show\-gateway IPv6\-target .EE .UNINDENT .UNINDENT .sp برای IPv4 به دنبال مسیر 0.0.0.0/0، یا آدرس مشخص‌شده IPv4 در صورت تجزیه‌پذیر بودن مقصد به عنوان آدرس IPv4 می‌گردد. برای IPv6 مسیر متصل به ::/128، یا آدرس مقصد مشخص‌شده IPv6 در صورت بودن آرگومان به عنوان یک آدرس IPv6 را بررسی می‌کند. .sp افزودن یک مقصد برای عیب‌یابی مفید است تا مشخص شود در صورت وجود مسیرهای خاص‌تر IPv4/IPv6 به یک سرور VPN، آیا OpenVPN عملکرد صحیحی دارد یا خیر. .UNINDENT .SS گزینه‌های پیشرفته تخصصی .sp این‌ها گزینه‌هایی هستند که تنها در صورت نیاز به تنظیمات خاص الزامی می‌شوند، و اغلب هنگام اشکال‌زدایی یا آزمایش سناریوهای کاربردی خاص استفاده می‌شوند. .INDENT 0.0 .TP .BI \-\-hash\-size \ args اندازه جدول درهم‌سازی نشانی واقعی را روی \fBr\fP و جدول نشانی مجازی را روی \fBv\fP تنظیم می‌کند\&. .sp نحو معتبر: .INDENT 7.0 .INDENT 3.5 .sp .EX hash\-size r v .EE .UNINDENT .UNINDENT .sp به‌طور پیش‌فرض، اندازه هر دو جدول ۴ برابر باکت‌های \fB\-\-max\-clients\fP است. با مقدار پیش‌فرض ۱۰۲۴ برای \fB\-\-max\-clients\fP، این مقدار ۴۰۹۶ باکت می‌شود. .TP .BI \-\-bcast\-buffers \ n تخصیص \fBn\fP بافر برای دیتاگرام‌های همگانی (پیش‌فرض \fB256\fP). .TP .B \-\-persist\-local\-ip حفظ نشانی IP محلی و شماره درگاه حل‌شده اولیه در بازراه‌اندازی‌های \fBSIGUSR1\fP یا \fB\-\-ping\-restart\fP. .TP .B \-\-persist\-remote\-ip حفظ آخرین نشانی IP دوردست و شماره درگاه احراز هویت شده در بازراه‌اندازی‌های \fBSIGUSR1\fP یا \fB\-\-ping\-restart\fP. .TP .BI \-\-rcvbuf \ size تنظیم اندازه بافر دریافت سوکت TCP/UDP. مقدار پیش‌فرض آن به پیش‌فرض سیستم‌عامل برمی‌گردد. .TP .BI \-\-shaper \ n محدود کردن پهنای باند داده‌های خروجی تونل به \fBn\fP بایت در ثانیه روی درگاه TCP/UDP. توجه داشته باشید که این گزینه فقط در صورتی کار می‌کند که حالت روی \fBp2p\fP تنظیم شده باشد\&. اگر می‌خواهید پهنای باند را در هر دو جهت محدود کنید، از این گزینه در هر دو همتا استفاده کنید. .sp برنامه OpenVPN برای پیاده‌سازی شکل‌دهی ترافیک از الگوریتم زیر استفاده می‌کند: با در نظر گرفتن نرخ شکل‌دهنده به اندازه \fBn\fP بایت در ثانیه، پس از صف‌بندی یک نوشتن دیتاگرام به اندازه \fBb\fP بایت روی درگاه TCP/UDP، حداقل \fB(b / n)\fP ثانیه قبل از صف‌بندی نوشتن بعدی صبر کنید. .sp باید توجه داشت که OpenVPN از چندین تونل بین دو همتای یکسان پشتیبانی می‌کند و به شما امکان می‌دهد تونل‌های سرعت کامل و پهنای باند کاهش‌یافته را هم‌زمان بسازید و داده‌های با اولویت پایین مانند پشتیبان‌گیری‌های خارج از محل را از طریق تونل با پهنای باند کاهش‌یافته و سایر داده‌ها را از طریق تونل سرعت کامل مسیریابی کنید. .sp همچنین توجه داشته باشید که برای تونل‌های با پهنای باند کم (زیر ۱۰۰۰ بایت در ثانیه)، احتمالاً باید از مقادیر کمتر MTU نیز استفاده کنید (به بالا مراجعه کنید)، در غیر این صورت تاخیر بسته‌ها آن‌قدر زیاد می‌شود که باعث اتمام مهلت زمانی در لایه TLS و اتصالات TCP در حال اجرا بر روی تونل خواهد شد. .sp برنامه OpenVPN اجازه می‌دهد \fBn\fP بین ۱۰۰ بایت/ثانیه و ۱۰۰ مگابایت/ثانیه باشد. .TP .BI \-\-sndbuf \ size تنظیم اندازه بافر ارسال سوکت TCP/UDP. مقدار پیش‌فرض آن به پیش‌فرض سیستم‌عامل برمی‌گردد. .TP .BI \-\-tcp\-queue\-limit \ n حداکثر تعداد بسته‌های خروجی صف‌بندی‌شده قبل از TCP (پیش‌فرض \fB64\fP). .sp هنگامی که OpenVPN در حال تونل‌زنی داده‌ها از یک دستگاه TUN/TAP به یک کلاینت دوردست از طریق اتصال TCP است، ممکن است دستگاه TUN/TAP داده‌ها را با سرعتی بیشتر از آنچه اتصال TCP می‌تواند پشتیبانی کند تولید کند. هنگامی که تعداد بسته‌های خروجی صف‌بندی‌شده قبل از ارسال به سوکت TCP برای یک اتصال کلاینت مشخص به این حد برسد، OpenVPN شروع به دور انداختن بسته‌های خروجی هدایت‌شده به این کلاینت می‌کند. .TP .BI \-\-txqueuelen \ n \fI(فقط لینوکس)\fP تنظیم طول صف TX روی رابط TUN/TAP. در حال حاضر مقدار پیش‌فرض آن به پیش‌فرض سیستم‌عامل برمی‌گردد. .TP .B \-\-disable\-dco استفاده فرصت‌طلبانه از برون‌سپاری کانال داده (DCO) را در صورت در دسترس بودن غیرفعال می‌کند. بدون این گزینه، اگر گزینه‌های پیکربندی و هسته در حال اجرا از DCO پشتیبانی کنند، OpenVPN به‌طور فرصت‌طلبانه از حالت DCO استفاده خواهد کرد. .sp برون‌سپاری کانال داده در حال حاضر نیازمند این است که data\-ciphers فقط شامل رمزهای AEAD (یعنی AES\-GCM و Chacha20\-Poly1305) باشد و لینوکس همراه با ماژول ovpn اجرا شود. ماژول ovpn از نسخه ۶.۱۶ در هسته لینوکس ادغام شده است یا به‌صورت backport از \%\& در دسترس است. .sp توجه داشته باشید که هنگام فعال بودن حالت DCO، برخی گزینه‌ها بی‌اثر هستند یا قابل استفاده نیستند. .sp روی پلتفرم‌هایی که از DCO پشتیبانی نمی‌کنند، \fBdisable\-dco\fP اثری ندارد. .UNINDENT .SH "گزینه‌های پشتیبانی‌نشده (UNSUPPORTED OPTIONS)" .sp گزینه‌های فهرست‌شده در این بخش از OpenVPN حذف شده‌اند و دیگر پشتیبانی نمی‌شوند .INDENT 0.0 .TP .B \-\-client\-cert\-not\-required در OpenVPN 2.5 حذف شده است. این گزینه باید با \fB\-\-verify\-client\-cert none\fP جایگزین شود\&. .TP .B \-\-fast\-io از OpenVPN 2.7 نادیده گرفته می‌شود. این گزینه به دلیل تغییرات در حلقه رویداد از کار افتاد. .TP .B \-\-http\-proxy\-retry در OpenVPN 2.4 حذف شده است. تمام تلاش‌های مجدد توسط \fB\-\-max\-connect\-retry\fP کنترل می‌شوند\&. .TP .B \-\-http\-proxy\-timeout در OpenVPN 2.4 حذف شده است. مهلت زمانی اتصال توسط \fB\-\-connect\-timeout\fP کنترل می‌شود\&. .TP .B \-\-ifconfig\-pool\-linear در OpenVPN 2.5 حذف شده است. این گزینه باید با \fB\-\-topology p2p\fP جایگزین شود\&. .TP .B \-\-key\-method در OpenVPN 2.5 حذف شده است. این گزینه نباید استفاده شود، زیرا استفاده از \fBkey\-method\fP قدیمی، امنیت تونل VPN را تضعیف می‌کند. همچنین \fBkey\-method\fP قدیمی تنها زمانی مورد نیاز بود که طرف دوردست قدیمی‌تر از OpenVPN 2.0 بود. .UNINDENT .INDENT 0.0 .TP .B \-\-management\-client\-pf در OpenVPN 2.6 حذف شد. قابلیت درون‌ساخت فیلترسازی بسته‌ها (pf) حذف شده است. .TP .B \-\-max\-routes در OpenVPN 2.4 حذف شد. این محدودیت برداشته شد. .TP .B \-\-ncp\-disable در OpenVPN 2.6 حذف شد. این گزینه بیشتر نقش یک گزینه اشکال‌زدایی را در زمان معرفی اولیه NCP ایفا می‌کرد. دیگر نباید نیازی به آن باشد. .TP .B \-\-no\-iv در OpenVPN 2.5 حذف شد. این گزینه نباید استفاده شود زیرا امنیت تونل VPN را تضعیف می‌کند. این گزینه از OpenVPN 2.4 به عنوان NOOP (بی‌اثر) بوده است. .TP .B \-\-no\-replay در OpenVPN 2.7 حذف شد. این گزینه نباید استفاده شود زیرا امنیت تونل VPN را تضعیف می‌کند. پیش‌تر ادعا شده بود که این گزینه در OpenVPN 2.5 حذف شده است، اما در عمل چنین نبود. .TP .B \-\-prng در OpenVPN 2.6 حذف شد. اکنون همیشه از PRNG کتابخانه SSL استفاده می‌شود. .TP .B \-\-persist\-key از OpenVPN 2.7 نادیده گرفته می‌شود. کلیدها اکنون همیشه پس از راه‌اندازی‌های مجدد حفظ می‌شوند. .TP .B \-\-opt\-verify در OpenVPN 2.7 حذف شد. این گزینه دیگر کاربردی ندارد زیرا ممکن است رشته‌های گزینه‌ها به دلیل معرفی مذاکره پارامترها مطابقت نداشته باشند. .TP .B \-\-socks\-proxy\-retry در OpenVPN 2.4 حذف شد. تمام تلاش‌های مجدد توسط \fB\-\-max\-connect\-retry\fP کنترل می‌شوند\&. .TP .B \-\-windows\-driver در OpenVPN 2.7 حذف شد. OpenVPN همیشه از ovpn\-dco به عنوان درایور پیش‌فرض در Windows استفاده خواهد کرد. در صورت استفاده از گزینه‌های ناسازگار با ovpn\-dco، به tap\-windows6 بازمی‌گردد. .UNINDENT .SH "پروفایل‌های اتصال (CONNECTION PROFILES)" .sp پرونده‌های پیکربندی کلاینت ممکن است شامل چندین سرور راه دور باشند که برای اتصال به آن‌ها تلاش خواهد شد. اما برخی گزینه‌های پیکربندی وجود دارند که به گزینه‌های \fB\-\-remote\fP خاصی مرتبط هستند. برای این موارد استفاده، پروفایل‌های اتصال راهکار هستند. .sp با کپسوله‌سازی گزینه \fB\-\-remote\fP و گزینه‌های مرتبط درون \fB\fP و \fB\fP، این گزینه‌ها به صورت یک گروه مدیریت می‌شوند. .sp یک کلاینت OpenVPN هر پروفایل اتصال را به ترتیب امتحان می‌کند تا به یک اتصال موفق دست یابد. .sp از \fB\-\-remote\-random\fP می‌توان برای \(dqدرهم‌ریزی\(dq اولیه فهرست اتصالات استفاده کرد. .sp در اینجا نمونه‌ای از کاربرد پروفایل اتصال آمده است: .INDENT 0.0 .INDENT 3.5 .sp .EX client dev tun remote 198.19.34.56 1194 udp remote 198.19.34.56 443 tcp remote 198.19.34.56 443 tcp http\-proxy 192.168.0.8 8080 remote 198.19.36.99 443 tcp http\-proxy 192.168.0.8 8080 persist\-tun pkcs12 client.p12 remote\-cert\-tls server verb 3 .EE .UNINDENT .UNINDENT .sp ابتدا تلاش می‌کنیم با استفاده از UDP به سروری در 198.19.34.56:1194 متصل شویم. اگر ناموفق بود، سپس سعی می‌کنیم با TCP به 198.19.34.56:443 متصل شویم. اگر آن هم ناموفق بود، اتصال از طریق یک پراکسی HTTP در 192.168.0.8:8080 به 198.19.34.56:443 با استفاده از TCP امتحان می‌شود. در نهایت، تلاش برای اتصال از طریق همان پراکسی به سروری در 198.19.36.99:443 با استفاده از TCP انجام می‌گیرد. .sp گزینه‌های زیر از OpenVPN را می‌توان درون یک بلوک \fB\fP استفاده کرد: .sp \fBbind\fP، \fBconnect\-retry\fP، \fBconnect\-retry\-max\fP، \fBconnect\-timeout\fP، \fBexplicit\-exit\-notify\fP، \fBfloat\fP، \fBfragment\fP، \fBhttp\-proxy\fP، \fBhttp\-proxy\-option\fP، \fBkey\-direction\fP، \fBlink\-mtu\fP، \fBlocal\fP، \fBlport\fP، \fBmssfix\fP، \fBmtu\-disc\fP، \fBnobind\fP، \fBport\fP، \fBproto\fP، \fBremote\fP، \fBrport\fP، \fBsocks\-proxy\fP، \fBtls\-auth\fP، \fBtls\-crypt\fP، \fBtls\-crypt\-v2\fP، \fBtun\-mtu\fP و \fBtun\-mtu\-extra\fP\&. .sp یک سازوکار پیش‌فرض‌گذاری برای تعیین گزینه‌هایی که باید روی تمام پروفایل‌های \fB\fP اعمال شوند وجود دارد. اگر هر یک از گزینه‌های بالا (به استثنای \fBremote\fP) خارج از یک بلوک \fB\fP، اما در پرونده پیکربندی‌ای قرار گیرند که دارای یک یا چند بلوک \fB\fP است، تنظیمات آن گزینه به عنوان پیش‌فرض برای بلوک‌های \fB\fP که پس از آن در پرونده پیکربندی می‌آیند، استفاده خواهد شد. .sp برای نمونه، فرض کنید گزینه \fBnobind\fP در پرونده پیکربندی نمونه بالا، نزدیک بالای پرونده، قبل از اولین بلوک \fB\fP قرار داده شود. نتیجه به این صورت خواهد بود که گویی \fBnobind\fP در تمام بلوک‌های \fB\fP پس از آن اعلان شده است. .SH "پشتیبانی از پرونده‌های درون‌خطی (INLINE FILE SUPPORT)" .sp نرم‌افزار OpenVPN امکان گنجاندن پرونده‌ها را در پیکربندی اصلی برای گزینه‌های \fB\-\-ca\fP، \fB\-\-cert\fP، \fB\-\-dh\fP، \fB\-\-extra\-certs\fP، \fB\-\-key\fP، \fB\-\-pkcs12\fP، \fB\-\-crl\-verify\fP، \fB\-\-http\-proxy\-user\-pass\fP، \fB\-\-tls\-auth\fP، \fB\-\-auth\-gen\-token\-secret\fP، \fB\-\-peer\-fingerprint\fP، \fB\-\-tls\-crypt\fP، \fB\-\-tls\-crypt\-v2\fP، \fB\-\-verify\-hash\fP و \fB\-\-auth\-user\-pass\fP فراهم می‌کند. .sp هر پرونده درون‌خطی با خط \fB\fP پایان می‌یابد. .sp در اینجا نمونه‌ای از کاربرد پرونده درون‌خطی آورده شده است: .INDENT 0.0 .INDENT 3.5 .sp .EX \-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- [...] \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .EE .UNINDENT .UNINDENT .sp هنگام استفاده از قابلیت پرونده درون‌خطی با گزینه \fB\-\-pkcs12\fP، پرونده درون‌خطی باید با base64 کدگذاری شده باشد. کدگذاری یک پرونده .p12 به base64 می‌تواند برای نمونه با OpenSSL از طریق اجرای فرمان \fBopenssl base64 \-in input.p12\fP انجام شود. .SH "سیگنال‌ها (SIGNALS)" .INDENT 0.0 .TP .B \fBSIGHUP\fP باعث می‌شود OpenVPN تمام اتصالات TUN/TAP و شبکه را ببندد، دوباره راه‌اندازی شود، پرونده پیکربندی (در صورت وجود) را مجدداً بخواند، و اتصالات TUN/TAP و شبکه را دوباره باز کند. .TP .B \fBSIGUSR1\fP مانند \fBSIGHUP\fP عمل می‌کند، به جز اینکه پرونده پیکربندی را دوباره نمی‌خواند، و احتمالاً بر اساس گزینه‌های \fB\-\-persist\-tun\fP، \fB\-\-persist\-local\-ip\fP و \fB\-\-persist\-remote\-ip\fP (به بالا مراجعه کنید)، به ترتیب دستگاه TUN/TAP را نمی‌بندد و باز نمی‌کند، پرونده‌های کلید را دوباره نمی‌خواند، نشانی IP/درگاه محلی را حفظ می‌کند، یا نشانی IP/درگاه دوردستِ اخیراً احراز هویت شده را نگه می‌دارد. .sp این سیگنال همچنین می‌تواند به صورت داخلی توسط یک وضعیت انقضای زمان (timeout) که توسط گزینه \fB\-\-ping\-restart\fP کنترل می‌شود، ایجاد شود. .sp این سیگنال هنگام ترکیب با \fB\-\-persist\-remote\-ip\fP، ممکن است زمانی ارسال شود که پارامترهای زیرین رابط شبکه میزبان تغییر کنند؛ مانند زمانی که میزبان یک کلاینت DHCP است و یک نشانی IP جدید دریافت می‌کند. برای اطلاعات بیشتر \fB\-\-ipchange\fP را ببینید. .TP .B \fBSIGUSR2\fP باعث می‌شود OpenVPN آمار فعلی خود را نمایش دهد (در صورت استفاده از \fB\-\-daemon\fP در پرونده syslog، و در غیر این صورت در stdout). .TP .B \fBSIGINT\fP, \fBSIGTERM\fP باعث خروج تمیز (gracefully) OpenVPN می‌شود. .UNINDENT .SH "پرسش‌های متداول (FAQ)" .sp \% .SH "راهنما (HOWTO)" .sp صفحه راهنمای \fBopenvpn\-examples\fP(5) نمونه‌هایی را به‌ویژه برای راه‌اندازی‌های کوچک ارائه می‌دهد. .sp برای یک راهنمای جامع‌تر جهت راه‌اندازی OpenVPN در یک محیط عملیاتی، راهنمای HOWTO اوپن‌وی‌پی‌ان را در نشانی زیر ببینید: \% .SH "پروتکل (PROTOCOL)" .sp تلاشی مداوم برای مستندسازی پروتکل OpenVPN را می‌توان در نشانی زیر یافت: \% .SH "وب (WEB)" .sp وب‌سایت OpenVPN در \% قرار دارد. .sp برای بارگیری آخرین نسخه OpenVPN، عضویت در فهرست‌های پستی، خواندن آرشیو فهرست‌های پستی، یا مرور مخزن Git به اینجا مراجعه کنید. .SH "اشکالات (BUGS)" .sp همه اشکالات را به تیم OpenVPN گزارش دهید: \% .SH "همچنین ببینید (SEE ALSO)" .sp \fBopenvpn\-examples\fP(5), \fBdhcpcd\fP(8), \fBifconfig\fP(8), \fBopenssl\fP(1), \fBroute\fP(8), \fBscp\fP(1) \fBssh\fP(1) .SH "نکات (NOTES)" .sp این محصول شامل نرم‌افزاری است که توسط پروژه OpenSSL توسعه یافته است (\%) .sp برای اطلاعات بیشتر درباره پروتکل TLS ببینید: \% .sp برای اطلاعات بیشتر درباره کتابخانه فشرده‌سازی بی‌درنگ LZO ببینید: \% .SH "حق نشر (COPYRIGHT)" .sp حق نشر (C) ۲۰۰۲\-۲۰۲۵ OpenVPN Inc. این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU GPL) نسخه ۲ که توسط بنیاد نرم‌افزارهای آزاد منتشر شده، بازتوزیع کنید و/یا تغییر دهید. .SH "نویسندگان (AUTHORS)" .sp James Yonan \% .\" End of generated man page.