.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "SSLH 8" .TH SSLH 8 2026-04-21 2.3.1-1 " " .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" .Vb 1 \& sslh \- تفکیک‌کننده پروتکل‌های شبکه .Ve .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" sslh [\fB\-F\fR\fIconfig file\fR] [\fB\-t\fR \fInum\fR] [\fB\-\-transparent\fR] [\fB\-p\fR \fIlistening address\fR [\fB\-p\fR \fIlistening address\fR ...] [\fB\-\-tls\fR \fItarget address for TLS\fR] [\fB\-\-ssh\fR \fItarget address for SSH\fR] [\fB\-\-openvpn\fR \fItarget address for OpenVPN\fR] [\fB\-\-http\fR \fItarget address for HTTP\fR] [\fB\-\-xmpp\fR \fItarget address for XMPP\fR] [\fB\-\-tinc\fR \fItarget address for TINC\fR] [\fB\-\-anyprot\fR \fIdefault target address\fR] [\fB\-\-on\-timeout\fR \fIprotocol name\fR] [\fB\-u\fR \fIusername\fR] [\fB\-C\fR \fIchroot\fR] [\fB\-P\fR \fIpidfile\fR] [\fB\-v\fR \fIn\fR] [\-i] [\-V] [\-f] [\-n] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" برنامه \fBsslh\fR اتصالات را روی درگاه‌های مشخص‌شده می‌پذیرد و آن‌ها را بر اساس آزمایش‌های انجام‌شده روی نخستین بسته داده ارسال‌شده توسط کلاینت دوردست، به جلو هدایت می‌کند. .PP آزمایش‌های کاوش برای پروتکل‌های HTTP، TLS، SSH، OpenVPN، tinc و XMPP پیاده‌سازی شده‌اند و هر پروتکل دیگری که بتوان آن را با استفاده از یک عبارت منظم آزمایش کرد، قابل شناسایی است. یک کاربرد متداول، امکان ارائه چندین سرویس روی درگاه ۴۴۳ است (مثلاً برای اتصال به SSH از درون فایروال شرکتی، که تقریباً هرگز درگاه ۴۴۳ را مسدود نمی‌کند) در حالی که همچنان HTTPS روی آن درگاه ارائه می‌شود. .PP از این رو \fBsslh\fR به عنوان یک تفکیک‌کننده پروتکل یا یک تابلوی تقسیم عمل می‌کند. نام آن از عملکرد اولیه‌اش برای ارائه هم‌زمان SSH و HTTPS روی یک درگاه گرفته شده است. .SS "پشتیبانی از Libwrap (Libwrap support)" .IX Subsection "Libwrap support" یکی از معایب \fBsslh\fR این است که سرورها دیگر آدرس IP اصلی کلاینت را نمی‌بینند، زیرا اتصال از طریق \fBsslh\fR هدایت می‌شود. .PP به همین دلیل، \fBsslh\fR را می‌توان با \fBlibwrap\fR کامپایل کرد تا دسترسی‌های تعریف‌شده در \fI/etc/hosts.allow\fR و \fI/etc/hosts.deny\fR را بررسی کند. سرویس‌های Libwrap را می‌توان با استفاده از پرونده پیکربندی تعریف کرد. .SS "پرونده پیکربندی (Configuration file)" .IX Subsection "Configuration file" می‌توان یک پرونده پیکربندی را در اختیار \fBsslh\fR قرار داد. آرگومان‌های خط فرمان بر تنظیمات پرونده ارجحیت دارند. ابزار \fBsslh\fR از \fBlibconfig\fR برای تجزیه پرونده پیکربندی استفاده می‌کند، بنابراین قالب کلی پرونده در نشان داده شده است. لطفاً برای قالب خاص به پرونده پیکربندی نمونه ارائه‌شده با \fBsslh\fR مراجعه کنید (گزینه‌ها همان نام‌های خط فرمان را دارند، به جز فهرست درگاه‌های شنود و فهرست پروتکل‌ها). .PP پرونده پیکربندی امکان تعیین پروتکل‌ها را با استفاده از عبارات منظم فراهم می‌کند: فهرستی از عبارات منظم به عنوان پارامتر \fIregex_patterns\fR داده می‌شود و اگر نخستین بسته دریافتی از کلاینت با هر یک از این عبارات مطابقت داشته باشد، \fBsslh\fR به آن پروتکل متصل می‌شود. .SS "کاوش پروتکل‌ها (Probing protocols)" .IX Subsection "Probing protocols" هنگام دریافت یک اتصال ورودی، \fBsslh\fR نخستین بایت‌های ارسال‌شده توسط کلاینت متصل‌شونده را می‌خواند. سپس پروتکل را به ترتیبی که در خط فرمان (یا پرونده پیکربندی) مشخص شده است کاوش می‌کند. بنابراین گزینه \fB\-\-anyprot\fR همواره باید در آخر استفاده شود، زیرا همیشه موفق می‌شود و پروتکل‌های بعدی هرگز آزمایش نخواهند شد. .PP اگر هیچ داده‌ای توسط کلاینت ارسال نشود، در نهایت مهلت زمانی \fBsslh\fR به پایان می‌رسد و به پروتکل مشخص‌شده با \fB\-\-on\-timeout\fR، یا در صورت مشخص نشدن به \fIssh\fR متصل می‌شود. .SS "ثبت وقایع (Logging)" .IX Subsection "Logging" به عنوان یک برنامه امنیتی/احراز هویت، \fBsslh\fR وقایع را در تسهیلات LOG_AUTH ثبت می‌کند، با اولویت LOG_INFO برای اتصالات عادی و LOG_ERR برای خرابی‌ها. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .IP "\fB\-F\fR\fIfilename\fR, \fB\-\-config\fR \fIfilename\fR" 4 .IX Item "-Ffilename, --config filename" استفاده از \fIfilename\fR به عنوان پرونده پیکربندی. اگر گزینه‌های دیگر خط فرمان مشخص شوند، تنظیمات پرونده پیکربندی را لغو خواهند کرد. .IP "\fB\-t\fR \fInum\fR, \fB\-\-timeout\fR \fInum\fR" 4 .IX Item "-t num, --timeout num" مهلت زمانی پیش از هدایت اتصال به پروتکل مهلت زمانی (که معمولاً باید SSH باشد). پیش‌فرض ۲ ثانیه است. .IP "\fB\-\-on\-timeout\fR \fIprotocol name\fR" 4 .IX Item "--on-timeout protocol name" نام پروتکلی که پس از اتمام دوره مهلت زمانی به آن متصل می‌شود. حالت پیش‌فرض هدایت به نخستین پروتکل مشخص‌شده است. معمولاً تعیین 'ssh' به عنوان پروتکل مهلت زمانی منطقی است، زیرا مشخصات SSH مشخص نمی‌کند چه کسی باید ابتدا صحبت کند و تعداد زیادی از کلاینت‌های SSH منتظر می‌مانند تا سرور بنر خود را ارسال کند. .IP \fB\-\-transparent\fR 4 .IX Item "--transparent" باعث می‌شود \fBsslh\fR به عنوان یک پیشکار شفاف عمل کند، یعنی سرویس گیرنده آدرس IP اصلی کلاینت را می‌بیند. این ویژگی فقط روی لینوکس کار می‌کند و شامل تنظیمات \fBiproute2\fR است. در برخی موارد تنظیمات \fBiptables/nftables\fR نیز مورد نیاز است. برای اطلاعات بیشتر به README یا مراجعه کنید. .IP "\fB\-p\fR \fIlistening address\fR, \fB\-\-listen\fR \fIlistening address\fR" 4 .IX Item "-p listening address, --listen listening address" رابط و درگاهی که باید روی آن شنود کند، مثلاً \fIfoobar:443\fR، که در آن \fIfoobar\fR نام یک رابط است (معمولاً آدرس IP که اتصال اینترنت به آن ختم می‌شود). .Sp این گزینه می‌تواند چندین بار مشخص شود تا \fBsslh\fR به چندین نشانی متصل گردد. .IP "\fB\-\-tls\fR \fItarget address\fR" 4 .IX Item "--tls target address" رابط و درگاهی که اتصال SSL به آن هدایت می‌شود، معمولاً \fIlocalhost:443\fR. .Sp توجه داشته باشید که می‌توانید \fBsslh\fR را طوری تنظیم کنید که روی \fIext_ip:443\fR شنود کند و \fBhttpd\fR روی \fIlocalhost:443\fR: این کار به کلاینت‌های داخل شبکه شما اجازه می‌دهد تا مستقیماً به \fBhttpd\fR متصل شوند. .Sp همچنین، \fBsslh\fR دست‌تکانی‌های TLS را کاوش می‌کند و اتصال کلاینت‌هایی را که درخواست SSLv2 دارند رد می‌کند. این رفتار مطابق با RFC6176 است که استفاده از SSLv2 را ممنوع می‌کند. اگر می‌خواهید SSLv2 را بپذیرید، به‌جای آن از \fB\-\-anyprot\fR استفاده کنید. .IP "\fB\-\-ssh\fR \fItarget address\fR" 4 .IX Item "--ssh target address" رابط و درگاهی که اتصالات SSH به آن هدایت می‌شوند، معمولاً \fIlocalhost:22\fR. .IP "\fB\-\-openvpn\fR \fItarget address\fR" 4 .IX Item "--openvpn target address" رابط و درگاهی که اتصالات OpenVPN به آن هدایت می‌شوند، معمولاً \fIlocalhost:1194\fR. .IP "\fB\-\-xmpp\fR \fItarget address\fR" 4 .IX Item "--xmpp target address" رابط و درگاهی که اتصالات XMPP به آن هدایت می‌شوند، معمولاً \fIlocalhost:5222\fR. .IP "\fB\-\-http\fR \fItarget address\fR" 4 .IX Item "--http target address" رابط و درگاهی که اتصالات HTTP به آن هدایت می‌شوند، معمولاً \fIlocalhost:80\fR. .IP "\fB\-\-tinc\fR \fItarget address\fR" 4 .IX Item "--tinc target address" رابط و درگاهی که اتصالات tinc به آن هدایت می‌شوند، معمولاً \fIlocalhost:655\fR. .Sp این قابلیت آزمایشی است. اگر از این ویژگی استفاده می‌کنید، لطفاً نتایج را گزارش دهید (حتی اگر به درستی کار می‌کند!). .IP "\fB\-\-anyprot\fR \fItarget address\fR" 4 .IX Item "--anyprot target address" رابط و درگاهی که در صورت عدم یافتن پروتکل دیگر، اتصال به آن هدایت می‌شود. از آنجا که \fBsslh\fR پروتکل‌ها را به ترتیبی که در خط فرمان مشخص شده امتحان می‌کند، این گزینه باید در آخر مشخص شود. اگر هیچ پیش‌فرضی مشخص نشود، \fBsslh\fR پروتکل‌های ناشناخته را به نخستین پروتکل مشخص‌شده هدایت می‌کند. .IP "\fB\-v\fR, \fB\-\-verbose\fR \fIn\fR" 4 .IX Item "-v, --verbose n" لغو تمام پرگویی‌ها. برای تمام زیرگزینه‌های پرگویی به \fBexample.cfg\fR مراجعه کنید. .IP "\fB\-n\fR, \fB\-\-numeric\fR" 4 .IX Item "-n, --numeric" عدم تلاش برای وضوح نام‌های میزبان: گزارش‌ها حاوی آدرس‌های IP خواهند بود. این گزینه بیشتر در صورتی مفید است که DNS سیستم کند باشد و گونه \fIsslh\-select\fR را اجرا کنید، زیرا درخواست‌های DNS تمام اتصالات را معلق نگه می‌دارند. .IP \fB\-V\fR 4 .IX Item "-V" چاپ نسخه \fBsslh\fR. .IP "\fB\-u\fR \fIusername\fR, \fB\-\-user\fR \fIusername\fR" 4 .IX Item "-u username, --user username" نیاز به اجرا تحت نام کاربری مشخص‌شده دارد. .IP "\fB\-C\fR \fIchroot\fR, \fB\-\-chroot\fR \fIchroot\fR" 4 .IX Item "-C chroot, --chroot chroot" نیاز به اجرا تحت محیط chroot مشخص‌شده دارد. .IP "\fB\-P\fR \fIpidfile\fR, \fB\-\-pidfile\fR \fIpidfile\fR" 4 .IX Item "-P pidfile, --pidfile pidfile" پرونده‌ای را برای نوشتن PID سرور اصلی مشخص می‌کند. .IP "\fB\-i\fR, \fB\-\-inetd\fR" 4 .IX Item "-i, --inetd" اجرا به عنوان یک سرور \fIinetd\fR. گزینه‌های \fB\-P\fR (پرونده PID)، \fB\-p\fR (آدرس شنود) و \fB\-u\fR (کاربر) نادیده گرفته می‌شوند. .IP "\fB\-f\fR, \fB\-\-foreground\fR" 4 .IX Item "-f, --foreground" اجرا در پیش‌زمینه. سرور فرآیند جدید ایجاد نخواهد کرد و به پایانه متصل باقی می‌ماند. پیام‌هایی که معمولاً به \fBsyslog\fR ارسال می‌شوند به \fIstderr\fR نیز فرستاده خواهند شد. .IP \fB\-\-background\fR 4 .IX Item "--background" اجرا در پس‌زمینه. در صورتی که در پرونده پیکربندی تنظیم شده باشد، گزینه \fBforeground\fR را لغو می‌کند. .SH "فایل‌ها (FILES)" .IX Header "FILES" .IP \fI/etc/init.d/sslh\fR 4 .IX Item "/etc/init.d/sslh" اسکریپت راه‌اندازی. کنش‌های استاندارد \fBstart\fR، \fBstop\fR و \fBrestart\fR پشتیبانی می‌شوند. .IP \fI/etc/default/sslh\fR 4 .IX Item "/etc/default/sslh" پیکربندی سرور. این‌ها متغیرهای محیطی هستند که توسط اسکریپت راه‌اندازی بارگذاری شده و به عنوان آرگومان‌های خط فرمان به \fBsslh\fR ارسال می‌شوند. برای توضیح مفصل درباره متغیرهای مورد استفاده \fBsslh\fR به بخش گزینه‌ها مراجعه کنید. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" جدیدترین نسخه از طریق در دسترس است. در آنجا می‌توانید اسناد به‌روزتر و مفصل‌تری بیابید. .SH "نویسنده (AUTHOR)" .IX Header "AUTHOR" نوشته شده توسط Yves Rutschle.