| wsdd(8) | System Manager's Manual | wsdd(8) |
نام (NAME)
wsdd - دیمن میزبان و کلاینت پروتکل Web Service Discovery
خلاصه دستور (SYNOPSIS)
wsdd [options]
توضیحات (DESCRIPTION)
wsdd هم یک میزبان Web Service Discovery (WSD) و هم یک دیمن کلاینت WSD را پیادهسازی میکند. پیادهسازی میزبان، میزبانهای (سامبا) مانند دستگاههای NAS محلی شما را قادر میسازد توسط کلاینتهای Web Service Discovery مانند ویندوز پیدا شوند. حالت کلاینت امکان جستجوی سایر میزبانهای WSD را در شبکه محلی فراهم میکند.
حالت پیشفرض عملیاتی، حالت میزبان است. حالت کلاینت یا کشف (discovery) باید بهطور صریح فعال شود. مگر اینکه بهگونهای دیگر پیکربندی شده باشد، حالت میزبان همواره فعال است. هر دو حالت میتوانند همزمان استفاده شوند.
گزینهها (OPTIONS)
گزینههای عمومی (General options)
- -4, --ipv4only
- به پایین مراجعه کنید.
- -6, --ipv6only
- محدود کردن به خانواده آدرس ارائهشده. اگر هر دو گزینه مشخص شوند، هیچ آدرسی در دسترس نخواهد بود و wsdd خارج میشود.
- -A, --no-autostart
- عدم شروع خودکار فعالیتهای شبکه هنگام آغاز به کار برنامه. رابط API (به پایین مراجعه کنید) میتواند برای شروع و توقف فعالیتهای شبکه در حین اجرای برنامه استفاده شود.
- -c DIRECTORY, --chroot DIRECTORY
- اعمال chroot به DIRECTORY دادهشده پس از انجام راهاندازی اولیه و درست پیش از شروع رسیدگی به پیامهای دریافتی. دایرکتوری ریشه جدید میتواند خالی باشد. استفاده از گزینه -u را نیز در نظر داشته باشید.
- -h, --help
- نمایش راهنما و خروج.
- -H HOPLIMIT, --hoplimit HOPLIMIT
- تنظیم حد پرش (hop limit) برای بستههای چندپخشی (multicast). مقدار پیشفرض ۱ است که باید از خروج بستهها از بخش شبکه محلی جلوگیری کند.
- -i INTERFACE/ADDRESS, --interface INTERFACE/ADDRESS
- تعیین رابطهایی که wsdd روی آنها به گوش خواهد نشست. اگر هیچ رابطی مشخص نشود، از تمام رابطها استفاده میشود. رابطهای لوپبک هرگز استفاده نمیشوند، حتی اگر بهطور صریح مشخص شده باشند. برای رابطهای دارای آدرس IPv6، تنها آدرسهای link-local برای اعلان میزبان در شبکه استفاده خواهند شد. این گزینه میتواند چندین بار برای محدود کردن ترافیک به بیش از یک رابط ارائه شود. این گزینه همچنین آدرسهای IP را که سرویس باید به آنها متصل شود میپذیرد. برای IPv6، همانطور که در بالا ذکر شد تنها آدرسهای link-local در نظر گرفته میشوند.
- --metadata-timeout TIMEOUT
- تنظیم مهلت زمانی برای تبادل متاداده مبتنی بر HTTP. پیشفرض 2.0 ثانیه است.
- --source-port ORT
- تنظیم درگاه مبدا برای پیامهای چندپخشی ارسالی، بهطوری که پاسخها از این درگاه به عنوان درگاه مقصد استفاده کنند. این گزینه برای دیوارهای آتشی مفید است که پاسخهای تکپخشی (unicast) ورودی به یک چندپخشی را به عنوان بخشی از جریان تشخیص نمیدهند، بنابراین درگاه باید ثابت باشد تا بتوان به صورت دستی اجازه آن را صادر کرد.
- -s, --shortlog
- استفاده از قالب کوتاهتر لاگ که تنها شامل سطح و پیام است. این گزینه در مواردی مفید است که سازوکار لاگگیری، مانند systemd در لینوکس، بهطور خودکار تاریخ، نام فرآیند و شناسه را به ابتدای پیام لاگ اضافه میکند.
- -u USER[:GROUP], --user USER[:GROUP]
- تغییر کاربر (و گروه) در حین اجرا پیش از رسیدگی به بستههای شبکه. همراه با -c این گزینه میتواند برای افزایش امنیت در صورتی که محیط اجرا، مانند سیستم init، نتواند این موضوع را به روش دیگری تضمین کند، استفاده شود.
- -U UUID, --uuid UUID
- مشخصات WSD ایجاب میکند که یک دستگاه دارای نشانی یکتا باشد که در طول راهاندازیهای مجدد یا تغییرات شبکه پایدار بماند. در چارچوب این استاندارد، فرض بر این است که این چیزی شبیه به یک شماره سریال است. ابزار wsdd تلاش میکند شناسه ماشین را پیش از chroot احتمالی در محیطی دیگر از /etc/machine-id و /etc/hostid (به همین ترتیب) بخواند. اگر خواندن شناسه ماشین با شکست مواجه شود، wsdd به یک UUID نگارش ۵ با فضای نام DNS و نام میزبان ماشین محلی به عنوان ورودیها بازمیگردد. بنابراین، نام میزبان باید پایدار باشد و مثلاً توسط DHCP تغییر نکند. با این حال، اگر میخواهید wsdd از یک UUID خاص استفاده کند میتوانید از این گزینه بهره ببرید.
- -v, --verbose
- افزایش فزاینده پرگویی خروجی لاگ. یک بار استفاده از -v/--verbose سطح لاگ را روی INFO تنظیم میکند. تکرار بیشتر گزینه -v سطح لاگ را روی DEBUG قرار میدهد.
- -V, --version
- نمایش شماره نگارش و خروج.
گزینههای حالت میزبان (Host Mode Options)
- -d DOMAIN, --domain DOMAIN
- فرض بر اینکه میزبان اجراکننده wsdd به یک دامنه ADS پیوسته است. این امر باعث میشود wsdd گزارش دهد که میزبان عضو یک دامنه است و گزارش عضویت در workgroup را غیرفعال میکند. نام میزبان (ارائهشده) بهطور خودکار به حروف کوچک تبدیل میشود. از گزینه `-p` برای تغییر این رفتار استفاده کنید.
- -n HOSTNAME, --hostname HOSTNAME
- لغو نام میزبانی که wsdd در طول فرآیند کشف استفاده میکند. بهطور پیشفرض نام میزبان ماشین استفاده میشود (به hostname(1) نگاه کنید). در حالت پیشفرض تنها بخش نام میزبان از یک FQDN احتمالی استفاده خواهد شد.
- -o, --no-host
- غیرفعال کردن حالت عملیاتی میزبان. اگر این گزینه ارائه شود، میزبان توسط سایر میزبانها (ویندوز) قابل کشف نخواهد بود. این گزینه زمانی مفید است که حالت کلاینت/کشف استفاده میشود و نباید اعلانی از میزبان اجراکننده wsdd صورت گیرد.
- -p, --preserve-case
- حفظ بزرگی و کوچکی حروف نام میزبان به همان صورتی که هست. بدون این گزینه، نام میزبان بهصورت زیر تبدیل میشود: برای محیطهای workgroup (گزینه -w را ببینید) نام میزبان بهطور پیشفرض به حروف بزرگ تبدیل میشود. برعکس برای استفاده در دامنهها (گزینه -d را ببینید) به حروف کوچک تبدیل میشود.
- -t, --no-http
- عدم پاسخگویی به درخواستهای HTTP پروتکل WSD. این گزینه برای اهداف اشکالزدایی در نظر گرفته شده است که در آن فرآیند دیگری ممکن است به پیامهای Get رسیدگی کند.
- -w WORKGROUP, --workgroup WORKGROUP
- بهطور پیشفرض wsdd گزارش میدهد که میزبان بهجای دامنه، عضو یک گروه کاری (workgroup) است (از گزینه -d/--domain برای لغو این حالت استفاده کنید). با -w/--workgroup میتوان نام workgroup پیشفرض را تغییر داد. نام گروه کاری پیشفرض WORKGROUP است. نام میزبان (ارائهشده) بهطور خودکار به حروف بزرگ تبدیل میشود. برای تغییر این رفتار از گزینه `-p` استفاده کنید.
گزینههای حالت کلاینت/کشف (Client/Discovery Mode Options)
- -D, --discovery
- فعالسازی حالت کشف برای جستجوی سایر میزبانها/کارسازهای WSD. میزبانهای پیداشده با اولویت INFO ثبت میشوند. رابط سرور (به پایین مراجعه کنید) میتواند برای یک رابط برنامهنویسی استفاده شود. برای جزئیات رابط سرور به صفحه راهنما مراجعه کنید.
- -l PATH/PORT, --listen PATH/PORT
- تعیین محل سوکت برای رابط برنامهنویسی سرور. اگر مقدار گزینه عددی باشد، به عنوان یک درگاه عددی برای یک درگاه سرور TCP تفسیر میشود؛ در این صورت سوکت سرور تنها به میزبان محلی متصل میگردد. اگر مقدار گزینه غیرعددی باشد، مسیری به یک سوکت دامنه یونیکس فرض میشود که یک کلاینت میتواند به آن متصل شود.
نمونههای استفاده (EXAMPLE USAGE)
مدیریت ترافیک تنها روی eth0 و eth2، اما فقط با آدرسهای IPv6
wsdd -i eth0 -i eth2 -6
or
wsdd --interface eth0 --interface eth2 --ipv6only
تنظیم Workgroup مطابق با smb.conf، پرگویی در لاگ، اجرا با مجوزهای کاهشیافته و تغییر دایرکتوری ریشه به یک دایرکتوری (خالی)
SMB_GROUP=$(grep -i '^\s*workgroup\s*=' smb.conf | cut -f2 -d= | tr -d '[:blank:]')
wsdd -v -w $SMB_GROUP -u daemon:daemon -c /var/run/wsdd/chroot
پیکربندی دیوار آتش (FIREWALL SETUP)
ترافیک برای درگاهها، جهتها و آدرسهای زیر باید مجاز باشد:
- - ترافیک ورودی و خروجی به udp/3702 با مقصد چندپخشی: 239.255.255.250 برای IPv4 و ff02::c برای IPv6
- - ترافیک تکپخشی خروجی از udp/3702
- - ترافیک ورودی به tcp/5357
شما باید ترافیک را بیشتر به زیرشبکه محلی محدود کنید، مثلاً با استفاده از فضای آدرس `fe80::/10` برای IPv6. لطفاً توجه داشته باشید که ترافیک IGMP باید فعال باشد تا ترافیک چندپخشی IPv4 کار کند.
رابط برنامهنویسی (API INTERFACE)
ابزار wsdd یک رابط برنامهنویسی متنی و خطمحور را برای پرسوجوی اطلاعات و راهاندازی اقدامات ارائه میدهد. این رابط میتواند با سوکتهای TCP و دامنههای یونیکس استفاده شود (گزینه -l/--listen را ببینید). سوکت TCP تنها به میزبان محلی متصل میشود. دستورات زیر را میتوان صادر کرد:
clear - پاک کردن فهرست دستگاههای کشفشده
فهرست تمام دستگاههای کشفشده را پاک میکند. از دستور probe برای جستجوی مجدد دستگاهها استفاده کنید. این دستور هیچ دادهای را بازنمیگرداند و تنها در حالت کشف در دسترس است.
list [TYPE] - فهرست کردن دستگاههای کشفشده
فهرستی جداشده با تب از دستگاههای کشفشده از TYPE ارائهشده (مانند «pub:Computer») را با اطلاعات زیر بازمیگرداند. اگر نوعی ارائه نشود، تمام دستگاههای کشفشده فهرست میشوند. فهرست میزبانهای شناساییشده که ممکن است خالی باشد، همیشه با یک نقطه تک ('.') در یک خط جداگانه خاتمه مییابد. این دستور فقط در حالت کشف در دسترس است.
- URI
- نشانی URI دستگاه کشفشده. توجه داشته باشید که یک دستگاه با چند رابط شبکه باید تنها یک بار اما با نشانیهای چندگانه ظاهر شود (به پایین مراجعه کنید).
- name
- نام گزارششده توسط دستگاه. برای میزبانهای ویندوز کشفشده، نام رایانه پیکربندیشده در اینجا گزارش میشود.
- association
- دامنه یا گروه کاری که میزبان کشفشده متعلق به آن است را مشخص میکند. نوع وابستگی (workgroup یا domain) با دونقطه از مقدار آن جدا میشود.
- last_seen
- تاریخ و زمانی که دستگاه آخرین بار در نتیجه پیامهای Probe/Hello دیده شده است که در قالب ISO8601 با ثانیه ارائه میشود.
- addresses
- فهرست تمام نشانیهای انتقالی که در طول فرآیند کشف جمعآوری شدهاند، جداشده با کاما. نشانیها به همراه رابطی که روی آن کشف شدهاند (جداشده با '%') ارائه میشوند. نشانیهای IPv6 در کروشه گزارش میشوند. توجه داشته باشید که نشانیهای گزارششده ممکن است با دستگاه واقعی که از طریق آن میتوان به دستگاه دسترسی داشت مطابقت نداشته باشد.
- types
- انواع دستگاه شناساییشده، جداشده با کاما.
probe [INTERFACE] - جستجو برای دستگاهها
یک پیام Probe را روی INTERFACE ارائهشده (مثلاً eth0) برای جستجوی میزبانهای WSD ارسال میکند. اگر رابطی ارائه نشود، تمام رابطهایی که wsdd روی آنها گوش میدهد بررسی میشوند. یک پیام Probe جریان پیام کشف را آغاز میکند. ممکن است مدتی طول بکشد تا میزبانها واقعاً کشف شوند. این دستور هیچ دادهای را بازنمیگرداند و فقط در حالت کشف در دسترس است.
start - شروع فعالیتهای شبکه
این دستور فعالیتهای شبکه wsdd را در صورتی که هنوز شروع نشده باشند آغاز میکند. پیامهای «Hello» ارسال میشوند و زمانی که حالت میزبان فعال است، میزبان در شبکه اعلان میشود. اگر حالت کشف فعال باشد، فرآیند probe نیز آغاز میشود.
stop - توقف فعالیتهای شبکه
این عملیات معکوس start است. هنگامی که این دستور دریافت میشود، پیامهای «Bye» به منظور اطلاعرسانی به میزبانهای موجود در شبکه در مورد ناپدید شدن میزبان ارسال میشوند. تمام سوکتهای شبکه مورد استفاده برای پروتکل WSD نیز بسته میشوند. فعالیتها را میتوان با عملیات start مجدداً راهاندازی کرد.
امنیت (SECURITY)
ابزار wsdd هیچ ویژگی امنیتی پیادهسازی نمیکند، مثلاً با استفاده از TLS برای سرویس http. این به این دلیل است که کاربرد مورد نظر wsdd درون شبکههای محلی خصوصی و خانگی است. پیام Hello شامل نشانی انتقال میزبان، یعنی آدرس IP است که سرعت کشف را افزایش میدهد (از ارسال پیام Resolve جلوگیری میکند).
مشکلات شناختهشده (KNOWN ISSUES)
استفاده انحصاری از IPv6 در FreeBSD
اگر wsdd روی FreeBSD تنها با استفاده از IPv6 اجرا شود، میزبانی که wsdd را اجرا میکند ممکن است بهطور قابل اعتماد کشف نشود. به نظر میرسد دلیل این امر این است که ویندوز به دلایل نامعلومی همیشه قادر به اتصال به سرویس HTTP نیست. به عنوان یک راهکار، wsdd را تنها با IPv4 اجرا کنید.
رابطهای تونل و پل (Tunnel/Bridge Interface)
اگر رابطهای تونل/پل مانند رابطهای ایجادشده توسط OpenVPN یا Docker وجود داشته باشند، در صورتی که wsdd بدون تعیین رابط مشخص برای اتصال اجرا شود (تا به همه متصل شود)، ممکن است با آن تداخل پیدا کنند. در چنین مواردی، میزبان wsdd پس از شروع به کار wsdd ظاهر میشود اما زمانی که بهروزرسانی نمای Network در Windows Explorer اجبار شود (چه با تازهسازی نما یا راهاندازی مجدد ماشین ویندوز)، ناپدید میشود. برای حل این مشکل، رابطی که به شبکهای که میزبان باید در آن اعلان شود متصل است، باید با گزینه -i/--interface مشخص شود. این کار از استفاده از رابطهای تونل/پل جلوگیری میکند.
پیشزمینه: رابطهای تونل/پل ممکن است باعث شوند درخواستهای Resolve از میزبانهای ویندوز چندین بار به wsdd تحویل داده شوند، یعنی نسخههای تکراری از چنین درخواستهایی ایجاد شود. اگر wsdd ابتدا چنین درخواستی را از یک تونل/پل دریافت کند، از نشانی انتقال (آدرس IP) آن رابط استفاده کرده و پاسخ را از طریق unicast ارسال میکند. موارد تکراری بعدی به دلیل سیستم تشخیص پیامهای تکراری که بر اساس UUID پیامها کار میکند پردازش نمیشوند. میزبان ویندوزی که پاسخ را دریافت میکند ظاهراً عدم تطابق بین نشانی انتقال در پیام ResolveMatch (که نشانی تونل/پل است) و IP میزبان/رابط فرستنده (مثلاً IP شبکه محلی) را تشخیص میدهد. متعاقباً، میزبان wsdd توسط ویندوز نادیده گرفته میشود.