| turnutils_uclient(1) | دستورات کاربر | turnutils_uclient(1) |
نام (NAME)
turnutils_uclient - شبیهساز چندین کلاینت UDP، TCP، TLS یا DTLS برای اهداف آزمایشی
اطلاعات عمومی (GENERAL INFORMATION)
مجموعهای از برنامههای turnutils_* عملکردهای کمکی و سودمندی را برای آزمایش و راهاندازی سرور TURN فراهم میکنند.
- 1.
- turnutils_uclient: چندین کلاینت UDP، TCP، TLS یا DTLS را شبیهسازی میکند. (این برنامه فقط برای اهداف آزمایشی ارائه شده است!) تصویر باینری کامپایلشده این برنامه در زیرشاخه bin/ قرار دارد.
- 2.
- turnutils_peer: یک سرور پژواک (echo) ساده بدون وضعیت و فقط UDP، که به عنوان سرور نهایی در الگوی رله ("همتا" یا "peer") استفاده میشود. برای هر بسته ورودی UDP، آن را بازتاب میدهد. (این برنامه فقط برای اهداف آزمایشی ارائه شده است!) هنگامی که کلاینتهای آزمایشی به صورت کلاینت-به-کلاینت ارتباط برقرار میکنند (زمانی که برنامه "turnutils_uclient" با گزینه "-y" استفاده میشود)، نیازی به turnutils_peer نیست.
تصویر باینری کامپایلشده این برنامه در زیرشاخه bin/ قرار دارد.
- 3.
- turnutils_stunclient: یک نمونه کلاینت ساده STUN. تصویر باینری کامپایلشده این برنامه در زیرشاخه bin/ قرار دارد.
- 4.
- turnutils_rfc5769check: ابزاری که صحت پیادهسازی پروتکل STUN/TURN را بررسی میکند. این ابزار فقط برای فرآیند بررسی حین کامپایل استفاده میشود و به مقصد نصب نهایی کپی نمیگردد.
در زیرشاخه "examples/scripts" نمونههایی از خط فرمانهای مورد استفاده برای اجرای این برنامهها را خواهید یافت. اسکریپتها برای اجرا از زیرشاخه examples/ طراحی شدهاند، به عنوان مثال:
$ cd examples
$ ./scripts/secure_relay.sh
- 5.
- turnutils_natdiscovery: ابزاری که رفتار NAT را بر اساس RFC5780 کشف میکند. این ابزار رفتار واقعی نگاشت و فیلتر کردن NAT و موارد دیگر را کشف میکند. توجه داشته باشید که در سمت سرور TURN باید دو آدرس IP شنود مختلف پیکربندی شود تا به درستی کار کند!
- 6.
- turnutils_oauth: ابزاری که تولید access_token پروتکل OAuth (رمزنگاری AEAD)، اعتبارسنجی و رمزگشایی آن را فراهم میسازد. این ابزار تمام کلیدها و طولعمرها و هرگونه اطلاعات مرتبط لازم برای ایجاد و اعتبارسنجی access_token را به عنوان ورودی دریافت میکند. خروجی آن یک JSON شامل تمام پارامترهای OAuth PoP است که باید به کلاینت منتقل شوند. خروجی طبق ضمیمه B، شکل 8 در RFC7635 تولید میشود.
برای جزئیات بیشتر و ساختار access_token، سند rfc7635 را مطالعه کرده و اسکریپت examples/scripts/oauth.sh را مشاهده نمایید.
=====================================
خلاصه دستور (SYNOPSIS)
$ turnutils_uclient [-tTSvsyhcxg] [گزینهها] <TURN-Server-IP-address>
توضیحات (DESCRIPTION)
این ابزار برای شبیهسازی چندین کلاینت طراحی شده است. از رابط برنامهنویسی ورودی/خروجی ناهمگام در libevent برای مدیریت چندین کلاینت بهره میبرد. کلاینت به رله متصل میشود، در مورد نشست مذاکره میکند، و تعداد مشخصی پیام را به سرور (رله) ارسال مینماید، در حالی که انتظار دریافت همان تعداد پاسخ را دارد. طول پیامها و تعداد پیامهای ارسالی قابل تنظیم است. پیام یک جریان بایت دلخواه است.
فلگها:
- -t
- استفاده از TCP برای ارتباط میان کلاینت و سرور TURN (پیشفرض UDP است).
- -b
- استفاده از SCTP برای ارتباط میان کلاینت و سرور TURN (پیشفرض UDP است).
- -T
- استفاده از TCP برای انتقال رله (پیشفرض UDP است). متضمن گزینههای -t، -y، -c است و فلگها و گزینههای -s، -e، -r و -g را نادیده میگیرد. میتواند همراه با -b استفاده شود.
- -P
- استفاده از TCP غیرفعال (RFC6062 با همتای فعال). متضمن -T است.
- -S
- اتصال امن SSL: استفاده از SSL/TLS برای TCP، استفاده از DTLS برای UDP، و TLS/SCTP برای SCTP.
- -U
- اتصال امن رمزگذارینشده (مجموعه eNULL): استفاده از SSL/TLS برای TCP، و DTLS برای UDP.
- -v
- حالت پرگو (Verbose).
- -s
- استفاده از روش "Send" در TURN؛ به طور پیشفرض، از کانالهای TURN استفاده میکند.
- -y
- استفاده از اتصالات کلاینت-به-کلاینت: یک جفت کانال RTP/RTCP به یک جفت کانال RTP/RTCP دیگر.
- -h
- معلق ماندن نامحدود پس از ارسال آخرین بسته.
- -c
- عدم ایجاد اتصالات rtcp.
- -x
- درخواست آدرس رله IPv6 (طبق RFC6156).
- -X
- درخواست صریح آدرس رله IPv4.
- -g
- تنظیم پارامتر DONT_FRAGMENT در درخواستهای TURN.
- -D
- انجام پدینگ اجباری کانال حتی برای UDP (مانند pjnath).
- -N
- انجام آزمونهای منفی (فقط برخی حالتهای محدود).
- -R
- انجام آزمونهای پروتکل منفی.
- -O
- حالت حمله منع خدمت (DOS attack).
- -M
- استفاده از قابلیت تحرک TURN ICE Mobility.
- -I
- عدم تنظیم مجوزها بر روی نقاط پایانی رله TURN (جهت آزمایش قابلیتهای غیراستاندارد رله سرور).
- -G
- تولید درخواستهای اضافی (ایجاد مجوزها، اتصال کانال).
- -B
- قطع تصادفی ارتباط پس از ارسال چند بسته اولیه.
- -Z
- تخصیص دوگانه (SSODA). متضمن گزینه -c است.
- -J
- استفاده از oAuth با کلیدهای آزمایشی پیشفرض kid='north'، 'union' یا 'oldempire'.
- -Y
- حالت مولد بار (Load-generator mode): حالت packet دادهها را از طریق یک تخصیص واحد TURN با بیشترین سرعت ممکن سیلآسا ارسال میکند،
- --no-even-port
- هرگز ویژگی EVEN-PORT را به درخواستهای ALLOCATE ضمیمه نکن. مسیر پیشفرض clnet_allocate حتی تحت گزینه -c نیز به طور تصادفی 0 یا -1 را انتخاب میکند،
- --listener-threads <N>
- تعداد ریسههای دریافت (شنونده) در تولیدکننده بار (همچنین به صورت -K N در دسترس است). پیشفرض خودکار: 0 برای -m < 4، و ارتقا به 1
- --sender-threads <N>
- تعداد ریسههای ارسال (مبتنی بر تایمر) در تولیدکننده بار. پیشفرض خودکار: 0 برای -m < 4، و ارتقا به 2 زمانی که -m >= 4 باشد. مقدار 0
- -d
- دستگاه رابط شبکه محلی (اختیاری، فقط لینوکس).
- -L
- آدرس IP محلی (اختیاری).
- -m
- تعداد کلاینتها (پیشفرض: ۱، ۲ یا ۴، بسته به گزینهها).
- -e
- آدرس همتا (Peer).
- -r
- پورت همتا (پیشفرض: ۳۴۸۰).
- -z
- فاصله بسته در هر نشست بر حسب میلیثانیه (پیشفرض: ۲۰). در حالتهای مولد بار packet و invalid مقدار پیشفرض 0 میلیثانیه است.
- -C
- این نماد (نویسه) جداکننده برچسب زمان/نام کاربری در TURN REST API است. مقدار پیشفرض : است.
- -F
- مجموعه رمزها (Cipher suite) برای TLS/DTLS. مقدار پیشفرض DEFAULT است.
- -o
- مقدار ویژگی ORIGIN در پروتکل STUN.
- -a
- پهنای باند برای درخواست پهنای باند در پیام ALLOCATE. مقدار پیشفرض صفر است.
نکات حالت مولد بار (load-generator mode):
- حالت packet همچنان تخصیص و راهاندازی معمولی TURN را انجام میدهد و سپس بلافاصله بدون ایجاد تأخیر شروع به ارسال میکند.
- حالت alloc نیازی به -e ندارد؛ این حالت مکرراً تخصیصهای جدید ایجاد کرده و دوباره آنها را میبندد.
- حالت alloc نیازی به -e ندارد؛ این حالت مکرراً تخصیصهای جدید ایجاد میکند، از یک پورت محلی کلاینت یکتا برای هرکدام بهره میگیرد، هریک را به یک جفت ip:port مصنوعی همتا متصل میسازد و دوباره آنها را میبندد.
- حالت invalid نیازی به -e ندارد؛ به طور پیشفرض از بار داده ۱۶ بایتی استفاده میکند مگر اینکه -l مشخص شود.
نمونهها را در دایرکتوری "examples/scripts" مشاهده کنید.
======================================
نام (NAME) - turnutils_peer
turnutils_peer - سرور پشتیبان اکو ساده و فقط UDP.
خلاصه دستور (SYNOPSIS)
$ turnutils_peer [-v] [گزینهها]
توضیحات (DESCRIPTION)
این برنامه فقط برای مقاصد آزمایشی، به عنوان همتا برای برنامه turnutils_uclient استفاده میشود.
گزینهها با مقادیر اجباری:
========================================
نام (NAME) - turnutils_stunclient
turnutils_stunclient - یک کلاینت پایهای STUN.
خلاصه دستور (SYNOPSIS)
$ turnutils_stunclient [گزینهها] <نشانی-IP-سرور-STUN>
توضیحات (DESCRIPTION)
یک درخواست "جدید" STUN طبق RFC 5389 (از طریق UDP) ارسال کرده و اطلاعات پاسخ را نشان میدهد.
گزینهها با مقادیر اجباری:
- -p
- پورت سرور STUN (پیشفرض: ۳۴۷۸).
- -L
- آدرس محلی مورد استفاده (اختیاری).
- -f
- اجبار به پردازش RFC 5780.
- -c
- ارسال مداوم درخواستهای binding پروتکل STUN و گزارش تأخیر رفتوبرگشت تا زمان توقف دستی.
- -i
- فاصله بین درخواستهای مداوم بر حسب میلیثانیه (پیشفرض: ۱۰۰۰).
- -t
- مهلت زمانی پاسخ بر حسب میلیثانیه (پیشفرض: ۳۰۰۰).
برنامه turnutils_stunclient نتایج نخستین درخواست را بررسی میکند، و اگر دریابد که سرور STUN از RFC 5780 پشتیبانی میکند (پاسخ اتصال آن را آشکار میسازد)، چند درخواست دیگر با پارامترهای مختلف ارسال میکند تا قابلیتهای کشف NAT را به نمایش بگذارد.
حالت پیوسته، هر پاسخ یا انقضای مهلت را گزارش میدهد و هنگام توقف با Ctrl-C، درصد از دست رفتن بستهها و حداقل/میانگین/حداکثر تأخیر رفتوبرگشت را چاپ میکند.
این ابزار از پروتکل "قدیمی" و "کلاسیک" STUN (طبق RFC 3489) پشتیبانی نمیکند.
=====================================
نام (NAME) - turnutils_rfc5769check
turnutils_rfc5769check - ابزاری برای آزمون صحت پیادهسازی پروتکل STUN.
خلاصه دستور (SYNOPSIS)
$ turnutils_rfc5769check
توضیحات (DESCRIPTION)
ابزار turnutils_rfc5769check صحت پیادهسازی پروتکل STUN را در برابر بردارهای آزمایشی پیشتعریفشده در RFC 5769 ارزیابی کرده و نتایج آزمونها را بر روی صفحه نمایش چاپ میکند. این ابزار تنها برای فرآیند بررسی حین کامپایل استفاده میشود و در مقصد نصب نهایی کپی نمیگردد.
نحوه استفاده:
$ turnutils_rfc5769check
=====================================
نام (NAME) - turnutils_natdiscovery
turnutils_natdiscovery - ابزاری برای کشف رفتار نگاشت و فیلتر کردن NAT مطابق با RFC5780.
خلاصه دستور (SYNOPSIS)
$ turnutils_natdiscovery [گزینهها] <STUN-Server-FQDN-or-IP-address>
توضیحات (DESCRIPTION)
ابزار turnutils_natdiscovery رفتار نگاشت و فیلتر کردن NAT را کشف میکند تا مشخص نماید آیا NAT در حال حاضر از نگاشت مستقل از نقطه انتهایی (Endpoint-Independent)، وابسته به آدرس (Address-Dependent)، یا وابسته به آدرس و پورت (Address and Port-Dependent) استفاده میکند و/یا فیلتر کردن آن به صورت مستقل، وابسته به آدرس، یا وابسته به آدرس و پورت است.
از یکی از فلگهای -m، -f، -c، -H برای کشف رفتار NAT استفاده کنید.
فلگها:
- -m
- کشف رفتار نگاشت NAT
- -f
- کشف رفتار فیلترینگ NAT
- -t
- کشف رفتار طولعمر نگاشت NAT نیازمند یک تایمر (-T) است
- -T
- تایمر طولعمر نگاشت (ثانیه) توسط کشف رفتار طولعمر نگاشت استفاده میشود
$ turnutils_natdiscovery -m -f stun.example.com
=====================================
نام (NAME) - turnutils_oauth
turnutils_oauth - ابزاری کمکی برای تولید/رمزنگاری و اعتبارسنجی/رمزگشایی access_token در پروتکل OAuth
خلاصه دستور (SYNOPSIS)
$ turnutils_oauth [گزینهها]
توضیحات (DESCRIPTION)
ابزار turnutils_oauth در رمزنگاری و/یا رمزگشایی access_token در OAuth با استفاده از الگوریتم رمزنگاری احرازشده با دادههای ضمیمه (AEAD) کمک میکند. این ابزار به یک سرور احراز هویت در ایجاد access_token یاری میرساند و همچنین برای مقاصد اشکالزدایی به اعتبارسنجی و رمزگشایی توکن کمک میکند. این ابزار تمام کلیدها، طولعمرها و هرگونه اطلاعات مرتبط لازم را دریافت کرده و یک JSON شامل تمام پارامترهای OAuth PoP تولید میکند. خروجی مطابق با ضمیمه B، شکل 8 در RFC7635 تولید میشود. توجه داشته باشید که این ابزار "کلید نشست" / "mac_key" تولید نمیکند و طولعمر آنها را بررسی نمینماید. برای جزئیات بیشتر و ساختار access_token، سند rfc7635 را خوانده و مثال موجود در examples/scripts/oauth.sh را ببینید.
برای رمزنگاری یا رمزگشایی access_token از فلگ -e یا -d استفاده کنید.
فلگها:
- -h, --help
- راهنمای استفاده
- -v, --verbose
- حالت پرگو
- -e, --encrypt
- رمزنگاری توکن
- -d, --decrypt
- رمزگشایی و اعتبارسنجی توکن
گزینهها با مقادیر اجباری:
- -i, --server-name
- نام سرور (حداکثر ۲۵۵ نویسه)
- -j, --auth-key-id
- شناسه کلید احراز هویت (حداکثر ۳۲ نویسه)
- -k, --auth-key
- کلید احراز هویت کدگذاریشده با base64
- -l
- --auth-key-timestamp برچسب زمان کلید احراز هویت (ثانیه از مبدأ زمان epoch)
- -m, --auth-key-lifetime
- طولعمر کلید احراز هویت به ثانیه
- -n, --auth-key-as-rs-alg
- الگوریتم رمزنگاری میان سرور احراز هویت (AS) و سرور منبع (RS)
- -o, --token-nonce
- مقدار nonce کدگذاریشده در base64 (شامل ۱۲ بایت = ۱۶ نویسه)
- -p, --token-mac-key
- کلید MAC کدگذاریشده در base64 (شامل ۳۲ بایت = ۴۴ نویسه)
- -q, --token-timestamp
- برچسب زمان در قالب ۶۴ بیتی بدون علامت (قالب محلی یونیکس)، شامل ۴۸ بیت برای ثانیههای سپریشده از epoch UTC و ۱۶ بیت برای کسرهای ۱/۶۴۰۰۰ ثانیه.
به عنوان مثال: برچسب زمان یونیکس با ۱۶ بیت شیفت به چپ (پیشفرض: زمان واقعی gmtime).
- -r, --token-lifetime
- طولعمر به ثانیه (پیشفرض: ۳۶۰۰)
- -t, --token
- توکن رمزگذاریشده و کدگذاریشده در base64 برای اعتبارسنجی و رمزگشایی
- -u, --hmac-alg
- الگوریتم hmac کلاینت stun
نحوه استفاده:
$ turnutils_natdiscovery
===================================
مستندات (DOCS)
پس از نصب، این دستور را اجرا کنید:
$ man turnutils
یا در دایرکتوری ریشه پروژه:
$ man -M man turnutils
تا صفحه راهنما را مشاهده نمایید.
=====================================
فایلها (FILES)
/etc/turnserver.conf
/var/db/turndb
/usr/local/var/db/turndb
/var/lib/turn/turndb
/usr/local/etc/turnserver.conf
=================================
دایرکتوریها (DIRECTORIES)
/usr/local/share/turnserver
/usr/local/share/doc/turnserver
/usr/local/share/examples/turnserver
===================================
استانداردها (STANDARDS)
پروتکل جدید STUN RFC 5389
پروتکل TURN RFC 5766
افزونه TURN-TCP طبق RFC 6062
افزونه IPv6 برای TURN طبق RFC 6156
بردارهای آزمایشی STUN/TURN طبق RFC 5769
کشف رفتار NAT در STUN طبق RFC 5780
====================================
همچنین ببینید (SEE ALSO)
turnserver, turnadmin
======================================
منابع وب (WEB RESOURCES)
صفحه پروژه:
https://github.com/coturn/coturn
صفحه ویکی:
https://github.com/coturn/coturn/wiki
انجمن گفتگو:
https://groups.google.com/forum/?fromgroups=#!forum/turn-server-project-rfc5766-turn-server
======================================
نویسندگان (AUTHORS)
فایل AUTHORS.md را در توزیع منبع coturn مشاهده کنید.
| ۱۷ مه ۲۰۲۶ |