.TH WG 8 "2015 August 13" ZX2C4 "WireGuard" .SH "نام (NAME)" wg \- تنظیم و بازیابی پیکربندی رابط‌های WireGuard .SH "خلاصه دستور (SYNOPSIS)" .B wg [ .I COMMAND ] [ .I OPTIONS ]... [ .I ARGS ]... .SH "توضیحات (DESCRIPTION)" ابزار .B wg برنامهٔ پیکربندی برای دریافت و تنظیم پیکربندی رابط‌های تونل WireGuard است. خود رابط‌ها را می‌توان با استفاده از .BR ip-link (8) اضافه و حذف کرد، و آدرس‌های IP و جدول‌های مسیریابی آن‌ها را می‌توان با استفاده از .BR ip-address (8) و .BR ip-route (8) تنظیم نمود. ابزار .B wg مجموعه‌ای از زیردستورها را برای تغییر جنبه‌های اختصاصی رابط‌های WireGuard فراهم می‌کند. اگر هیچ دستور مشخصی داده نشود، به طور پیش‌فرض از .BR show استفاده می‌شود. به زیردستورهایی که آرگومان INTERFACE می‌گیرند، باید یک رابط WireGuard داده شود. .SH "دستورات (COMMANDS)" .TP \fBshow\fP { \fI\fP | \fIall\fP | \fIinterfaces\fP } [\fIpublic-key\fP | \fIprivate-key\fP | \fIlisten-port\fP | \fIfwmark\fP | \fIpeers\fP | \fIpreshared-keys\fP | \fIendpoints\fP | \fIallowed-ips\fP | \fIlatest-handshakes\fP | \fIpersistent-keepalive\fP | \fItransfer\fP | \fIdump\fP] پیکربندی جاری WireGuard و اطلاعات زمان اجرای رابط مشخص‌شدهٔ \fI\fP را نمایش می‌دهد. اگر هیچ \fI\fP مشخص نشود، مقدار پیش‌فرض آن \fIall\fP خواهد بود. اگر \fIinterfaces\fP مشخص شود، فهرستی از تمامی رابط‌های WireGuard را خط‌به‌خط چاپ کرده و خارج می‌شود. اگر پس از مشخص کردن رابط هیچ گزینه‌ای داده نشود، فهرستی از تمام مشخصه‌ها را به شکلی خوانا و مناسب ترمینال چاپ می‌کند. در غیر این صورت، اطلاعات خواسته‌شده را تفکیک‌شده با خط جدید و تب چاپ می‌کند که برای استفاده در اسکریپت‌ها مناسب است. برای این حالت نمایش اسکریپتی، اگر \fIall\fP مشخص شده باشد، فیلد نخست برای تمام دسته‌بندی‌های اطلاعات نام رابط خواهد بود. اگر \fPdump\fP مشخص شود، چندین خط چاپ می‌شود؛ خط نخست به ترتیب و با جداکننده تب شامل: private-key، public-key، listen-port و fwmark است. خطوط بعدی برای هر یک از همتایان (peers) چاپ می‌شوند و به ترتیب با تب شامل: public-key، preshared-key، endpoint، allowed-ips، latest-handshake، transfer-rx، transfer-tx و persistent-keepalive خواهند بود. .TP \fBshowconf\fP \fI\fP پیکربندی جاری \fI\fP را در قالبی که در بخش \fIقالب فایل پیکربندی (CONFIGURATION FILE FORMAT)\fP در ادامه توضیح داده شده است، نمایش می‌دهد. .TP \fBset\fP \fI\fP [\fIlisten-port\fP \fI\fP] [\fIfwmark\fP \fI\fP] [\fIprivate-key\fP \fI\fP] [\fIpeer\fP \fI\fP [\fIremove\fP] [\fIpreshared-key\fP \fI\fP] [\fIendpoint\fP \fI:\fP] [\fIpersistent-keepalive\fP \fI\fP] [\fIallowed-ips\fP \fI[+|-]/\fP[,\fI[+|-]/\fP]...] ]... مقادیر پیکربندی را برای \fI\fP مشخص‌شده تنظیم می‌کند. می‌توان چندین \fIpeer\fP تعیین کرد، و اگر آرگومان \fIremove\fP برای یک همتا داده شود، آن همتا حذف می‌شود نه پیکربندی. اگر \fIlisten-port\fP مشخص نشود یا برابر با 0 قرار گیرد، هنگام بالا آمدن رابط یک درگاه به طور تصادفی انتخاب خواهد شد. هر دو مقدار \fIprivate-key\fP و \fIpreshared-key\fP باید فایل باشند، چرا که آرگومان‌های خط فرمان در بیشتر سیستم‌ها امن و محرمانه تلقی نمی‌شوند؛ اما اگر از .BR bash (1) استفاده می‌کنید، می‌توانید با تعیین عبارت: <(echo PRIVATEKEYSTRING) به عنوان \fIprivate-key\fP یا \fIpreshared-key\fP، یک رشته را به شکل امن ارسال کنید. اگر \fI/dev/null\fP یا فایل خالی دیگری به عنوان نام فایل برای \fIprivate-key\fP یا \fIpreshared-key\fP مشخص شود، کلید از دستگاه حذف می‌گردد. استفاده از \fIpreshared-key\fP اختیاری است و می‌توان از آن صرف‌نظر کرد؛ این گزینه یک لایه اضافی از رمزنگاری کلید متقارن را برای ترکیب با رمزنگاری کلید عمومی موجود اضافه می‌کند تا مقاومت پساکوانتومی فراهم شود. اگر \fIallowed-ips\fP مشخص شود اما مقدار آن یک رشته خالی باشد، تمام IPهای مجاز از همتا حذف می‌شوند. به طور پیش‌فرض، \fIallowed-ips\fP جایگزین IPهای مجاز قبلی همتا می‌شود. اگر قبل از هر یک از IPها کاراکتر + یا - قرار گیرد، به‌روزرسانی به صورت افزایشی خواهد بود؛ IPهایی با پیشوند '+' به IPهای مجاز همتا اضافه می‌شوند (در صورتی که موجود نباشند) و IPهایی با پیشوند '-' حذف می‌گردند (در صورتی که وجود داشته باشند). استفاده از \fIpersistent-keepalive\fP اختیاری است و به طور پیش‌فرض غیرفعال است؛ تنظیم آن روی 0 یا "off" آن را غیرفعال می‌کند. در غیر این صورت، این مقدار نشان‌دهندهٔ فاصله‌ای بر حسب ثانیه (بین ۱ تا ۶۵۵۳۵) است که در آن بازه، بسته‌های خالی احرازهویت‌شده برای همتا ارسال می‌شود تا نگاشت NAT یا فایروال با حفظ وضعیت (stateful) به طور مداوم معتبر باقی بماند. برای مثال، اگر رابط به ندرت ترافیک ارسال می‌کند اما ممکن است هر لحظه ترافیکی از همتا دریافت کند و پشت NAT قرار دارد، تنظیم بازه persistent keepalive روی ۲۵ ثانیه برای آن مفید خواهد بود؛ با این حال، بیشتر کاربران به این گزینه نیازی نخواهند داشت. استفاده از \fIfwmark\fP اختیاری است و به طور پیش‌فرض خاموش است؛ تنظیم آن روی 0 یا "off" آن را غیرفعال می‌کند. در غیر این صورت، این مقدار یک علامت فایروال ۳۲ بیتی برای بسته‌های خروجی است و می‌توان آن را با پیشوند "0x" به صورت هگزادسیمال مشخص کرد. .TP \fBsetconf\fP \fI\fP \fI\fP پیکربندی جاری \fI\fP را برابر با محتوای \fI\fP قرار می‌دهد، که باید در قالبی باشد که در بخش \fIقالب فایل پیکربندی (CONFIGURATION FILE FORMAT)\fP در ادامه توضیح داده شده است. .TP \fBaddconf\fP \fI\fP \fI\fP محتوای \fI\fP را (که باید در قالبی باشد که در بخش \fIقالب فایل پیکربندی (CONFIGURATION FILE FORMAT)\fP در ادامه شرح داده شده است) به پیکربندی جاری \fI\fP الحاق می‌کند. .TP \fBsyncconf\fP \fI\fP \fI\fP مانند \fBsetconf\fP است، اما ابتدا پیکربندی موجود را بازخوانی کرده و تنها تغییراتی را اعمال می‌کند که صریحاً بین فایل پیکربندی و رابط تفاوت داشته باشند. این کار بسیار کم‌بازده‌تر از \fBsetconf\fP است، اما این مزیت را دارد که نشست‌های جاری همتایان را مختل نمی‌کند. محتوای \fI\fP باید در قالبی باشد که در بخش \fIقالب فایل پیکربندی (CONFIGURATION FILE FORMAT)\fP در ادامه شرح داده شده است. .TP \fBgenkey\fP یک کلید \fIخصوصی\fP تصادفی در قالب بیس۶۴ (base64) تولید کرده و آن را در خروجی استاندارد چاپ می‌کند. .TP \fBgenpsk\fP یک کلید \fIپیش‌اشتراکی\fP تصادفی در قالب بیس۶۴ تولید کرده و آن را در خروجی استاندارد چاپ می‌کند. .TP \fBpubkey\fP یک کلید \fIعمومی\fP را از کلید \fIخصوصی\fP متناظر (تولیدشده با \fIgenkey\fP) که به صورت بیس۶۴ در ورودی استاندارد داده شده محاسبه کرده و آن را به صورت بیس۶۴ در خروجی استاندارد چاپ می‌کند. می‌توان یک کلید خصوصی و کلید عمومی متناظر آن را به طور هم‌زمان با اجرای دستور زیر تولید کرد: .br $ umask 077 .br $ wg genkey | tee private.key | wg pubkey > public.key .TP \fBhelp\fP پیام راهنمای نحوهٔ استفاده را نمایش می‌دهد. .SH "قالب فایل پیکربندی (CONFIGURATION FILE FORMAT)" قالب فایل پیکربندی بر پایهٔ \fIINI\fP است. دو بخش سطح بالا وجود دارد: \fIInterface\fP و \fIPeer\fP. می‌توان چندین بخش \fIPeer\fP تعیین کرد، اما تنها یک بخش \fIInterface\fP مجاز است. .P بخش \fIInterface\fP می‌تواند شامل فیلدهای زیر باشد: .IP \(bu PrivateKey \(em یک کلید خصوصی در قالب بیس۶۴ که با \fIwg genkey\fP تولید شده است. اجباری. .IP \(bu ListenPort \(em یک درگاه ۱۶ بیتی برای شنود. اختیاری؛ اگر مشخص نشود، به صورت تصادفی انتخاب می‌شود. .IP \(bu FwMark \(em یک مقدار ۳۲ بیتی علامت فایروال (fwmark) برای بسته‌های خروجی. اگر روی 0 یا "off" تنظیم شود، این گزینه غیرفعال است. می‌تواند با پیشوند "0x" به صورت هگزادسیمال مشخص شود. اختیاری. .P بخش‌های \fIPeer\fP می‌توانند شامل فیلدهای زیر باشند: .IP \(bu PublicKey \(em یک کلید عمومی در قالب بیس۶۴ که توسط \fIwg pubkey\fP از روی کلید خصوصی محاسبه شده و معمولاً خارج از کانال اصلی (out of band) به ایجادکنندهٔ فایل پیکربندی تحویل داده می‌شود. اجباری. .IP \(bu PresharedKey \(em یک کلید پیش‌اشتراکی در قالب بیس۶۴ که با \fIwg genpsk\fP تولید شده است. اختیاری است و می‌توان از آن صرف‌نظر کرد. این گزینه یک لایهٔ اضافی از رمزنگاری کلید متقارن را به رمزنگاری کلید عمومی موجود اضافه می‌کند تا مقاومت پساکوانتومی فراهم شود. .IP \(bu AllowedIPs \(em فهرستی جداشده با کاما از آدرس‌های IP (نسخه ۴ یا ۶) به همراه ماسک‌های CIDR، که ترافیک ورودی از این آدرس‌ها برای این همتا مجاز بوده و ترافیک خروجی برای این همتا به سمت آن‌ها هدایت می‌شود. مقدار همه‌گیر \fI0.0.0.0/0\fP می‌تواند برای تطابق با تمام آدرس‌های IPv4، و \fI::/0\fP برای تطابق با تمام آدرس‌های IPv6 مشخص شود. این گزینه می‌تواند چندین بار مشخص گردد. .IP \(bu Endpoint \(em آدرس IP یا نام میزبان نقطه پایانی، به همراه دونقطه و سپس شماره درگاه. این نقطه پایانی به طور خودکار به جدیدترین آدرس IP مبدأ و درگاه بسته‌های به درستی احرازهویت‌شده از سمت همتا به‌روزرسانی می‌شود. اختیاری. .IP \(bu PersistentKeepalive \(em بازه‌ای بر حسب ثانیه (بین ۱ تا ۶۵۵۳۵) که مشخص می‌کند چند وقت یک‌بار یک بسته خالی احرازهویت‌شده به همتا ارسال شود تا نگاشت فایروال با حفظ وضعیت یا NAT به طور مداوم معتبر بماند. برای مثال، اگر رابط به ندرت ترافیک ارسال می‌کند اما ممکن است در هر لحظه ترافیکی از همتا دریافت کند و پشت NAT قرار دارد، تنظیم بازه ۲۵ ثانیه‌ای persistent keepalive برای آن مفید خواهد بود. در صورت تنظیم روی 0 یا "off"، این گزینه غیرفعال می‌شود. به طور پیش‌فرض یا در صورت عدم تعیین، این گزینه غیرفعال است. بیشتر کاربران به این گزینه نیازی نخواهند داشت. اختیاری. .SH "نمونه قالب فایل پیکربندی (CONFIGURATION FILE FORMAT EXAMPLE)" این مثال می‌تواند به عنوان الگویی برای نگارش فایل‌های پیکربندی با پیروی از ساختار شبیه INI استفاده شود. نویسه‌های پس از '#' (شامل خود آن) به عنوان توضیح (comment) در نظر گرفته شده و نادیده گرفته می‌شوند. [Interface] .br PrivateKey = yAnz5TF+lXXJte14tji3zlMNq+hd2rYUIgJBgB3fBmk= .br ListenPort = 51820 .br .br [Peer] .br PublicKey = xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg= .br Endpoint = 192.95.5.67:1234 .br AllowedIPs = 10.192.122.3/32, 10.192.124.1/24 .br .br [Peer] .br PublicKey = TrMvSoP4jYQlY6RIzBgbssQqY3vxI2Pi+y71lOWWXX0= .br Endpoint = [2607:5300:60:6b0::c05f:543]:2468 .br AllowedIPs = 10.192.122.4/32, 192.168.0.0/16 .br .br [Peer] .br PublicKey = gN65BkIKy1eCE9pP1wdc8ROUtkHLF2PfAqYdyYBz6EA= .br Endpoint = test.wireguard.com:18981 .br AllowedIPs = 10.10.10.230/32 .SH "اطلاعات اشکال‌زدایی (DEBUGGING INFORMATION)" گاهی داشتن اطلاعات درباره وضعیت زمان اجرای یک تونل مفید است. هنگام استفاده از ماژول هسته لینوکس روی هسته‌ای که از اشکال‌زدایی پویا (dynamic debugging) پشتیبانی می‌کند، می‌توان اطلاعات اشکال‌زدایی را با اجرای دستور زیر با دسترسی کاربر ریشه در .BR dmesg (1) ثبت کرد: \fB # modprobe wireguard && echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control\fP در OpenBSD و FreeBSD، اطلاعات اشکال‌زدایی را می‌توان برای هر رابط به صورت جداگانه با استفاده از .BR ifconfig (1) در .BR dmesg (1) ثبت نمود: \fB # ifconfig wg0 debug در پیاده‌سازی‌های فضای کاربری (userspace)، معمولاً متغیر محیطی \fILOG_LEVEL\fP روی \fIverbose\fP تنظیم می‌شود. .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" .TP .I WG_COLOR_MODE اگر روی \fIalways\fP تنظیم شود، خروجی همیشه با رنگ‌های ANSI چاپ می‌شود. اگر روی \fInever\fP تنظیم شود، خروجی رنگی ANSI هرگز چاپ نخواهد شد. اگر روی \fIauto\fP یا یک مقدار نامعتبر تنظیم شود یا تنظیم نشده باشد، خروجی رنگی ANSI تنها در زمان ارسال به TTY چاپ خواهد شد. .TP .I WG_HIDE_KEYS اگر روی \fInever\fP تنظیم شود، زیردستور خوانای \fBshow\fP کلیدهای خصوصی و پیش‌اشتراکی را در خروجی نمایش می‌دهد. اگر روی \fIalways\fP یا یک مقدار نامعتبر تنظیم شود یا تنظیم نشده باشد، کلیدهای خصوصی و پیش‌اشتراکی به صورت "(hidden)" چاپ خواهند شد. .TP .I WG_ENDPOINT_RESOLUTION_RETRIES اگر روی یک عدد صحیح یا \fIinfinity\fP تنظیم شود، تحلیل DNS برای نقطه پایانی هر همتا در خطاهای موقت تا آن تعداد دفعات با افزایش تاخیر بین تلاش‌ها مجدداً امتحان خواهد شد. در صورت عدم تنظیم، مقدار پیش‌فرض ۱۵ بار تلاش مجدد است. .SH "همچنین ببینید (SEE ALSO)" .BR wg-quick (8), .BR ip (8), .BR ip-link (8), .BR ip-address (8), .BR ip-route (8). .SH "نویسنده (AUTHOR)" .B wg توسط .MT Jason@zx2c4.com Jason A. Donenfeld .ME نوشته شده است. برای دریافت به‌روزرسانی‌ها و اطلاعات بیشتر، صفحهٔ پروژه در وب در دسترس است: .UR https://\:www.wireguard.com وب جهانی (World Wide Web) .UE .