| socat(1) | socat(1) |
نام (NAME)
socat - بازپخشکننده همهمنظوره (سوکت کت)
خلاصه دستور (SYNOPSIS)
socat
[گزینهها]
<آدرس>
<آدرس>
socat -V
socat -h[h[h]] | -?[?[?]]
filan
procan
توضیحات (DESCRIPTION)
ابزار Socat یک ابزار مبتنی بر خط فرمان است که دو جریان بایت دوطرفه برقرار کرده و دادهها را میان آنها منتقل میکند. از آنجا که این جریانها میتوانند از مجموعه بزرگی از انواع مختلف گیرندهها و منابع داده (به انواع آدرس مراجعه کنید) ساخته شوند، و از آنجا که گزینههای آدرس متعددی را میتوان روی این جریانها اعمال کرد، socat میتواند برای اهداف بسیار گوناگونی به کار گرفته شود.
ابزار Filan ابزاری است که اطلاعات مربوط به توصیفکنندههای فایل فعال خود را در خروجی استاندارد (stdout) چاپ میکند. این ابزار برای اشکالزدایی socat نوشته شده است، اما ممکن است برای مقاصد دیگر نیز سودمند باشد. برای یافتن اطلاعات بیشتر از گزینه -h استفاده کنید.
ابزار Procan ابزاری است که اطلاعات مربوط به پارامترهای فرایند را در خروجی استاندارد چاپ میکند. این ابزار برای درک بهتر برخی از ویژگیهای فرایند یونیکس و اشکالزدایی socat نوشته شده است، اما برای اهداف دیگر نیز ممکن است مفید واقع شود.
چرخه حیات یک نمونه socat معمولاً از چهار مرحله تشکیل شده است.
در مرحله مقداردهی اولیه (init)، گزینههای خط فرمان تجزیه شده و ثبت وقایع (logging) آغاز میشود.
در طول مرحله باز کردن (open)، socat ابتدا آدرس نخست و سپس آدرس دوم را باز میکند. این مراحل معمولاً مسدودکننده (blocking) هستند؛ از این رو، بهویژه برای انواع آدرسهای پیچیده مانند socks، درخواستهای اتصال یا گفتگوهای احراز هویت باید پیش از آغاز مرحله بعدی تکمیل شوند.
در مرحله انتقال (transfer)، socat توصیفکنندههای فایل خواندن و نوشتن هر دو جریان را از طریق select() زیر نظر میگیرد و هنگامی که داده در یک طرف آماده باشد و بتوان آن را در طرف دیگر نوشت، socat آن را میخواند، در صورت نیاز تبدیل نویسه خط جدید (newline) را انجام میدهد، داده را در توصیفکننده فایل نوشتن جریان دیگر مینویسد، و سپس به انتظار برای دادههای بیشتر در هر دو جهت ادامه میدهد.
هنگامی که یکی از جریانها عملاً به انتهای فایل (EOF) میرسد، مرحله بستن (closing) آغاز میگردد. Socat وضعیت EOF را به جریان دیگر منتقل میکند، یعنی تلاش میکند تنها جریان نوشتن آن را ببندد (shutdown)، و به آن فرصت میدهد تا به آرامی و به درستی خاتمه یابد. برای مدتی مشخص، socat به انتقال داده در جهت دیگر ادامه میدهد، اما پس از آن تمام کانالهای باقیمانده را بسته و خاتمه مییابد.
گزینهها (OPTIONS)
ابزار Socat چند گزینه خط فرمان ارائه میدهد که رفتار برنامه را تغییر میدهند. آنها هیچ ارتباطی با بهاصطلاح گزینههای آدرس که به عنوان بخشی از مشخصات آدرس استفاده میشوند، ندارند.
- -V
- اطلاعات نسخه و قابلیتهای در دسترس را در خروجی استاندارد چاپ کرده و خارج میشود.
- -h | -?
- یک متن راهنما شامل شرح گزینههای خط فرمان و انواع آدرسهای در دسترس را در خروجی استاندارد چاپ کرده و خارج میشود.
- -hh | -??
- مشابه -h، به همراه فهرستی از نامهای کوتاه تمام گزینههای آدرس در دسترس. برخی گزینهها وابسته به پلتفرم هستند، از این رو این خروجی برای بررسی پیادهسازی مربوطه سودمند است.
- -hhh | -???
- مشابه -hh، به همراه فهرستی از تمام نامهای گزینههای آدرس در دسترس.
- -d
- بدون این گزینه، تنها پیامهای مهلک (fatal)، خطا (error) و هشدار (warning) چاپ میشوند؛ با اعمال این گزینه، پیامهای اطلاعرسانی (notice) نیز چاپ خواهند شد. برای اطلاعات بیشتر به بخش DIAGNOSTICS مراجعه کنید.
- -d0
- با این گزینه، تنها پیامهای مهلک و خطا چاپ میشوند؛ این گزینه رفتار socat را تا نسخه 1.7.4 بازمیگرداند.
- -d -d | -dd | -d2
- پیامهای مهلک، خطا، هشدار و اطلاعرسانی را چاپ میکند.
- -d -d -d | -ddd | -d3
- پیامهای مهلک، خطا، هشدار، اطلاعرسانی و اطلاعاتی (info) را چاپ میکند.
- -d -d -d -d | -dddd | -d4
- پیامهای مهلک، خطا، هشدار، اطلاعرسانی، اطلاعاتی و اشکالزدایی (debug) را چاپ میکند.
- -D
- پیش از آغاز مرحله انتقال، اطلاعات مربوط به توصیفکنندههای فایل را در لاگ ثبت میکند.
- --experimental
- قابلیتهای جدیدی که به خوبی آزمایش نشدهاند یا در آینده دستخوش تغییر میشوند باید صریحاً با این گزینه فعال شوند.
- -ly[<facility>]
- پیامها را به جای stderr در syslog مینویسد؛ سطح اهمیت همانطور که با گزینه -d تعیین شده اعمال میشود. با مشخصه اختیاری <facility>، نوع syslog را میتوان انتخاب کرد، مقدار پیشفرض "daemon" است. ممکن است کتابخانههای شخص ثالث از این گزینه پیروی نکنند.
- -lf<logfile>
- پیامها را به جای stderr در پرونده لاگ <logfile> [نام فایل] مینویسد. برخی کتابخانههای شخص ثالث، بهویژه libwrap، ممکن است از این گزینه پیروی نکنند.
- -ls
- پیامها را در stderr مینویسد (این حالت پیشفرض است). ممکن است برخی کتابخانههای شخص ثالث از این گزینه پیروی نکنند، بهویژه به نظر میرسد libwrap تنها وقایع را در syslog ثبت میکند.
- -lp<progname>
- نام برنامه چاپشده در پیامهای خطا را که برای ساختن نام متغیرهای محیطی نیز به کار میرود، بازنویسی (override) میکند.
- -lu
- دقت برچسب زمان (timestamp) پیامهای خطا را به میکروثانیه افزایش میدهد. هنگام ثبت وقایع در syslog کار نمیکند.
- -lm[<facility>]
- حالت لاگ ترکیبی. در حین راهاندازی، پیامها در stderr چاپ میشوند؛ هنگامی که socat حلقه مرحله انتقال یا حالت دیمن (daemon) را آغاز میکند (یعنی پس از باز کردن تمام جریانها و پیش از آغاز انتقال داده، یا در سوکتهای شنونده با گزینه fork، پیش از نخستین فراخوانی accept)، ثبت وقایع را به syslog تغییر میدهد. با مشخصه اختیاری <facility>، نوع syslog را میتوان انتخاب کرد، مقدار پیشفرض "daemon" است.
- -lh
- نام میزبان (hostname) را به پیامهای لاگ اضافه میکند. از مقدار متغیر محیطی HOSTNAME یا در صورت تنظیم نبودن HOSTNAME از مقدار دریافتشده با فراخوانی uname() استفاده میکند.
- -v
- دادههای منتقلشده را علاوه بر جریانهای مقصد، در stderr نیز مینویسد. قالب خروجی متنی همراه با برخی تبدیلها برای خوانایی بهتر است، و با "> " یا "< " برای نشان دادن جهت جریان داده پیشوندگذاری میشود.
- -x
- دادههای منتقلشده را علاوه بر جریانهای مقصد، در stderr نیز مینویسد. قالب خروجی به صورت هگزادسیمال است و با "> " یا "< " برای نشان دادن جهت جریان داده پیشوندگذاری میشود. میتواند با -v ترکیب شود.
- -r <file>
- دادههای خام (باینری) جاری از آدرس چپ به راست را در فایل دادهشده ذخیره (dump) میکند. نام فایل ممکن است شامل ارجاع به متغیرهای محیطی و $$ (شناسه فرایند یا pid)، $PROGNAME (گزینه -lp را ببینید)، $TIMESTAMP (از قالب %Y%m%dT%H%M%S استفاده میکند)، و MICROS (میکروثانیههای زمان روز) باشد. البته این ارجاعات باید در برابر بسط پوسته (shell expansion) محافظت شوند.
- -R <file>
- دادههای خام (باینری) جاری از آدرس راست به چپ را در فایل دادهشده ذخیره (dump) میکند. برای سفارشیسازی نام فایل گزینه -r را ببینید.
- -b<size>
- اندازه بلوک انتقال داده <size> [size_t] را تنظیم میکند. در هر مرحله حداکثر <size> بایت منتقل میشود. مقدار پیشفرض 8192 بایت است.
- -s
- به طور پیشفرض، هنگامی که خطایی رخ دهد socat خاتمه مییابد تا از اجرای فرایند در زمانی که گزینهای نتواند اعمال شود جلوگیری کند. با این گزینه، socat با خطاها با مسامحه برخورد کرده و تلاش میکند ادامه دهد. حتی با این گزینه، socat در خطاهای مهلک خارج میشود، و در صورت شکست بررسیهای امنیتی، تلاشهای اتصال را لغو خواهد کرد.
- -S<signals-bitmap>
- مجموعه
سیگنالهایی
را که توسط
socat صرفاً
برای چاپ یک
پیام لاگ
دریافت (catch)
میشوند
تغییر
میدهد.
دریافت این
سیگنالها
برای وارد
کردن
اطلاعات
سیگنال در
لاگ socat مفید
است، اما از
تولید core dump یا
سایر
کنشهای
استاندارد
جلوگیری
میکند.
مجموعه
پیشفرض
این
سیگنالها
عبارت است
از SIGHUP، SIGINT، SIGQUIT،
SIGILL، SIGABRT، SIGBUS، SIGFPE، SIGSEGV
و SIGTERM؛ این
مجموعه (0x89de در
لینوکس) را
با یک نگاشت
بیتی (bitmap)
جایگزین
کنید (برای
نمونه SIGFPE
دارای
مقدار 8 است
و بیت آن 0x0080
میباشد).
نکته: سیگنالهای SIGHUP، SIGINT، SIGQUIT، SIGUSR1، SIGPIPE، SIGALRM، SIGTERM و SIGCHLD در هر صورت ممکن است به طور ویژه مدیریت شوند. - -t<timeout>
- هنگامی که یک کانال به EOF میرسد، بخش نوشتن کانال دیگر بسته (shutdown) میشود. سپس socat پیش از خاتمه یافتن، به مدت <timeout> [timeval] ثانیه منتظر میماند. مقدار پیشفرض 0.5 ثانیه است. این مهلت زمانی تنها برای آدرسهایی اعمال میشود که بخش نوشتن و خواندن آنها میتواند مستقل از هم بسته شود. زمانی که در طول بازه مهلت زمانی، بخش خواندن EOF دهد، socat بدون منتظر ماندن برای مهلت، خاتمه مییابد.
- -T<timeout>
- مهلت زمانی
کل عدم
فعالیت:
زمانی که socat
در حلقه
انتقال
قرار دارد و
برای مدت <timeout>
[timeval] ثانیه
هیچ
رویدادی رخ
ندهد (هیچ
دادهای
نرسد، هیچ
وقفهای رخ
ندهد و
غیره)،
خاتمه
مییابد. تا
نسخه 1.8.0.0
مقدار "0" به
معنای
"بینهایت"
بود؛ از
نسخه 1.8.0.1
مقدار "0" به
معنای 0 است
و مقادیر
کمتر از صفر
(<0) به معنای
بینهایت
هستند.
برای پروتکلهایی مانند UDP که نمیتوانند EOF را منتقل کنند سودمند است. - -u
- از حالت یکطرفه (unidirectional) استفاده میکند. آدرس اول تنها برای خواندن، و آدرس دوم تنها برای نوشتن استفاده میشود (مثال).
- -U
- از حالت یکطرفه در جهت معکوس استفاده میکند. آدرس اول تنها برای نوشتن، و آدرس دوم تنها برای خواندن استفاده میشود.
- -g
- در طول تجزیه گزینه آدرس، بررسی نکن که آیا این گزینه در محیط آدرس دادهشده مفید به شمار میرود یا خیر. اگر میخواهید برای نمونه اعمال یک گزینه سوکت به یک دستگاه سریال را اجبار کنید، از آن استفاده نمایید.
- -L<lockfile>
- اگر فایل قفل (lockfile) وجود داشته باشد، با خطا خارج میشود. اگر فایل قفل وجود نداشته باشد، آن را ایجاد کرده و ادامه میدهد، و در هنگام خروج فایل قفل را حذف (unlink) میکند.
- -W<lockfile>
- اگر فایل قفل وجود داشته باشد، تا زمان ناپدید شدن آن منتظر میماند. زمانی که فایل قفل وجود نداشته باشد، آن را ایجاد کرده و ادامه میدهد، و در هنگام خروج فایل قفل را حذف میکند.
- -4
- در صورتی که آدرسها نسخه را به طور ضمنی یا صریح مشخص نکنند، از IP نسخه 4 استفاده میکند. از نسخه 1.8.0.1 این حالت پیشفرض است.
- -6
- در صورتی که آدرسها نسخه را به طور ضمنی یا صریح مشخص نکنند، از IP نسخه 6 استفاده میکند.
- -0
- نسخه خاصی از IP را ترجیح نده؛ این به آدرسهای انفعالی (LISTEN، RECV و غیره) امکان میدهد در برخی پلتفرمها (به جز BSD) به هر دو نسخه سرویس دهند.
- --statistics
- -S
- پیش از
خاتمه
یافتن socat،
آمار
انتقال
(شمارندههای
بایتها و
بلوکها
برای هر دو
جهت) را در
لاگ ثبت
میکند.
همچنین سیگنال USR1 را ببینید.
این قابلیت آزمایشی است و ممکن است در نسخههای بعدی تغییر کند.
مشخصات آدرسها (ADDRESS SPECIFICATIONS)
با استفاده از آرگومانهای آدرس در خط فرمان، کاربر دستورالعملها و اطلاعات لازم را برای برقراری جریانهای بایت به socat ارائه میدهد.
یک مشخصه آدرس معمولاً شامل یک کلمه کلیدی نوع آدرس، صفر یا چند پارامتر آدرس الزامی که با ’:’ از کلمه کلیدی و از یکدیگر جدا میشوند، و صفر یا چند گزینه آدرس جداشده با ’,’ است.
کلمه کلیدی نوع آدرس را مشخص میکند (مانند TCP4، OPEN، EXEC). برای برخی کلمات کلیدی، مترادفهایی وجود دارد (’-’ برای STDIO، و TCP برای TCP4). کلمات کلیدی به حروف بزرگ و کوچک حساس نیستند. برای تعداد اندکی از انواع آدرسهای خاص، کلمه کلیدی ممکن است حذف شود: مشخصات آدرسی که با یک عدد آغاز میشوند، آدرسهای FD (توصیفکننده فایل خام) فرض میشوند؛ اگر پیش از نخستین ’:’ یا ’,’ یک ’/’ یافت شود، GOPEN (باز کردن فایل عمومی) فرض میگردد.
تعداد و نوع پارامترهای آدرس مورد نیاز به نوع آدرس بستگی دارد. برای نمونه، TCP4 به یک مشخصه سرور (نام یا آدرس)، و یک مشخصه درگاه (شماره پورت یا نام سرویس) نیاز دارد.
صفر یا چند گزینه آدرس ممکن است با هر آدرس داده شود. آنها به روشهایی بر آدرس تأثیر میگذارند. گزینهها شامل یک کلمه کلیدی گزینه یا یک کلمه کلیدی گزینه و یک مقدار هستند که با ’=’ از یکدیگر جدا میشوند. کلمات کلیدی گزینهها به حروف بزرگ و کوچک حساس نیستند. برای پالایش گزینههایی که با یک نوع آدرس سودمند هستند، هر گزینه عضو یک گروه گزینه است. برای هر نوع آدرس مجموعهای از گروههای گزینه مجاز تعیین شده است. تنها گزینههای متعلق به یکی از این گروههای آدرس ممکن است استفاده شوند (مگر با گزینه -g).
مشخصات آدرسی که از طرح فوق پیروی میکنند، مشخصات آدرس تکی (single) نیز نامیده میشوند. دو آدرس تکی را میتوان با "!!" ترکیب کرد تا یک آدرس از نوع دوگانه (dual) برای یک کانال تشکیل شود. در اینجا، آدرس نخست توسط socat برای خواندن دادهها و آدرس دوم برای نوشتن دادهها استفاده میشود. هیچ راهی برای تعیین یک گزینه تنها برای یک بار وجود ندارد تا بر هر دو آدرس تکی اعمال شود.
معمولاً آدرسها در حالت خواندن/نوشتن باز میشوند. هنگامی که یک آدرس بخشی از یک مشخصه آدرس دوگانه است، یا زمانی که گزینه -u یا -U استفاده میشود، ممکن است یک آدرس تنها برای خواندن یا برای نوشتن استفاده شود. در نظر گرفتن این نکته در برخی انواع آدرسها حائز اهمیت است.
با نسخه 1.5.0 و بالاتر socat، تحلیل لغوی تلاش میکند نقلقولها و پرانتزها را به طور معناداری مدیریت کرده و اجازه گریز دادن نویسههای خاص را میدهد. اگر یکی از نویسههای ( { [ ’ یافت شود، نویسه بسته متناظر آن - ) } ] ’ - جستجو میشود؛ آنها ممکن است تودرتو نیز باشند. در داخل این ساختارها، نویسهها و رشتههای خاص socat مانند : ، , ، !! به طور ویژه پردازش نمیشوند. تمام آن نویسهها و رشتهها را میتوان با \ یا در درون "" گریز (escape) داد.
انواع آدرسها (ADDRESS TYPES)
این بخش انواع آدرسهای موجود را همراه با کلیدواژهها، پارامترها و مفاهیم آنها شرح میدهد.
- CREATE:<filename>
- فایل <filename> را
با creat() باز
کرده و از
توصیفگر
فایل برای
نوشتن
استفاده
میکند. این
یک آدرس
فقطنوشتنی
(write-only) است زیرا
فایلی که با
creat باز
شده باشد
قابل
خواندن
نیست. به
گزینههای
-u و -U و
آدرسهای
دوگانه
مراجعه
کنید.
فلگهایی مانند O_LARGEFILE را نمیتوان اعمال کرد. اگر به آنها نیاز دارید از OPEN همراه با گزینههای create,create استفاده کنید.
<filename> باید یک مسیر معتبر موجود یا ناموجود باشد. اگر <filename> یک لوله نامگذاریشده (named pipe) باشد، ممکن است creat() مسدود شود؛ اگر <filename> به یک سوکت اشاره کند، این یک خطا است.
گروههای گزینه: FD,REG,NAMED
گزینههای کاربردی: mode, mode, user, group, unlink-early, unlink-late, append
همچنین ببینید: OPEN, GOPEN - DCCP-CONNECT:<host>:<port> (DCCP:<host>:<port>)
- یک اتصال DCCP
به <host> [آدرس IP]
و <port> [سرویس DCCP]
مشخصشده
با استفاده
از نسخه ۴
یا ۶ پروتکل
IP بسته به
مشخصات
آدرس،
تحلیل نام،
یا گزینه pf
برقرار
میکند.
گروههای گزینه: FD,SOCKET,IP4,IP6,SCTP,CHILD,RETRY
گزینههای کاربردی: bind, connect-timeout, tos, dccp-set-ccid, nonblock, sourceport, retry, readbytes
همچنین ببینید: DCCP4-CONNECT, DCCP6-CONNECT, DCCP-LISTEN, TCP-CONNECT SCTP-CONNECT - DCCP4-CONNECT:<host>:<port> (DCCP4:<host>:<port>)
- مشابه DCCP-CONNECT،
اما فقط از
پروتکل IPv4
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP4,DCCP,CHILD,RETRY
- DCCP6-CONNECT:<host>:<port> (DCCP6:<host>:<port>)
- مشابه DCCP-CONNECT،
اما فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP6,DCCP,CHILD,RETRY - DCCP-LISTEN:<port> (DCCP-L:<port>)
- روی <port>
[سرویس DCCP] گوش
فرا میدهد
و یک اتصال DCCP
را
میپذیرد.
نسخه IP
برابر با ۴
یا نسخه
مشخصشده
با گزینه
آدرس pf،
گزینه socat (-4, -6)،
یا متغیر
محیطی SOCAT_DEFAULT_LISTEN_IP
است. توجه
داشته
باشید که
باز کردن
این آدرس
معمولاً تا
زمان اتصال
یک کلاینت
مسدود
میشود.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,DCCP,RETRY
گزینههای کاربردی: fork, bind, range, max-children, backlog, accept-timeout, dccp-set-sid, su, reuseaddr, retry
همچنین ببینید: DCCP4-LISTEN, DCCP6-LISTEN, TCP-LISTEN, SCTP-LISTEN, DCCP-CONNECT - DCCP4-LISTEN:<port> (DCCP4-L:<port>)
- مشابه DCCP-LISTEN،
اما فقط از
پروتکل IPv4
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,DCCP,RETRY
- DCCP6-LISTEN:<port> (DCCP6-L:<port>)
- مشابه DCCP-LISTEN،
اما فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP6,DCCP,RETRY - EXEC:<command-line>
- یک
زیرفرآیند
منشعب
میکند که
با فرآیند
والد خود
ارتباط
برقرار
کرده و
برنامه
مشخصشده
را با execvp()
فراخوانی
مینماید.
<command-line> یک
دستور ساده
با
آرگومانهایی
است که با
تکفاصله
از هم جدا
شدهاند.
اگر نام
برنامه
شامل ’/’
باشد، بخش
پس از آخرین
’/’ به
عنوان ARGV[0] در
نظر گرفته
میشود. اگر
نام برنامه
یک مسیر
نسبی باشد،
قواعد execvp()
برای یافتن
برنامه از
طریق $PATH
اعمال
میشود. پس
از شروع
موفقیتآمیز
برنامه، socat
دادهها را
به stdin فرآیند
نوشته و از stdout
آن به صورت
پیشفرض با
استفاده از
یک سوکت
دامنه
یونیکس
ایجادشده
توسط socketpair()
میخواند.
(مثال)
گروههای گزینه: FD,SOCKET,EXEC,FORK,TERMIOS
گزینههای کاربردی: path, fdin, fdout, chroot, su, su-d, nofork, socktype, pty, stderr, ctty, setsid, pipes, umask, login, sigint, sigquit, netns
همچنین ببینید: SYSTEM,SHELL - FD:<fdnum>
- از
توصیفگر
فایل <fdnum>
استفاده
میکند. این
توصیفگر
باید از قبل
به عنوان یک
توصیفگر
فایل معتبر
در یونیکس (UN*X)
وجود داشته
باشد.
گروههای گزینه: FD (TERMIOS,REG,SOCKET)
همچنین ببینید: STDIO, STDIN, STDOUT, STDERR - GOPEN:<filename>
- (باز کردن
عمومی یا Generic open)
این نوع
آدرس تلاش
میکند با
هر ورودی
فایلسیستم
به جز
دایرکتوریها
به شکلی
سودمند
رفتار کند.
<filename>
میتواند
یک مسیر
نسبی یا
مطلق باشد.
اگر از قبل
وجود داشته
باشد، نوع
آن بررسی
میشود. در
صورت وجود
سوکت دامنه
یونیکس، socat
متصل
میشود؛
اگر اتصال
ناموفق
باشد، socat
سوکت را از
نوع
دیتاگرام
فرض کرده و
از
فراخوانیهای
sendto()
استفاده
میکند. اگر
ورودی سوکت
نباشد، socat
آن را با
اعمال فلگ
O_APPEND باز
میکند. اگر
وجود
نداشته
باشد، با
فلگ O_CREAT به
عنوان یک
فایل
معمولی باز
میشود
(مثال).
گروههای گزینه: FD,REG,SOCKET,NAMED,OPEN
همچنین ببینید: OPEN, CREATE, UNIX-CONNECT - IP-SENDTO:<host>:<protocol>
- یک سوکت خام
IP باز
میکند.
بسته به
مشخصات
میزبان یا
گزینه pf، از
پروتکل IP
نسخه ۴ یا ۶
استفاده
میشود. این
آدرس از <protocol>
برای ارسال
بستهها به
<host> [آدرس IP]
استفاده
کرده و
بستهها را
از میزبان
دریافت
میکند و
بستههای
دریافتی از
سایر
میزبانها
را نادیده
میگیرد.
پروتکل ۲۵۵
از سوکت خام
به گونهای
استفاده
میکند که
سربرگ IP
بخشی از
دادهها
باشد.
گروههای گزینه: FD,SOCKET,IP4,IP6
گزینههای کاربردی: pf, ttl
همچنین ببینید: IP4-SENDTO, IP6-SENDTO, IP-RECVFROM, IP-RECV, UDP-SENDTO, UNIX-SENDTO - INTERFACE:<interface>
- با استفاده
از
بستههای
خام حاوی
دادههای
لایه پیوند
(link level)، با یک
شبکه متصل
به یک رابط
ارتباط
برقرار
میکند. <interface>
نام رابط
شبکه است.
در حال حاضر
فقط روی
لینوکس در
دسترس است.
گروههای گزینه: FD,SOCKET
گزینههای کاربردی: pf, type
همچنین ببینید: ip-recv - IP4-SENDTO:<host>:<protocol>
- مشابه IP-SENDTO،
اما همیشه
از IPv4
استفاده
میکند.
گروههای گزینه: FD,SOCKET,IP4
- IP6-SENDTO:<host>:<protocol>
- مشابه IP-SENDTO،
اما همیشه
از IPv6
استفاده
میکند.
گروههای گزینه: FD,SOCKET,IP6 - IP-DATAGRAM:<address>:<protocol>
- دادههای
خروجی را به
آدرس
مشخصشده
ارسال
میکند که
بهویژه
میتواند
یک آدرس پخش
همگانی (broadcast)
یا چندپخشی
(multicast) باشد.
بستههای
ورودی به
سوکت محلی
بررسی
میشوند تا
مشخص شود
آیا آدرس
مبدأ آنها
با
گزینههای
RANGE یا TCPWRAP تطابق
دارد یا
خیر. این
نوع آدرس
میتواند
برای مثال
برای
پیادهسازی
ارتباطات
متقارن یا
نامتقارن
پخش همگانی
یا چندپخشی
استفاده
شود.
گروههای گزینه: FD, SOCKET, IP4, IP6, RANGE
گزینههای کاربردی: bind, range, tcpwrap, broadcast, ip-multicast-loop, ip-multicast-ttl, ip-multicast-if, ip-add-membership, ip-add-source-membership, ipv6-join-group, ipv6-join-source-group, ttl, tos, pf
همچنین ببینید: IP4-DATAGRAM, IP6-DATAGRAM, IP-SENDTO, IP-RECVFROM, IP-RECV, UDP-DATAGRAM - IP4-DATAGRAM:<host>:<protocol>
- مشابه IP-DATAGRAM،
اما همیشه
از IPv4
استفاده
میکند.
(مثال)
گروههای گزینه: FD,SOCKET,IP4,RANGE
- IP6-DATAGRAM:<host>:<protocol>
- مشابه IP-DATAGRAM،
اما همیشه
از IPv6
استفاده
میکند.
لطفاً توجه
داشته
باشید که IPv6
پخش همگانی
(broadcast) ندارد.
گروههای گزینه: FD,SOCKET,IP6,RANGE - IP-RECVFROM:<protocol>
- یک سوکت خام
IP از <protocol> باز
میکند.
بسته به
گزینه pf، از
پروتکل IP
نسخه ۴ یا ۶
استفاده
میشود. یک
بسته را از
یک همتای
نامشخص
دریافت
کرده و ممکن
است یک یا
چند بسته
پاسخ به آن
همتا ارسال
نماید. این
حالت
بهویژه با
گزینه fork
سودمند است
که در آن هر
بسته
دریافتی -
از همتاهای
دلخواه -
توسط
زیرفرآیند
خودش
مدیریت
میشود. این
امر رفتاری
مشابه با
سرورهای
متداول
مبتنی بر UDP
مانند ntpd یا named
را فراهم
میسازد.
لطفاً توجه داشته باشید که در صورت یکسان بودن آدرس IP فرستنده و گیرنده، بستههای پاسخ ممکن است به عنوان ترافیک ورودی دریافت شوند زیرا شماره پورتی برای تمایز سوکتها وجود ندارد.
این آدرس به خوبی با همتاهای آدرس IP-SENDTO کار میکند (به بالا مراجعه کنید). پروتکل ۲۵۵ از سوکت خام با قرار گرفتن سربرگ IP به عنوان بخشی از دادهها استفاده میکند.
یادداشت مربوط به آدرسهای RECVFROM را ببینید.
گروههای گزینه: FD,SOCKET,IP4,IP6,CHILD,RANGE
گزینههای کاربردی: pf, fork, range, ttl, broadcast
همچنین ببینید: IP4-RECVFROM, IP6-RECVFROM, IP-SENDTO, IP-RECV, UDP-RECVFROM, UNIX-RECVFROM - IP4-RECVFROM:<protocol>
- مشابه IP-RECVFROM،
اما همیشه
از IPv4
استفاده
میکند.
گروههای گزینه: FD,SOCKET,IP4,CHILD,RANGE
- IP6-RECVFROM:<protocol>
- مشابه IP-RECVFROM،
اما همیشه
از IPv6
استفاده
میکند.
گروههای گزینه: FD,SOCKET,IP6,CHILD,RANGE - IP-RECV:<protocol>
- یک سوکت خام
IP از <protocol> باز
میکند.
بسته به
گزینه pf، از
پروتکل IP
نسخه ۴ یا ۶
استفاده
میشود.
بستهها را
از چندین
همتای
نامشخص
دریافت
کرده و
دادهها را
ادغام
میکند. هیچ
پاسخی
امکانپذیر
نیست، این
یک آدرس
فقطخواندنی
است، به
گزینههای
-u و -U و
آدرسهای
دوگانه
مراجعه
کنید. این
آدرس
میتواند
مثلاً توسط
همتاهای
آدرس socat IP-SENDTO
مخاطب قرار
گیرد.
پروتکل ۲۵۵
از سوکت خام
با قرار
گرفتن
سربرگ IP به
عنوان بخشی
از دادهها
استفاده
میکند.
گروههای گزینه: FD,SOCKET,IP4,IP6,RANGE
گزینههای کاربردی: pf, range
همچنین ببینید: IP4-RECV, IP6-RECV, IP-SENDTO, IP-RECVFROM, UDP-RECV, UNIX-RECV - IP4-RECV:<protocol>
- مشابه IP-RECV،
اما همیشه
از IPv4
استفاده
میکند.
گروههای گزینه: FD,SOCKET,IP4,RANGE
- IP6-RECV:<protocol>
- مشابه IP-RECV،
اما همیشه
از IPv6
استفاده
میکند.
گروههای گزینه: FD,SOCKET,IP6,RANGE - OPEN:<filename>
- با استفاده
از
فراخوانی
سیستمی
open() فایل
<filename> را باز
میکند
(مثال). این
عملیات روی
سوکتهای
دامنه
یونیکس با
شکست مواجه
میشود.
توجه: این نوع آدرس در حالت دوطرفه بهندرت کاربرد دارد.
گروههای گزینه: FD,REG,NAMED,OPEN
گزینههای کاربردی: creat, excl, noatime, nofollow, append, rdonly, wronly, lock, readbytes, ignoreeof
همچنین ببینید: CREATE, GOPEN, UNIX-CONNECT - OPENSSL:<host>:<port>
- تلاش
میکند یک
اتصال SSL به <port>
[سرویس TCP] روی
<host> [آدرس IP] با
استفاده از
TCP/IP نسخه ۴ یا ۶
بسته به
مشخصات
آدرس،
تحلیل نام،
یا گزینه pf
برقرار
نماید.
توجه: تا نسخه 1.7.2.4 گواهی سرور فقط از نظر اعتبار در برابر مخزن گواهی سیستم یا cafile یا capath بررسی میشد، اما با نام سرور یا آدرس IP آن تطبیق داده نمیشد. از نسخه 1.7.3.0 به بعد socat گواهی همتا را برای تطابق با پارامتر <host> یا مقدار گزینه openssl-commonname بررسی میکند. دستور Socat تلاش میکند آن را با commonName در subject گواهی، و نامهای DNS در افزونه subjectAltName گواهی تطبیق دهد. کاراکترهای عام (Wildcard) در گواهی پشتیبانی میشوند.
گروههای گزینه: FD,SOCKET,IP4,IP6,TCP,OPENSSL,RETRY
گزینههای کاربردی: min-proto-version, cipher, verify, commonname, cafile, capath, certificate, key, compress, bind, pf, connect-timeout, sourceport, retry
همچنین ببینید: OPENSSL-LISTEN, TCP - OPENSSL-LISTEN:<port>
- روی <port> در tcp
[سرویس TCP] گوش
فرا میدهد.
نسخه IP
برابر با ۴
یا نسخه
مشخصشده
با pf است.
هنگامی که
یک اتصال
پذیرفته
شود، این
آدرس مانند
سرور SSL عمل
میکند.
توجه: احتمالاً میخواهید از گزینه certificate با این آدرس استفاده کنید.
نکته: گواهی کلاینت فقط از نظر اعتبار در برابر cafile یا capath بررسی میشود، اما برای تطابق با نام کلاینت یا آدرس IP آن بررسی نمیگردد!
گروههای گزینه: FD,SOCKET,IP4,IP6,TCP,LISTEN,OPENSSL,CHILD,RANGE,RETRY
گزینههای کاربردی: pf, min-proto-version, cipher, verify, commonname, cafile, capath, certificate, key, compress, fork, bind, range, tcpwrap, su, reuseaddr, retry
همچنین ببینید: OPENSSL, TCP-LISTEN - OPENSSL-DTLS-CLIENT:<host>:<port>
- تلاش
میکند یک
اتصال DTLS به
<port> [سرویس UDP]
روی <host> [آدرس
IP] با
استفاده از
UDP/IP نسخه ۴ یا ۶
بسته به
مشخصات
آدرس،
تحلیل نام،
یا گزینه pf
برقرار کند.
دستور Socat فیلدهای subjectAltName یا commonName در گواهی همتا را با گزینه openssl-commonname آدرسها یا نام میزبان تطبیق میدهد. کاراکترهای عام (Wildcard) در گواهی پشتیبانی میشوند.
از گزینه -b در socat استفاده کنید تا دیتاگرامها به اندازه کافی کوچک باشند تا با احتساب سربار در شبکه جا شوند. از گزینه -T برای جلوگیری از معلق ماندن نامحدود در صورت قطع خاموش و بیصدای همتا استفاده کنید.
گروههای گزینه: FD,SOCKET,IP4,IP6,OPENSSL,RETRY
گزینههای کاربردی: min-proto-version, cipher, verify, commonname, cafile, capath, certificate, key, compress, bind, pf, sourceport, retry, rcvtimeo
همچنین ببینید: OPENSSL-DTLS-SERVER, OPENSSL-CONNECT, UDP-CONNECT - OPENSSL-DTLS-SERVER:<port>
- روی <port> در UDP
[سرویس UDP] گوش
فرا میدهد.
نسخه IP
برابر با ۴
یا نسخه
مشخصشده
با pf است.
هنگامی که
یک اتصال
پذیرفته
شود، این
آدرس مانند
سرور DTLS عمل
میکند.
توجه: احتمالاً میخواهید از گزینه certificate با این آدرس استفاده کنید.
نکته: گواهی کلاینت فقط از نظر اعتبار در برابر cafile یا capath بررسی میشود، اما برای تطابق با نام کلاینت یا آدرس IP آن بررسی نمیگردد! از گزینه -b در socat استفاده کنید تا دیتاگرامها به همراه سربار به اندازه کافی کوچک باشند تا در شبکه جا شوند. از گزینه -T برای جلوگیری از معلق ماندن نامحدود در صورت قطع خاموش و بیصدای همتا استفاده کنید.
گروههای گزینه: FD,SOCKET,IP4,IP6,LISTEN,OPENSSL,CHILD,RANGE,RETRY
گزینههای کاربردی: pf, min-proto-version, cipher, verify, commonname, cafile, capath, certificate, key, compress, fork, bind, range, tcpwrap, su, reuseaddr, retry
rcvtimeo
همچنین ببینید: OPENSSL-DTLS-CLIENT, OPENSSL-LISTEN, UDP-LISTEN - PIPE:<filename>
- اگر <filename> از
قبل موجود
باشد، باز
میشود. اگر
وجود
نداشته
باشد، یک
لوله
نامگذاریشده
ایجاد و باز
میگردد. از
نسخه 1.4.3 در socat
به بعد،
لوله
نامگذاریشده
هنگام بسته
شدن آدرس
حذف میشود
(اما به
گزینه unlink-close
مراجعه
کنید).
توجه: هنگامی که یک لوله هم برای خواندن و هم برای نوشتن استفاده شود، مانند یک سرویس اکو (پژواک) عمل میکند.
توجه: هنگامی که یک لوله برای هر دوی خواندن و نوشتن استفاده شود، و socat سعی کند بایتهای بیشتری از ظرفیت بافر لوله بنویسد (در لینوکس 2.4: ۲۰۴۸ بایت)، ممکن است socat مسدود شود. استفاده از گزینه socat، به عنوان مثال -b 2048 را مد نظر قرار دهید.
گروههای گزینه: FD,NAMED,OPEN
گزینههای کاربردی: rdonly, nonblock, group, user, mode, unlink-early
همچنین ببینید: unnamed pipe - PIPE
- یک لوله
بینام (unnamed pipe)
ایجاد کرده
و از آن
برای
خواندن و
نوشتن
استفاده
میکند. این
آدرس مانند
یک اکو عمل
میکند،
زیرا هر
آنچه در آن
نوشته شود
بلافاصله
به عنوان
داده
خواندهشده
ظاهر
میگردد.
توجه: هنگامی که socat سعی کند بایتهای بیشتری از ظرفیت صف لوله بنویسد (در لینوکس 2.4: ۲۰۴۸ بایت)، ممکن است socat مسدود شود. به عنوان مثال، استفاده از گزینه -b 2048 را در نظر داشته باشید.
گروههای گزینه: FD
همچنین ببینید: named pipe, SOCKETPAIR - SOCKETPAIR
- یک
جفتسوکت
(socketpair) ایجاد
کرده و از
آن برای
خواندن و
نوشتن
استفاده
میکند. این
آدرس مانند
یک اکو عمل
میکند،
زیرا هر
آنچه در آن
نوشته شود
بلافاصله
به عنوان
داده
خواندهشده
ظاهر
میگردد.
نوع سوکت
پیشفرض
دیتاگرام
است،
بنابراین
مرزهای
بستهها
حفظ میشود.
گروههای گزینه: FD
گزینههای کاربردی: socktype
همچنین ببینید: unnamed pipe - POSIXMQ-READ:/<mqueue>
- صف پیام POSIX
مشخصشده
را باز کرده
یا ایجاد
میکند و
پیامها
(بستهها)
را
میخواند.
این آدرس
مرزهای
بستهها را
حفظ
مینماید.
این یک آدرس فقطخواندنی است، به گزینههای -u و -U و آدرسهای دوگانه مراجعه کنید.
دستور Socat این نوع آدرس را تنها روی لینوکس ارائه میدهد زیرا در آنجا POSIX MQ مبتنی بر توصیفگرهای فایل یونیکس است.
گزینههای کاربردی: posixmq-priority, unlink-early, unlink-close, o-nonblock, o-creat, o-excl, umask - POSIXMQ-RECEIVE:/<mqueue>
- POSIXMQ-RECV:/<mqueue>
- صف پیام POSIX
مشخصشده
را باز کرده
یا ایجاد
میکند و یک
پیام (بسته)
را
میخواند.
این یک آدرس فقطخواندنی است. برای اطلاعات بیشتر POSIXMQ-READ را ببینید.
مثال: POSIX MQ recv with fork
گزینههای کاربردی: posixmq-priority, fork, max-children, unlink-early, unlink-close, o-creat, o-excl, umask - POSIXMQ-SEND:/<mqueue>
- صف پیام POSIX
مشخصشده
را باز کرده
یا ایجاد
میکند و
پیامها
(بستهها)
را
مینویسد.
این یک آدرس فقطنوشتنی است. برای اطلاعات بیشتر POSIXMQ-READ را ببینید.
(مثال)
گزینههای کاربردی: posixmq-priority, posixmq-flush, fork, max-children, unlink-early, unlink-close, o-creat, o-excl, umask - POSIXMQ-WRITE:/<mqueue>
- همان کار POSIXMQ-SEND را انجام میدهد.
- POSIXMQ-BIDIRECTIONAL:/mqueue
- POSIXMQ:/mqueue
- صف پیام POSIX
مشخصشده
را بسته به
زمینه در
حالت
خواندن و/یا
نوشتن باز
کرده یا
ایجاد
مینماید،
سپس
پیامها
(بستهها)
را
میخواند
و/یا
مینویسد.
در حالت
دوطرفه این
فقط یک
سرویس اکوی
دیگر است.
برای اطلاعات بیشتر POSIXMQ-READ و POSIXMQ-SEND را ببینید. - PROXY:<proxy>:<hostname>:<port>
- با استفاده
از TCP/IP نسخه ۴
یا ۶ بسته
به مشخصات
آدرس،
تحلیل نام،
یا گزینه pf
به یک سرور
پروکسی HTTP
روی پورت
۸۰۸۰ متصل
میشود و یک
درخواست CONNECT
برای hostname:port
ارسال
میکند. اگر
پروکسی
اجازه
دسترسی
داده و
اتصال به
مقصد با
موفقیت
برقرار
شود،
انتقال
داده بین socat و
مقصد
میتواند
آغاز شود
(مثال). توجه
داشته
باشید که
ترافیک
لزوماً
نباید HTTP
باشد بلکه
میتواند
هر پروتکل
دلخواهی
باشد.
گروههای گزینه: FD,SOCKET,IP4,IP6,TCP,HTTP,RETRY
گزینههای کاربردی: proxyport, ignorecr, proxyauth, resolve, crnl, bind, connect-timeout, mss, sourceport, retry
همچنین ببینید: SOCKS, TCP - PTY
- یک
شبهترمینال
(pty) ایجاد
کرده و از
سمت master (اصلی)
آن استفاده
میکند.
فرآیند
دیگر
میتواند
سمت slave (فرعی) pty
را باز کرده
و همانند یک
خط سریال یا
ترمینال از
آن استفاده
کند. (مثال).
اگر هر دو
سازوکار ptmx و
openpty در دسترس
باشند، از ptmx
استفاده
میشود (POSIX).
گروههای گزینه: FD,NAMED,PTY,TERMIOS
گزینههای کاربردی: link, openpty, wait-slave, mode, user, group
همچنین ببینید: UNIX-LISTEN, PIPE, EXEC, SYSTEM, SHELL - READLINE
- خطوط (مثال).
میتوانید به جای آن از STDIO استفاده کنید. - SCTP-CONNECT:<host>:<port>
- یک اتصال
جریانی (stream) با
پروتکل SCTP به
<host> [آدرس IP] و <port>
[سرویس TCP]
مشخصشده
با استفاده
از IP نسخه ۴
یا ۶ بسته
به مشخصات
آدرس،
تحلیل نام،
یا گزینه pf
برقرار
میکند.
گروههای گزینه: FD,SOCKET,IP4,IP6,SCTP,CHILD,RETRY
گزینههای کاربردی: bind, pf, connect-timeout, tos, mtudiscover, sctp-maxseg, sctp-nodelay, nonblock, sourceport, retry, readbytes
همچنین ببینید: SCTP4-CONNECT, SCTP6-CONNECT, SCTP-LISTEN, TCP-CONNECT - SCTP4-CONNECT:<host>:<port>
- مشابه SCTP-CONNECT،
اما فقط از
پروتکل IPv4
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP4,SCTP,CHILD,RETRY
- SCTP6-CONNECT:<host>:<port>
- مشابه SCTP-CONNECT،
اما فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP6,SCTP,CHILD,RETRY
- SCTP-LISTEN:<port>
- روی <port>
[سرویس TCP] گوش
فرا میدهد
و یک اتصال SCTP
را
میپذیرد.
نسخه IP
برابر با ۴
یا نسخه
مشخصشده
با گزینه
آدرس pf،
گزینه socat (-4, -6)،
یا متغیر
محیطی SOCAT_DEFAULT_LISTEN_IP
است. توجه
داشته
باشید که
باز کردن
این آدرس
معمولاً تا
زمان اتصال
یک کلاینت
مسدود
میشود.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,SCTP,RETRY
گزینههای کاربردی: crnl, fork, bind, range, tcpwrap, pf, max-children, backlog, accept-timeout, sctp-maxseg, sctp-nodelay, su, reuseaddr, retry
همچنین ببینید: SCTP4-LISTEN, SCTP6-LISTEN, TCP-LISTEN, SCTP-CONNECT - SCTP4-LISTEN:<port>
- مشابه SCTP-LISTEN،
اما فقط از
پروتکل IPv4
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,SCTP,RETRY
- SCTP6-LISTEN:<port>
- مشابه SCTP-LISTEN،
اما فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP6,SCTP,RETRY - SOCKET-CONNECT:<domain>:<protocol>:<remote-address>
- با استفاده
از پارامتر
اول و دوم
ارائهشده
برای سوکت و
SOCK_STREAM
(راهنمای man
صفحه socket(2) را
ببینید) یک
سوکت
جریانی
ایجاد کرده
و به remote-address متصل
میشود. دو
پارامتر
سوکت باید
به وسیله
اعداد صحیح
(int) مشخص شوند.
برای یافتن
مقادیر
مناسب به
مستندات و
فایلهای
هدر
سیستمعامل
خود مراجعه
کنید. مقدار
remote-address باید
نمایش
دادهای از
ساختار sockaddr
بدون
مؤلفههای
sa_family و sa_len (در BSD)
باشد.
لطفاً توجه داشته باشید که علاوه بر گزینههای گروههای مشخصشده، هنگامی که گزینه -g در socat را اعمال میکنید میتوانید از گزینههای پروتکلهای سطح بالاتر نیز استفاده نمایید.
گروههای گزینه: FD,SOCKET,CHILD,RETRY
گزینههای کاربردی: bind, setsockopt,
همچنین ببینید: TCP, UDP-CONNECT, UNIX-CONNECT, SOCKET-LISTEN, SOCKET-SENDTO - SOCKET-DATAGRAM:<domain>:<type>:<protocol>:<remote-address>
- با استفاده
از سه
پارامتر
اول
ارائهشده
برای سوکت
(راهنمای man
صفحه socket(2) را
ببینید) یک
سوکت
دیتاگرام
ایجاد کرده
و دادههای
خروجی را به
remote-address ارسال
میکند. این
سه پارامتر
سوکت باید
با اعداد
صحیح (int) مشخص
شوند. برای
یافتن
مقادیر
مناسب به
مستندات و
فایلهای
هدر
سیستمعامل
خود مراجعه
کنید. مقدار
remote-address باید
نمایش
دادهای از
ساختار sockaddr
بدون
مؤلفههای
sa_family و sa_len (در BSD)
باشد.
لطفاً توجه داشته باشید که علاوه بر گزینههای گروههای مشخصشده، هنگامی که گزینه -g در socat را اعمال میکنید میتوانید از گزینههای پروتکلهای سطح بالاتر نیز استفاده نمایید.
گروههای گزینه: FD,SOCKET,RANGE
گزینههای کاربردی: bind, range, setsockopt,
همچنین ببینید: UDP-DATAGRAM, IP-DATAGRAM, SOCKET-SENDTO, SOCKET-RECV, SOCKET-RECVFROM - SOCKET-LISTEN:<domain>:<protocol>:<local-address>
- یک سوکت
استریم با
استفاده از
پارامترهای
اول و دوم
ارائهشده
برای سوکت و
SOCK_STREAM (به socket(2)
مراجعه
کنید) ایجاد
کرده و برای
اتصالات
ورودی روی
local-address منتظر
میماند. دو
پارامتر
سوکت باید
با اعداد int
مشخص شوند.
برای یافتن
مقادیر
مناسب به
مستندات
سیستمعامل
و فایلهای
include خود
مراجعه
کنید. مقدار
local-address باید
نمایش
دادهای از
یک ساختار sockaddr
بدون
مولفههای
sa_family و (در BSD) sa_len
باشد.
لطفاً توجه داشته باشید که علاوه بر گزینههای گروههای مشخصشده، در صورت استفاده از گزینه -g در socat، میتوانید از گزینههای پروتکلهای سطح بالاتر نیز استفاده کنید.
گروههای گزینه: FD,SOCKET,LISTEN,RANGE,CHILD,RETRY
گزینههای کاربردی: setsockopt, setsockopt-listen,
همچنین ببینید: TCP, UDP-CONNECT, UNIX-CONNECT, SOCKET-LISTEN, SOCKET-SENDTO, SOCKET-SENDTO - SOCKET-RECV:<domain>:<type>:<protocol>:<local-address>
- یک سوکت با
استفاده از
سه پارامتر
ارائهشده
برای سوکت
(به socket(2)
مراجعه
کنید) ایجاد
کرده و آن
را به <local-address>
متصل (bind)
میکند.
دادههای
ورودی را
دریافت
میکند. این
سه پارامتر
باید با
اعداد int
مشخص شوند.
برای یافتن
مقادیر
مناسب به
مستندات
سیستمعامل
و فایلهای
include مراجعه
کنید. مقدار
local-address باید
نمایش
دادهای از
یک ساختار sockaddr
بدون
مولفههای
sa_family و (در BSD) sa_len
باشد.
گروههای گزینه: FD,SOCKET,RANGE
گزینههای کاربردی: range, setsockopt, setsockopt-listen
همچنین ببینید: UDP-RECV, IP-RECV, UNIX-RECV, SOCKET-DATAGRAM, SOCKET-SENDTO, SOCKET-RECVFROM - SOCKET-RECVFROM:<domain>:<type>:<protocol>:<local-address>
- یک سوکت با
استفاده از
سه پارامتر
ارائهشده
برای سوکت
(به socket(2)
مراجعه
کنید) ایجاد
کرده و آن
را به <local-address>
متصل
میکند.
دادههای
دریافتی را
تحویل
گرفته و
پاسخها را
برای
فرستنده
ارسال
میکند. سه
پارامتر
اول باید به
صورت اعداد
int مشخص شوند.
برای یافتن
مقادیر
مناسب به
مستندات
سیستمعامل
و فایلهای
include مراجعه
کنید. مقدار
local-address باید
نمایش
دادهای از
ساختار sockaddr
بدون
مولفههای
sa_family و (در BSD) sa_len
باشد.
یادداشت مربوط به آدرسهای RECVFROM را ببینید.
گروههای گزینه: FD,SOCKET,CHILD,RANGE
گزینههای کاربردی: fork, range, setsockopt, setsockopt-listen
همچنین ببینید: UDP-RECVFROM, IP-RECVFROM, UNIX-RECVFROM, SOCKET-DATAGRAM, SOCKET-SENDTO, SOCKET-RECV - SOCKET-SENDTO:<domain>:<type>:<protocol>:<remote-address>
- یک سوکت با
استفاده از
سه پارامتر
ارائهشده
برای سوکت
(به socket(2)
مراجعه
کنید) ایجاد
میکند.
دادههای
خروجی را به
آدرس
ارائهشده
ارسال کرده
و پاسخها
را دریافت
مینماید.
این سه
پارامتر
باید به
صورت اعداد
int مشخص شوند.
برای یافتن
مقادیر
مناسب به
مستندات
سیستمعامل
و فایلهای
include مراجعه
کنید. مقدار
remote-address باید
نمایش
دادهای از
ساختار sockaddr
بدون
مولفههای
sa_family و (در BSD) sa_len
باشد.
گروههای گزینه: FD,SOCKET
گزینههای کاربردی: bind, setsockopt, setsockopt-listen
همچنین ببینید: UDP-SENDTO, IP-SENDTO, UNIX-SENDTO, SOCKET-DATAGRAM, SOCKET-RECV SOCKET-RECVFROM - ACCEPT-FD:<fdnum>
- انتظار یک
سوکت در حال
شنود را در
<fdnum> دارد و یک
یا (با
گزینه fork) چند
اتصال را
میپذیرد.
این نوع
آدرس تحت
کنترل systemd با
"حالت inetd"
مفید است.
مثال: (example)
گروههای گزینه: FD, SOCKET, TCP, CHILD, RETRY
گزینههای کاربردی: fork, range, sourceport, lowport, tcpwrap - SOCKS4:<socks-server>:<host>:<port>
- از طریق <socks-server>
[آدرس IP] به <host>
[آدرس IPv4] روی
<port> [سرویس TCP]،
با استفاده
از پروتکل socks
نسخه ۴ روی IP
نسخه ۴ یا ۶
بسته به
مشخصات
آدرس،
تحلیل نام
یا گزینه pf
متصل
میشود
(مثال).
گروههای گزینه: FD,SOCKET,IP4,IP6,TCP,SOCKS4,RETRY
گزینههای کاربردی: socksuser, socksport, sourceport, pf, retry
همچنین ببینید: SOCKS5, SOCKS4A, PROXY, TCP - SOCKS4A:<socks-server>:<host>:<port>
- مانند SOCKS4
است، اما از
پروتکل socks
نسخه 4a
استفاده
میکند و
بدین ترتیب
تحلیل نام
میزبان را
به سرور socks
واگذار
مینماید.
گروههای گزینه: FD,SOCKET,IP4,IP6,TCP,SOCKS4,RETRY - SOCKS5-CONNECT:<socks-server>:<socks-port>:<target-host>:<target-port>
- SOCKS5-CONNECT:<socks-server>:<target-host>:<target-port>
- از طریق <socks-server>
[آدرس IP] به <target-host>
[آدرس IPv4] روی
<target-port> [سرویس TCP]،
با استفاده
از پروتکل socks
نسخه ۵ بر
روی TCP متصل
میشود. در
حال حاضر
هیچ
سازوکار
احراز
هویتی
ارائه نشده
است.
گروههای گزینه: FD, SOCKET, IP4, IP6, TCP, CHILD, RETRY
گزینههای کاربردی: socksport, sourceport, pf, retry
همچنین ببینید: SOCKS5-LISTEN, SOCKS4, SOCKS4A, PROXY, TCP - SOCKS5-LISTEN:<socks-server>:<socks-port>:<listen-host>:<listen-port>
- SOCKS5-LISTEN:<socks-server>:<listen-host>:<listen-port>
- به <socks-server> [آدرس
IP] با
استفاده از
پروتکل socks
نسخه ۵ بر
روی TCP متصل
میشود و آن
را وادار به
شنود برای
اتصالات
ورودی روی
<listen-port> [سرویس TCP]
و متصل شدن
به <-listen-host> [آدرس
IPv4] میکند. در
حال حاضر
هیچ
سازوکار
احراز
هویتی
ارائه نشده
است.
گروههای گزینه: FD, SOCKET, IP4, IP6, TCP, CHILD, RETRY
گزینههای کاربردی: sourceport, pf, retry
همچنین ببینید: SOCKS5-CONNECT, - STDERR
- از
توصیفکننده
فایل ۲
استفاده
میکند.
این یک آدرس فقطنوشتنی است؛ به گزینههای -u و -U و آدرسهای دوگانه مراجعه کنید.
گروههای گزینه: FD (TERMIOS,REG,SOCKET)
همچنین ببینید: FD - STDIN
- از
توصیفکننده
فایل ۰
استفاده
میکند.
این یک آدرس فقطخواندنی است؛ به گزینههای -u و -U و آدرسهای دوگانه مراجعه کنید.
گروههای گزینه: FD (TERMIOS,REG,SOCKET)
گزینههای کاربردی: readbytes
همچنین ببینید: FD - STDIO
- از
توصیفکننده
فایل ۰ برای
خواندن و ۱
برای نوشتن
استفاده
میکند.
گروههای گزینه: FD (TERMIOS,REG,SOCKET)
گزینههای کاربردی: readbytes
همچنین ببینید: FD - STDOUT
- از
توصیفکننده
فایل ۱
استفاده
میکند.
این یک آدرس فقطنوشتنی است؛ به گزینههای -u و -U و آدرسهای دوگانه مراجعه کنید.
گروههای گزینه: FD (TERMIOS,REG,SOCKET)
همچنین ببینید: FD - SHELL:<shell-command>
- یک
زیرپردازه
منشعب
میکند که
ارتباط با
پردازه
والد خود را
برقرار
ساخته و
برنامه
مشخصشده
را با پوسته
پیکربندیشده
($SHELL) فراخوانی
میکند.
توجه داشته
باشید که
<shell-command> [رشته]
نباید شامل
’,’ یا "!!"
باشد، و
ممکن است
لازم باشد
کاراکترهای
متای پوسته
محافظت
شوند. پس از
شروع
موفقیتآمیز
برنامه، socat
دادهها را
در stdin پردازه
مینویسد و
از stdout آن
میخواند.
گروههای گزینه: FD,SOCKET,EXEC,FORK,TERMIOS
گزینههای کاربردی: path, fdin, fdout, chroot, su, su-d, nofork, socktype, pty, stderr, ctty, setsid, pipes, umask, sigint, sigquit
همچنین ببینید: EXEC, SYSTEM - SYSTEM:<shell-command>
- یک
زیرپردازه
منشعب
میکند که
ارتباط با
پردازه
والد خود را
برقرار
ساخته و
برنامه
مشخصشده
را با system()
فراخوانی
میکند.
لطفاً توجه
داشته
باشید که
<shell-command> [رشته]
نباید شامل
’,’ یا "!!"
باشد، و
ممکن است
لازم باشد
کاراکترهای
متای پوسته
محافظت
شوند. پس از
اجرای موفق
برنامه، socat
دادهها را
در stdin پردازه
مینویسد و
از stdout آن
میخواند.
گروههای گزینه: FD,SOCKET,EXEC,FORK,TERMIOS
گزینههای کاربردی: path, fdin, fdout, chroot, su, su-d, nofork, socktype, pty, stderr, ctty, setsid, pipes, umask, sigint, sigquit, netns
همچنین ببینید: EXEC, SHELL - TCP:<host>:<port>
- به <port> [سرویس
TCP] در <host> [آدرس IP]
با استفاده
از TCP/IP نسخه ۴
یا ۶ بسته
به مشخصات
آدرس،
تحلیل نام
یا گزینه pf
متصل
میشود.
گروههای گزینه: FD,SOCKET,IP4,IP6,TCP,RETRY
گزینههای کاربردی: connect-timeout, retry, sourceport, netns, crnl, bind, pf, tos, mtudiscover, mss, nodelay, nonblock, readbytes
همچنین ببینید: TCP4, TCP6, TCP-LISTEN, UDP, SCTP-CONNECT, UNIX-CONNECT - TCP4:<host>:<port>
- مانند TCP
است، اما
فقط از
پروتکل IPv4
پشتیبانی
میکند
(مثال).
گروههای گزینه: FD,SOCKET,IP4,TCP,RETRY
- TCP6:<host>:<port>
- مانند TCP
است، اما
فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP6,TCP,RETRY
- TCP-LISTEN:<port>
- روی <port>
[سرویس TCP]
شنود
میکند و یک
اتصال TCP/IP را
میپذیرد.
نسخه IP
برابر ۴ یا
نسخهای
است که با
گزینه آدرس
pf، گزینه socat (-4, -6)
یا متغیر
محیطی SOCAT_DEFAULT_LISTEN_IP
مشخص شده
است. توجه
داشته
باشید که
باز کردن
این آدرس
معمولاً تا
زمان اتصال
یک کلاینت
مسدود
میشود.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,TCP,RETRY
گزینههای کاربردی: crnl, fork, bind, range, tcpwrap, pf, max-children, backlog, accept-timeout, mss, su, reuseaddr, retry, cool-write
همچنین ببینید: TCP4-LISTEN, TCP6-LISTEN, UDP-LISTEN, SCTP-LISTEN, UNIX-LISTEN, OPENSSL-LISTEN, TCP-CONNECT - TCP4-LISTEN:<port>
- مانند TCP-LISTEN
است، اما
فقط از
پروتکل IPv4
پشتیبانی
میکند
(مثال).
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,TCP,RETRY
- TCP6-LISTEN:<port>
- مانند TCP-LISTEN
است، اما
فقط از
پروتکل IPv6
پشتیبانی
میکند.
گزینههای کاربردی افزوده: ipv6only
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP6,TCP,RETRY
- TUN[:<if-addr>/<bits>]
- یک دستگاه TUN/TAP
لینوکس
ایجاد کرده
و به صورت
اختیاری
آدرس و
نتماسک
تعیینشده
توسط
پارامترها
را به آن
اختصاص
میدهد.
رابط شبکه
حاصل
تقریباً
برای
استفاده
توسط سایر
پردازهها
آماده است؛
socat به بخش سیم
آن ("wire side")
خدمترسانی
میکند. این
آدرس نیاز
به دسترسی
خواندن و
نوشتن در
دستگاه
تکثیر
تونل،
معمولاً
/dev/net/tun
دارد، و
همچنین
نیازمند
مجوز برای
تنظیم برخی
فراخوانیهای
ioctl() است.
گزینه iff-up
برای
فعالسازی
فوری رابط
لازم است!
نکته: اگر قصد انتقال بستهها بین دو بخش سیم ("wire sides") در Socat را دارید، به پروتکلی نیاز دارید که مرزهای بسته را حفظ کند، مانند UDP؛ ممکن است TCP با گزینه nodelay کار کند.
گروههای گزینه: FD,NAMED,OPEN,TUN
گزینههای کاربردی: iff-up, tun-device, tun-name, tun-type, iff-no-pi, netns
همچنین ببینید: ip-recv - UDP:<host>:<port>
- به <port> [سرویس
UDP] در <host> [آدرس IP]
با استفاده
از UDP/IP نسخه ۴
یا ۶ بسته
به مشخصات
آدرس،
تحلیل نام
یا گزینه pf
متصل
میشود.
لطفاً توجه داشته باشید که به دلیل ویژگیهای پروتکل UDP، اتصال واقعی برقرار نمیشود؛ دادهها باید برای `اتصال’ به سرور ارسال شوند، و هیچ وضعیت پایان فایلی (end-of-file) قابل انتقال نیست.
گروههای گزینه: FD,SOCKET,IP4,IP6
گزینههای کاربردی: ttl, tos, bind, sourceport, pf
همچنین ببینید: UDP4, UDP6, UDP-LISTEN, TCP, IP - UDP4:<host>:<port>
- مانند UDP
است، اما
فقط از
پروتکل IPv4
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP4
- UDP6:<host>:<port>
- مانند UDP
است، اما
فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP6
- UDP-DATAGRAM:<address>:<port>
- دادههای
خروجی را به
آدرس
مشخصشده
ارسال
میکند که
ممکن است
بهویژه یک
آدرس
همگانی (broadcast)
یا چندپخشی
(multicast) باشد.
بستههای
ورودی به
سوکت محلی
فقط زمانی
برای پورت
دوردستِ
صحیح بررسی
میشوند که
از گزینه sourceport
استفاده
شده باشد
(این یک
تغییر در
نگارش 1.7.4.0 از
Socat است) و در
صورتی که
آدرسهای
مبدأ آنها
با
گزینههای
RANGE یا TCPWRAP
مطابقت
داشته باشد.
این نوع
آدرس
میتواند
برای نمونه
برای
پیادهسازی
ارتباطات
متقارن یا
نامتقارن
همگانی یا
چندپخشی
استفاده
شود.
گروههای گزینه: FD,SOCKET,IP4,IP6,RANGE
گزینههای کاربردی: bind, range, tcpwrap, broadcast, ip-multicast-loop, ip-multicast-ttl, ip-multicast-if, ip-add-membership, ip-add-source-membership, ipv6-join-group, ipv6-join-source-group, ttl, tos, sourceport, pf
همچنین ببینید: UDP4-DATAGRAM, UDP6-DATAGRAM, UDP-SENDTO, UDP-RECVFROM, UDP-RECV, UDP-CONNECT, UDP-LISTEN, IP-DATAGRAM - UDP4-DATAGRAM:<address>:<port>
- مانند UDP-DATAGRAM
است، اما
فقط از
پروتکل IPv4
پشتیبانی
میکند
(مثال ۱،
مثال ۲).
گروههای گزینه: FD,SOCKET,IP4, RANGE - UDP6-DATAGRAM:<address>:<port>
- مانند UDP-DATAGRAM
است، اما
فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP6,RANGE - UDP-LISTEN:<port>
- منتظر یک
بسته UDP/IP
ورودی روی
<port> [سرویس UDP]
میماند و
مجدداً به
فرستنده
`متصل
میشود’.
نسخه IP
پذیرفتهشده
۴ یا
نسخهای
است که با
گزینه pf
مشخص شده
است. لطفاً
توجه داشته
باشید که به
دلیل
ویژگیهای
پروتکل UDP،
هیچ اتصال
واقعی
برقرار
نمیشود؛
دادهها
باید ابتدا
از سمت طرف
مقابل
برسند، و
هیچ وضعیت
پایان
فایلی قابل
انتقال
نیست. توجه
داشته
باشید که
باز کردن
این آدرس
معمولاً تا
زمان اتصال
یک کلاینت
مسدود
میشود.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6
گزینههای کاربردی: fork, bind, range, pf
همچنین ببینید: UDP, UDP4-LISTEN, UDP6-LISTEN, TCP-LISTEN - UDP4-LISTEN:<port>
- مانند UDP-LISTEN
است، اما
فقط از
پروتکل IPv4
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4
- UDP6-LISTEN:<port>
- مانند UDP-LISTEN
است، اما
فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP6
- UDP-SENDTO:<host>:<port>
- با سوکت
همتای
مشخصشده
که توسط <port>
[سرویس UDP] روی
<host> [آدرس IP]
تعیین شده
است، با
استفاده از
UDP/IP نسخه ۴ یا ۶
بسته به
مشخصات
آدرس،
تحلیل نام
یا گزینه pf
ارتباط
برقرار
میکند. این
آدرس
بستهها را
فقط به آن
سوکت همتا
ارسال کرده
و از آن
بسته
دریافت
میکند. این
آدرس عملاً
یک کلاینت
دیتاگرام
را
پیادهسازی
میکند. با
همتاهای
آدرس UDP-RECVFROM و UDP-RECV
در socat به خوبی
کار میکند.
زمانی که
ممکن است
همتا ابتدا
داده ارسال
کند، UDP-DATAGRAM
ارجح است.
گروههای گزینه: FD,SOCKET,IP4,IP6
گزینههای کاربردی: ttl, tos, bind, sourceport, pf
همچنین ببینید: UDP4-SENDTO, UDP6-SENDTO, UDP-RECVFROM, UDP-RECV, UDP-CONNECT, UDP-LISTEN, IP-SENDTO - UDP4-SENDTO:<host>:<port>
- مانند UDP-SENDTO
است، اما
فقط از
پروتکل IPv4
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP4 - UDP6-SENDTO:<host>:<port>
- مانند UDP-SENDTO
است، اما
فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP6 - UDP-RECVFROM:<port>
- یک سوکت UDP
روی <port>
[سرویس UDP] با
استفاده از
UDP/IP نسخه ۴ یا ۶
بسته به
گزینه pf
ایجاد
میکند. یک
بسته را از
یک همتای
نامشخص
دریافت
کرده و ممکن
است یک یا
چند بسته
پاسخ به آن
همتا
بفرستد. این
حالت
بهویژه با
گزینه fork
سودمند است
که در آن هر
بسته
دریافتی -
از همتاهای
دلخواه -
توسط
زیرپردازه
خودش
مدیریت
میشود. این
ویژگی
رفتاری
شبیه به
سرورهای
معمول
مبتنی بر UDP
مانند ntpd یا named
را فراهم
میکند. این
آدرس با
همتاهای
آدرس UDP-SENDTO در socat
به خوبی کار
میکند.
نکته: هنگامی که آدرس دوم قبل از ورود به حلقه انتقال با شکست مواجه شود، بسته دور انداخته میشود. از گزینه retry یا forever روی آدرس دوم برای جلوگیری از دست رفتن دادهها استفاده کنید. هنگامی که آدرس همتا را میدانید، UDP-DATAGRAM ارجح است.
گروههای گزینه: FD,SOCKET,IP4,IP6,CHILD,RANGE
گزینههای کاربردی: fork, ttl, tos, bind, sourceport, pf
همچنین ببینید: UDP4-RECVFROM, UDP6-RECVFROM, UDP-SENDTO, UDP-RECV, UDP-CONNECT, UDP-LISTEN, IP-RECVFROM, UNIX-RECVFROM - UDP4-RECVFROM:<port>
- مانند UDP-RECVFROM
است، اما
فقط از
پروتکل IPv4
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP4,CHILD,RANGE - UDP6-RECVFROM:<port>
- مانند UDP-RECVFROM
است، اما
فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP6,CHILD,RANGE - UDP-RECV:<port>
- یک سوکت UDP
روی <port>
[سرویس UDP] با
استفاده از
UDP/IP نسخه ۴ یا ۶
بسته به
گزینه pf
ایجاد
میکند.
بستهها را
از چندین
همتای
نامشخص
دریافت
کرده و
دادهها را
ادغام
میکند. هیچ
پاسخی
امکانپذیر
نیست. این
آدرس برای
مثال با
همتاهای
آدرس UDP-SENDTO در socat
به خوبی کار
میکند؛
رفتاری
شبیه به یک
سرور syslog دارد.
این یک آدرس فقطخواندنی است؛ به گزینههای -u و -U و آدرسهای دوگانه مراجعه کنید.
نکته: اگر به گزینه fork نیاز دارید، به جای آن از UDP-RECVFROM در حالت یکطرفه (با گزینه -u) استفاده کنید.
گروههای گزینه: FD,SOCKET,IP4,IP6,RANGE
گزینههای کاربردی: pf, bind, sourceport, ttl, tos
همچنین ببینید: UDP4-RECV, UDP6-RECV, UDP-SENDTO, UDP-RECVFROM, UDP-CONNECT, UDP-LISTEN, IP-RECV, UNIX-RECV - UDP4-RECV:<port>
- مانند UDP-RECV
است، اما
فقط از
پروتکل IPv4
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP4,RANGE - UDP6-RECV:<port>
- مانند UDP-RECV
است، اما
فقط از
پروتکل IPv6
پشتیبانی
میکند.
گروههای گزینه: FD,SOCKET,IP6,RANGE - UDPLITE-CONNECT:<host>:<port>
- UDPLITE4-CONNECT:<host>:<port>
- UDPLITE6-CONNECT:<host>:<port>
- UDPLITE-DATAGRAM:<address>:<port>
- UDPLITE4-DATAGRAM:<address>:<port>
- UDPLITE6-DATAGRAM:<address>:<port>
- UDPLITE-LISTEN:<port>
- UDPLITE4-LISTEN:<port>
- UDPLITE6-LISTEN:<port>
- UDPLITE-SENDTO:<host>:<port>
- UDPLITE4-SENDTO:<host>:<port>
- UDPLITE6-SENDTO:<host>:<port>
- UDPLITE-RECVFROM:<port>
- UDPLITE4-RECVFROM:<port>
- UDPLITE6-RECVFROM:<port>
- UDPLITE-RECV:<port>
- UDPLITE4-RECV:<port>
- UDPLITE6-RECV:<port>
- آدرسهای UDPLITE تقریباً مشابه آدرسهای مرتبط UDP هستند اما از پروتکل UDP-Lite استفاده میکنند و دارای گروه گزینه اضافی UDPLITE میباشند.
- UNIX-CONNECT:<filename>
- با این فرض
که <filename> یک
سوکت دامنه
یونیکس
است، به آن
متصل
میشود. اگر
<filename> وجود
نداشته
باشد، این
یک خطا است؛
اگر <filename> یک
سوکت دامنه
یونیکس
نباشد، این
یک خطا است؛
اگر <filename> یک
سوکت دامنه
یونیکس
باشد اما
هیچ
پردازهای
در حال شنود
نباشد، این
یک خطا است.
گروههای گزینه: FD,SOCKET,NAMED,RETRY,UNIX
گزینههای کاربردی: bind
همچنین ببینید: UNIX-LISTEN, UNIX-SENDTO, TCP - UNIX-LISTEN:<filename>
- با استفاده
از یک سوکت
استریم
دامنه
یونیکس روی
<filename> شنود
کرده و یک
اتصال را
میپذیرد.
اگر <filename> وجود
داشته باشد
و یک سوکت
نباشد، این
یک خطا است.
اگر <filename> وجود
داشته باشد
و یک سوکت
دامنه
یونیکس
باشد، متصل
شدن (bind) به این
آدرس شکست
میخورد (از
گزینه unlink-early
استفاده
کنید!). توجه
داشته
باشید که
باز کردن
این آدرس
معمولاً تا
زمان اتصال
یک کلاینت
مسدود
میشود. از
نسخه 1.4.3 در socat
به بعد، با
بسته شدن
این آدرس
مدخل
فایلسیستم
حذف میشود
(اما گزینه
unlink-close را
ببینید)
(مثال).
گروههای گزینه: FD,SOCKET,NAMED,LISTEN,CHILD,RETRY,UNIX
گزینههای کاربردی: fork, umask, mode, user, group, unlink-early
همچنین ببینید: UNIX-CONNECT, UNIX-RECVFROM, UNIX-RECV, TCP-LISTEN - UNIX-SENDTO:<filename>
- با سوکت
همتای
مشخصشده
که توسط [<filename>]
تعریف شده،
با این فرض
که یک سوکت
دیتاگرام
دامنه
یونیکس
است،
ارتباط
برقرار
میکند.
بستهها را
فقط به آن
سوکت همتا
ارسال کرده
و فقط از آن
بسته
دریافت
میکند.
لطفاً توجه
داشته
باشید که
ممکن است
لازم باشد
سوکت محلی
را به یک
آدرس متصل (bind)
کنید (مانند
/tmp/sock1 که
نباید از
قبل وجود
داشته
باشد). این
نوع آدرس با
همتاهای
آدرس UNIX-RECVFROM و UNIX-RECV
در socat به خوبی
کار میکند.
گروههای گزینه: FD,SOCKET,NAMED,UNIX
گزینههای کاربردی: bind
همچنین ببینید: UNIX-RECVFROM, UNIX-RECV, UNIX-CONNECT, UDP-SENDTO, IP-SENDTO - UNIX-RECVFROM:<filename>
- یک سوکت
دیتاگرام
دامنه
یونیکس [<filename>]
ایجاد
میکند. یک
بسته را
دریافت
کرده و ممکن
است یک یا
چند بسته
پاسخ به آن
همتا ارسال
نماید. این
حالت
بهویژه با
گزینه fork
سودمند است
که در آن هر
بسته
دریافتی -
از همتاهای
دلخواه -
توسط
زیرپردازه
خودش
مدیریت
میشود. این
آدرس با
همتاهای
آدرس UNIX-SENDTO در socat
به خوبی کار
میکند.
گروههای گزینه: FD,SOCKET,NAMED,CHILD,UNIX
یادداشت مربوط به آدرسهای RECVFROM را ببینید.
گزینههای کاربردی: fork
umask
همچنین ببینید: UNIX-SENDTO, UNIX-RECV, UNIX-LISTEN, UDP-RECVFROM, IP-RECVFROM - UNIX-RECV:<filename>
- یک سوکت
دیتاگرام
دامنه
یونیکس [<filename>]
ایجاد
میکند.
بستهها را
از چندین
همتای
نامشخص
دریافت
کرده و
دادهها را
ادغام
مینماید.
هیچ پاسخی
امکانپذیر
نیست، این
یک آدرس
فقطخواندنی
است؛ به
گزینههای
-u و -U و
آدرسهای
دوگانه
مراجعه
کنید. برای
مثال
میتواند
توسط
همتاهای
آدرس UNIX-SENDTO در socat
آدرسدهی
شود. رفتاری
شبیه به یک
سرور syslog دارد.
گروههای گزینه: FD,SOCKET,NAMED,UNIX
گزینههای کاربردی: umask
همچنین ببینید: UNIX-SENDTO, UNIX-RECVFROM, UNIX-LISTEN, UDP-RECV, IP-RECV - UNIX-CLIENT:<filename>
- با سوکت
همتای
مشخصشده
که توسط [<filename>]
تعریف شده
است، با این
فرض که یک
سوکت دامنه
یونیکس است
ارتباط
برقرار
میکند.
ابتدا برای
اتصال تلاش
میکند و در
صورت شکست،
فرض میکند
که یک سوکت
دیتاگرام
است؛
بنابراین
از هر دو
نوع
پشتیبانی
مینماید.
گروههای گزینه: FD,SOCKET,NAMED,UNIX
گزینههای کاربردی: bind
همچنین ببینید: UNIX-CONNECT, UNIX-SENDTO, GOPEN - VSOCK-CONNECT:<cid>:<port>
- یک اتصال
استریم VSOCK به
<cid> [VSOCK cid] و <port> [VSOCK port]
مشخصشده
برقرار
میکند.
گروههای گزینه: FD,SOCKET,CHILD,RETRY
گزینههای کاربردی: bind, connect-timeout, retry, readbytes
همچنین ببینید: VSOCK-LISTEN, - VSOCK-LISTEN:<port>
- روی <port> [VSOCK port]
شنود کرده و
یک اتصال VSOCK
را
میپذیرد.
توجه داشته
باشید که
باز کردن
این آدرس
معمولاً تا
زمان اتصال
یک کلاینت
مسدود
میشود.
گروههای گزینه: FD,SOCKET,LISTEN,CHILD,RETRY
گزینههای کاربردی: fork, bind, max-children, backlog, su, reuseaddr, retry
همچنین ببینید: VSOCK-CONNECT - ABSTRACT-CONNECT:<string>
- ABSTRACT-LISTEN:<string>
- ABSTRACT-SENDTO:<string>
- ABSTRACT-RECVFROM:<string>
- ABSTRACT-RECV:<string>
- ABSTRACT-CLIENT:<string>
- آدرسهای ABSTRACT
تقریباً با
آدرسهای
مرتبط UNIX
یکسان
هستند، به
جز اینکه
سوکتهای
مبتنی بر
فایلسیستم
را
آدرسدهی
نمیکنند،
بلکه یک
فضای آدرس
دامنه
یونیکس
جایگزین را
مخاطب قرار
میدهند.
برای
دستیابی به
این منظور،
رشتههای
آدرس سوکت
در داخل با
"\0"
پیشوندگذاری
میشوند.
این ویژگی
(فقط؟) در
لینوکس
موجود است.
گروههای
گزینه
مانند
آدرسهای
مرتبط UNIX
هستند، به
جز اینکه
آدرسهای ABSTRACT
عضو گروه NAMED
نیستند.
گزینههای کاربردی: netns
گزینههای آدرس (ADDRESS OPTIONS)
گزینههای آدرس را میتوان روی مشخصات آدرس اعمال کرد تا بر فرآیند باز کردن آدرسها و ویژگیهای کانالهای داده حاصل تأثیر بگذارند.
به دلایل فنی، نمیتوان هر گزینهای را روی هر نوع آدرسی اعمال کرد؛ به عنوان مثال، اعمال یک گزینه سوکت روی یک فایل معمولی با شکست مواجه خواهد شد. برای تشخیص زودهنگام اکثر ترکیبهای بیاستفاده در همان مرحله باز کردن، مفهوم گروههای گزینه (option groups) معرفی شد. هر گزینه به یک یا چند گروه گزینه تعلق دارد. گزینهها تنها با انواع آدرسی قابل استفاده هستند که دستکم از یکی از گروههای گزینه آنها پشتیبانی کنند (البته گزینه -g را نیز ببینید).
گزینههای آدرس دارای انواع دادهای هستند که مقادیرشان باید با آنها مطابقت داشته باشد. هر گزینه آدرس تنها از یک کلمه کلیدی یا یک کلمه کلیدی به همراه "=value" تشکیل شده است، که در آن value باید با نوع داده گزینه مطابقت داشته باشد. برخی گزینههای آدرس پارامترهای فراخوانیهای سیستمی را دستکاری میکنند؛ به عنوان مثال، گزینه sync فلگ O_SYNC را در فراخوانی open() تنظیم میکند. گزینههای دیگر موجب یک فراخوانی سیستمی یا کتابخانهای میشوند؛ به عنوان مثال، با گزینه `ttl=value’ فراخوانی setsockopt(fd, SOL_IP, IP_TTL, value, sizeof(int)) اعمال میشود. گزینههای دیگر متغیرهای داخلی socat را تنظیم میکنند که در حین انتقال داده استفاده میشوند؛ به عنوان مثال، `crnl’ تبدیلهای صریح نویسهها را اعمال میکند. تعداد کمی از گزینهها پیادهسازیهای پیچیدهتری دارند؛ به عنوان مثال، su-d (مخفف substuser-delayed) برخی اطلاعات کاربر و گروه را استعلام و ذخیره کرده، و بعداً پس از فراخوانی احتمالی chroot() اعمال میکند.
اگر چندین گزینه برای یک آدرس مشخص شود، ترتیب آنها در مشخصات آدرس (تقریباً) هیچ تأثیری بر ترتیب اجرا یا اعمال آنها ندارد. در عوض، socat یک مدل داخلی فاز گزینهها (option phase) دارد که تلاش میکند گزینهها را در یک ترتیب مفید قرار دهد. برخی گزینهها در قالبهای متفاوتی وجود دارند (مانند unlink، unlink-early، unlink-late) تا زمان اجرای آنها را کنترل کنند.
اگر یک گزینه بیش از یک بار با مقادیر یکسان یا متفاوت در مشخصات یک آدرس تعیین شود، اثر آن به نوع گزینه بستگی دارد. گزینههایی که منجر به فراخوانی توابعی مانند setsockopt() میشوند، فراخوانیهای متعددی را در پی دارند. در مورد گزینههایی که پارامترهایی را برای یک فراخوانی الزامی مانند open() تنظیم میکنند یا فلگهای داخلی را مقداردهی میکنند، مقدار آخرین گزینه اعمالشده مؤثر خواهد بود.
وجود یا معنای بسیاری از گزینهها وابسته به سیستم است. معمولاً Socat تلاشی برای شبیهسازی قابلیتهای غایب libc یا هسته انجام نمیدهد، بلکه صرفاً یک رابط برای سیستم زیربنایی فراهم میکند. بنابراین، اگر یک سیستمعامل فاقد قابلیتی باشد، گزینه مربوطه به سادگی روی این پلتفرم در دسترس نخواهد بود.
پاراگرافهای زیر فقط گزینههای آدرس متداولتر را معرفی میکنند. برای یک مرجع جامعتر و یافتن اطلاعات درباره نامهای متعارف گزینهها، نامهای مستعار، فازهای گزینهها، و پلتفرمها به فایل xio.help مراجعه کنید.
گروه گزینه FD
این گروه
گزینه شامل
گزینههایی
است که بر
روی
توصیفکننده
فایل (file descriptor) به
سبک یونیکس
(UN*X) اعمال
میشوند،
صرفنظر از
اینکه
چگونه
ایجاد شده
باشد. از
آنجا که
تمام انواع
آدرسهای
فعلی در socat
مبتنی بر
توصیفکننده
فایل
هستند، این
گزینهها
را میتوان
روی هر
آدرسی
اعمال کرد.
نکته: برخی
از این
گزینهها
عضو گروه
گزینه
دیگری نیز
هستند که
سازوکار
دیگری به جز
توصیفکننده
فایل فراهم
میکند.
برای این
گزینهها،
بسته به نوع
آدرس واقعی
و گروههای
گزینه آن
مشخص
میشود که
کدام
سازوکار
استفاده
خواهد شد.
سازوکار
دوم (غیر
مبتنی بر
توصیفکننده
فایل)
اولویت
دارد.
- cloexec[=<bool>]
- فلگ FD_CLOEXEC را با فراخوانی سیستمی fcntl() به مقدار <bool> تنظیم میکند. در صورت تنظیم، توصیفکننده فایل در فراخوانیهای خانواده توابع exec() بسته میشود. Socat بهطور داخلی این فلگ را برای توصیفکنندههای فایلی که کنترل میکند مدیریت میکند، بنابراین در بیشتر موارد نیازی به اعمال این گزینه نخواهد بود.
- setlk[=<bool>]
- تلاش میکند تا با استفاده از فراخوانی سیستمی fcntl(fd, F_SETLK, ...) یک قفل نوشتن اختیاری (discretionary) بر روی کل فایل تنظیم کند. اگر فایل از قبل قفل شده باشد، این فراخوانی منجر به خطا میشود. در لینوکس، زمانی که مجوزهای گروهی فایل برابر با "S" باشد (g-x,g+s)، و سیستم فایل بهصورت محلی با گزینه "mand" مانت شده باشد، قفل اجباری (mandatory) خواهد بود، یعنی از باز کردن فایل توسط سایر فرایندها جلوگیری میکند.
- setlkw[=<bool>]
- تلاش میکند تا با استفاده از فراخوانی سیستمی fcntl(fd, F_SETLKW, ...) یک قفل نوشتن اختیاریِ منتظرشونده بر روی کل فایل تنظیم کند. اگر فایل از قبل قفل شده باشد، این فراخوانی مسدود میشود. برای اطلاعات درباره اجباری کردن این قفل، گزینه setlk را ببینید.
- setlk-rd[=<bool>]
- تلاش میکند تا با استفاده از فراخوانی سیستمی fcntl(fd, F_SETLK, ...) یک قفل خواندن اختیاری بر روی کل فایل تنظیم کند. اگر فایل از قبل دارای قفل نوشتن باشد، این فراخوانی منجر به خطا میشود. برای اطلاعات درباره اجباری کردن این قفل، گزینه setlk را ببینید.
- setlkw-rd[=<bool>]
- تلاش میکند تا با استفاده از فراخوانی سیستمی fcntl(fd, F_SETLKW, ...) یک قفل خواندن اختیاریِ منتظرشونده بر روی کل فایل تنظیم کند. اگر فایل از قبل دارای قفل نوشتن باشد، این فراخوانی مسدود میشود. برای اطلاعات درباره اجباری کردن این قفل، گزینه setlk را ببینید.
- flock-ex[=<bool>]
- تلاش میکند تا با استفاده از فراخوانی سیستمی flock(fd, LOCK_EX) یک قفل مشورتی (advisory) انحصاری مسدودکننده بر روی فایل تنظیم کند. اگر فایل توسط فرایند دیگری قفل شده باشد، Socat در این فراخوانی معلق میماند.
- flock-ex-nb[=<bool>]
- تلاش میکند تا با استفاده از فراخوانی سیستمی flock(fd, LOCK_EX|LOCK_NB) یک قفل مشورتی انحصاری غیرمسدودکننده بر روی فایل تنظیم کند. اگر فایل از قبل قفل شده باشد، این گزینه منجر به خطا میشود.
- flock-sh[=<bool>]
- تلاش میکند تا با استفاده از فراخوانی سیستمی flock(fd, LOCK_SH) یک قفل مشورتی اشتراکی مسدودکننده بر روی فایل تنظیم کند. اگر فایل توسط فرایند دیگری قفل شده باشد، Socat در این فراخوانی معلق میماند.
- flock-sh-nb[=<bool>]
- تلاش میکند تا با استفاده از فراخوانی سیستمی flock(fd, LOCK_SH|LOCK_NB) یک قفل مشورتی اشتراکی غیرمسدودکننده بر روی فایل تنظیم کند. اگر فایل از قبل قفل شده باشد، این گزینه منجر به خطا میشود.
- lock[=<bool>]
- یک قفل مسدودکننده بر روی فایل تنظیم میکند. بسته به در دسترس بودن در پلتفرم مربوطه، از سازوکار setlk یا flock استفاده میکند. در صورتی که هر دو در دسترس باشند، نوع POSIX یعنی setlkw استفاده میشود.
- user=<user>
- کاربر <user> (مالک) جریان را تعیین میکند. اگر آدرس عضو گروه گزینه NAMED باشد، socat از فراخوانی سیستمی chown() پس از باز کردن فایل یا بایند کردن به سوکت دامین یونیکس استفاده میکند (شرایط رقابتی!). در صورت عدم وجود ورودی سیستم فایل، socat کاربر جریان را با استفاده از فراخوانی سیستمی fchown() تنظیم میکند. این فراخوانیها ممکن است به دسترسی کاربر ارشد (root) نیاز داشته باشند.
- user-late=<user>
- مالک توصیفکننده فایل را پس از باز کردن یا اتصال کانال، با فراخوانی سیستمی fchown() به <user> تنظیم میکند. این گزینه فقط روی ورودیهای سیستم فایل مفید است.
- group=<group>
- گروه <group> جریان را تعیین میکند. اگر آدرس عضو گروه گزینه NAMED باشد، socat از فراخوانی سیستمی chown() پس از باز کردن فایل یا بایند کردن به سوکت دامین یونیکس استفاده میکند (شرایط رقابتی!). در صورت عدم وجود ورودی سیستم فایل، socat گروه جریان را با فراخوانی سیستمی fchown() تنظیم میکند. این فراخوانیها ممکن است به عضویت در گروه یا دسترسی ریشه (root) نیاز داشته باشند.
- group-late=<group>
- گروه توصیفکننده فایل را پس از باز کردن یا اتصال کانال، با فراخوانی سیستمی fchown() به <group> تنظیم میکند. این گزینه فقط روی ورودیهای سیستم فایل مفید است.
- mode=<mode>
- حالت <mode> [mode_t]
(مجوزهای
دسترسی)
جریان را
تعیین
میکند. اگر
آدرس عضو
گروه گزینه
NAMED باشد و از
فراخوانی
open() یا
creat()
استفاده
کند، حالت
همراه با
این
فراخوانیها
اعمال
میشود. اگر
آدرس عضو
گروه گزینه
NAMED باشد بدون
اینکه از
این
فراخوانیهای
سیستمی
استفاده
کند، socat پس
از باز کردن
ورودی
سیستم فایل
یا بایند
کردن به
سوکت دامین
یونیکس از
فراخوانی
سیستمی
chmod()
استفاده
میکند
(شرایط
رقابتی!). در
غیر این
صورت، socat
حالت جریان
را با
استفاده از
fchmod() تنظیم
میکند که
البته ممکن
است هیچ
تأثیری
نداشته
باشد.
این فراخوانیها ممکن است به مالکیت یا دسترسی ریشه (root) نیاز داشته باشند.
نکته: این گزینه فقط میتواند مجوزهای ناشی از umask فرایند را محدودتر کند. برای گشودن مجوزها، گزینه umask را ببینید. - perm-late=<mode>
- مجوزهای توصیفکننده فایل را پس از باز کردن یا اتصال کانال، با استفاده از فراخوانی سیستمی fchmod() به مقدار <mode> [mode_t] تنظیم میکند. این گزینه فقط روی ورودیهای سیستم فایل مفید است.
- append[=<bool>]
- همیشه دادهها را در انتهای واقعی فایل مینویسد. اگر آدرس عضو گروه گزینه OPEN باشد، socat از فلگ O_APPEND همراه با فراخوانی سیستمی open() استفاده میکند (مثال). در غیر این صورت، socat فراخوانی fcntl(fd, F_SETFL, O_APPEND) را اعمال میکند.
- nonblock[=<bool>]
- تلاش میکند تا فایل را در حالت غیرمسدودکننده باز کرده یا استفاده کند. تنها اثرات آن این است که فراخوانی connect() در آدرسهای TCP مسدود نمیشود، و باز کردن یک پایپ نامگذاریشده برای خواندن مسدود نخواهد شد. اگر آدرس عضو گروه گزینه OPEN باشد، socat از فلگ O_NONBLOCK همراه با فراخوانی سیستمی open() استفاده میکند. در غیر این صورت، socat فراخوانی fcntl(fd, F_SETFL, O_NONBLOCK) را اعمال میکند.
- binary[=<bool>]
- فایل را در حالت باینری باز میکند تا از تبدیل ضمنی پایاندهندههای خط جلوگیری شود (Cygwin).
- text[=<bool>]
- فایل را در حالت متنی باز میکند تا تبدیل ضمنی پایاندهندههای خط تحمیل شود (Cygwin).
- noinherit[=<bool>]
- این فایل را در فرایند ایجادشده باز نگه نمیدارد (Cygwin).
- cool-write[=<bool>]
- هنگامی که
عملیات
نوشتن با
خطای EPIPE یا ECONNRESET
با شکست
مواجه
میشود،
آسان
میگیرد و
پیام را با
سطح notice به
جای error در
لاگ ثبت
میکند. این
کار از پر
شدن فایل
گزارش با
پیامهای
خطای
بیفایده
جلوگیری
میکند، در
شرایطی که
socat به عنوان
سرور یا
پروکسی با
حجم بالای
تبادل
استفاده
میشود و
کلاینتها
اغلب اتصال
را قطع
میکنند.
این گزینه
را تنها
همراه با
گزینه fork
استفاده
کنید زیرا
در غیر این
صورت ممکن
است باعث
شود socat حتی
هنگام
خرابی با کد
0 خارج شود.
این گزینه منسوخ شده است، توصیه میشود به جای آن از گزینه children-shutup استفاده کنید. - end-close[=<bool>]
- روش پایان
دادن به
اتصال (که
وابسته به
آدرس است)
را به صرفاً
بستن
توصیفکنندههای
فایل تغییر
میدهد. این
گزینه
زمانی مفید
است که قرار
باشد اتصال
توسط
فرایندهای
دیگر
مجدداً
استفاده
شده یا با
آنها به
اشتراک
گذاشته شود
(مثال).
بهطور معمول، اتصالات سوکت با shutdown(2) خاتمه مییابند که حتی اگر سوکت بین چندین فرایند به اشتراک گذاشته شده باشد، آن را میبندد. close(2) سوکت را از فرایند جدا میکند اما تا زمانی که پیوندهایی از سایر فرایندها وجود داشته باشد، آن را فعال نگه میدارد.
به همین ترتیب، هنگامی که یک آدرس از نوع EXEC یا SYSTEM خاتمه مییابد، socat معمولاً بهطور صریح زیرفرایند را متوقف میکند. با این گزینه، تنها توصیفکنندههای فایل را میبندد. - shut-none[=<bool>]
- روش قطع کردن (shutdown) بخش نوشتاری یک اتصال (که وابسته به آدرس است) را طوری تغییر میدهد که هیچ کاری انجام ندهد.
- shut-down[=<bool>]
- روش قطع کردن بخش نوشتاری یک اتصال (که وابسته به آدرس است) را به shutdown(fd, SHUT_WR) تغییر میدهد. فقط با سوکتها مفید است.
- shut-close[=<bool>]
- روش قطع کردن بخش نوشتاری یک اتصال (که وابسته به آدرس است) را به close(fd) تغییر میدهد.
- shut-null[=<bool>]
- هنگامی که یک آدرس EOF (پایان فایل) را نشان میدهد، socat یک بسته با اندازه صفر را به کانال نوشتن آدرس دیگر ارسال میکند تا وضعیت EOF را انتقال دهد. این گزینه با UDP و سایر پروتکلهای دیتاگرام مفید است. در برابر netcat و socat با گزینه null-eof آزمایش شده است.
- null-eof[=<bool>]
- بهطور معمول socat بستههای خالی (با داده بار صفر) که به سوکتهای دیتاگرام میرسند را نادیده میگیرد تا در برابر اسکنهای پورت دوام بیاورد. با این گزینه، socat بستههای دیتاگرام خالی را به عنوان نشانگر EOF تفسیر میکند (گزینه shut-null را ببینید).
- ioctl-void=<request>
- تابع ioctl() را با مقدار request به عنوان آرگومان دوم و NULL به عنوان آرگومان سوم فراخوانی میکند. این گزینه امکان بهرهبرداری از ioctlهایی را فراهم میکند که بهطور صریح در socat پیادهسازی نشدهاند.
- ioctl-int=<request>:<value>
- تابع ioctl() را با مقدار request به عنوان آرگومان دوم و مقدار عدد صحیح (integer) به عنوان آرگومان سوم فراخوانی میکند.
- ioctl-intp=<request>:<value>
- تابع ioctl() را با مقدار request به عنوان آرگومان دوم و اشارهگری به مقدار عدد صحیح به عنوان آرگومان سوم فراخوانی میکند.
- ioctl-bin=<request>:<value>
- تابع ioctl() را با مقدار request به عنوان آرگومان دوم و اشارهگری به مقدار داده ارائهشده به عنوان آرگومان سوم فراخوانی میکند. این داده باید در قالب <dalan> مشخص شود.
- ioctl-string=<request>:<value>
- تابع ioctl() را با مقدار request به عنوان آرگومان دوم و اشارهگری به رشته دادهشده به عنوان آرگومان سوم فراخوانی میکند. قالب <dalan>.
گروه گزینه NAMED
این
گزینهها
روی
ورودیهای
سیستم فایل
کار
میکنند.
لطفاً توجه
داشته
باشید که در
آدرسهای
کلاینت
دامین
یونیکس،
این به
معنای
ورودی bind
است، نه
ورودی
مقصد/همتا.
همچنین
گزینههای
user، group و mode را
ببینید.
- user-early=<user>
- کاربر <user> (مالک) ورودی سیستم فایل را پیش از دسترسی به آن، با استفاده از فراخوانی سیستمی chown() تغییر میدهد. این فراخوانی ممکن است به دسترسی ریشه (root) نیاز داشته باشد.
- group-early=<group>
- گروه <group> ورودی سیستم فایل را پیش از دسترسی به آن، با استفاده از فراخوانی سیستمی chown() تغییر میدهد. این فراخوانی ممکن است به عضویت در گروه یا دسترسی ریشه (root) نیاز داشته باشد.
- perm-early=<mode>
- حالت <mode> [mode_t] ورودی سیستم فایل را پیش از دسترسی به آن، با استفاده از فراخوانی سیستمی chmod() تغییر میدهد. این فراخوانی ممکن است به مالکیت یا دسترسی ریشه (root) نیاز داشته باشد.
- unlink-early[=<bool>]
- فایل را پیش از باز کردن آن و حتی پیش از اعمال user-early و غیره حذف (unlink) میکند.
- unlink[=<bool>]
- فایل را پیش از دسترسی به آن، اما پس از user-early و غیره حذف (unlink) میکند.
- unlink-late[=<bool>]
- فایل را پس از باز کردن آن حذف (unlink) میکند تا پس از یک شرایط رقابتی کوتاه، برای سایر فرایندها غیرقابل دسترسی شود.
- unlink-close[=<bool>]
- حذف ورودی سیستم فایل مربوط به آدرسها را هنگام بستن آدرس کنترل میکند. برای پایپهای نامگذاریشده، سوکتهای دامین یونیکس، و پیوندهای نمادین آدرسهای pty، پیشفرض حذف کردن (1) است؛ برای فایلهای ایجادشده، فایلهای بازشده، و فایلهای بازشده عمومی، پیشفرض نگهداشتن (0) است. تنظیم این گزینه روی 1 ورودی را حذف میکند و 0 آن را نگه میدارد. نبود مقدار به معنای 1 است.
گروه گزینه OPEN
گزینههای
گروه OPEN
امکان
تنظیم
فلگها را
با
فراخوانی
سیستمی
open() فراهم
میکنند. به
عنوان
مثال،
گزینه `creat’
فلگ O_CREAT را
تنظیم
میکند.
هنگامی که
آدرس
استفادهشده
از open()
استفاده
نمیکند
(مانند STDIO)،
فراخوانی
fcntl(..., F_SETFL, ...) به
جای آن
استفاده
میشود.
همچنین
گزینههای
append و nonblock را
ببینید.
- creat[=<bool>]
- در صورتی که فایل وجود نداشته باشد، آن را ایجاد میکند (مثال).
- dsync[=<bool>]
- فراخوانیهای write() را تا زمانی که فراداده (metainfo) بهطور فیزیکی روی رسانه نوشته شود مسدود میکند.
- excl[=<bool>]
- همراه با گزینه creat، اگر فایل وجود داشته باشد منجر به خطا میشود.
- largefile[=<bool>]
- در سیستمهای ۳۲ بیتی، امکان استفاده از فایل بزرگتر از 2^31 بایت را فراهم میکند.
- noatime[=<bool>]
- گزینه O_NOATIME را تنظیم میکند تا خواندنها مهر زمانی دسترسی را تغییر ندهند.
- noctty[=<bool>]
- این فایل را به ترمینال کنترلی تبدیل نمیکند.
- nofollow[=<bool>]
- پیوندهای نمادین را دنبال نمیکند.
- اجازه اشتراکگذاری این فایل با سایر فرایندها را نمیدهد.
- به سایر فرایندها اجازه باز کردن این فایل برای نوشتن را نمیدهد.
- rsync[=<bool>]
- فراخوانی write() را تا زمانی که فراداده بهطور فیزیکی روی رسانه نوشته شود مسدود میکند.
- sync[=<bool>]
- فراخوانی write() را تا زمانی که دادهها بهطور فیزیکی روی رسانه نوشته شوند مسدود میکند.
- rdonly[=<bool>]
- فایل را تنها برای خواندن باز میکند.
- wronly[=<bool>]
- فایل را تنها برای نوشتن باز میکند.
- trunc[=<bool>]
- هنگام باز کردن فایل، اندازه آن را به 0 کاهش میدهد (کوتاه میکند).
گروه گزینه REG و BLK
این گزینهها معمولاً روی یک توصیفکننده فایل یونیکس اعمال میشوند، اما مفهوم آنها فقط روی فایلی که از دسترسی تصادفی پشتیبانی کند معنادار است.
- seek=<offset>
- فراخوانی سیستمی lseek(fd, <offset>, SEEK_SET) (یا lseek64 ) را اعمال میکند، بنابراین اشارهگر فایل را بهطور مطلق در موقعیت <offset> [off_t یا off64_t] قرار میدهد. لطفاً توجه داشته باشید که در صورت نبود مقدار، پیشفرض 1 است نه 0.
- seek-cur=<offset>
- فراخوانی سیستمی lseek(fd, <offset>, SEEK_CUR) (یا lseek64 ) را اعمال میکند، بنابراین اشارهگر فایل را به اندازه <offset> [off_t یا off64_t] بایت نسبت به موقعیت فعلیاش (که معمولاً 0 است) جابهجا میکند. لطفاً توجه داشته باشید که در صورت نبود مقدار، پیشفرض 1 است نه 0.
- seek-end=<offset>
- فراخوانی سیستمی lseek(fd, <offset>, SEEK_END) (یا lseek64 ) را اعمال میکند، بنابراین اشارهگر فایل را به اندازه <offset> [off_t یا off64_t] بایت نسبت به انتهای فعلی فایل جابهجا میکند. لطفاً توجه داشته باشید که در صورت نبود مقدار، پیشفرض 1 است نه 0.
- ftruncate=<offset>
- فراخوانی سیستمی ftruncate(fd, <offset>) (یا در صورت در دسترس بودن ftruncate64 ) را اعمال میکند، بنابراین فایل را در موقعیت <offset> [off_t یا off64_t] کوتاه میکند. لطفاً توجه داشته باشید که در صورت نبود مقدار، پیشفرض 1 است نه 0.
- secrm[=<bool>]
- unrm[=<bool>]
- compr[=<bool>]
- fs-sync[=<bool>]
- immutable[=<bool>]
- fs-append[=<bool>]
- nodump[=<bool>]
- fs-noatime[=<bool>]
- journal-data[=<bool>]
- notail[=<bool>]
- dirsync[=<bool>]
- این گزینهها ویژگیهای غیر استاندارد فایل را در سیستمعاملها و سیستمهای فایلی که از این قابلیتها پشتیبانی میکنند (مانند لینوکس با ext2fs و جانشینان آن، xfs، یا reiserfs) تغییر میدهند. برای اطلاعات بیشتر در مورد این گزینهها، man 1 chattr را ببینید. لطفاً توجه داشته باشید که ممکن است بین ایجاد فایل و اعمال این گزینهها شرایط رقابتی رخ دهد.
گزینههای PIPE
این گزینهها را میتوان روی پایپها (fifos) اعمال کرد.
- f-setpipe-sz=<int>
- setpipe=<int>
- تعداد بایتهایی که یک پایپ میتواند بافر کند را تعیین میکند. اگر بایتهای بیشتری نوشته شود ممکن است فرایند نویسنده مسدود شود. هنگامی که بایتهای بیشتری در یک فراخوانی واحد write() نوشته شود، فرایند نویسنده مسدود شده و ممکن است هرگز بازیابی نشود.
گزینههای عمومی آدرس
این گزینهها را میتوان برای تمامی انواع آدرس اعمال کرد. آنها برخی از ویژگیهای فرایند را تغییر میدهند که پس از باز کردن آدرس به حالت اولیه بازگردانده میشوند.
- chdir=<filename>
- cd=<filename>
- دایرکتوری کاری را تغییر میدهد. پس از باز کردن آدرس، فرایند اصلی به دایرکتوری کاری اولیه بازمیگردد. زیرفرایندها این تنظیم موقت را به ارث میبرند.
- umask=<mode>
- مقدار umask
فرایند را
پیش از باز
کردن آدرس
به <mode> [mode_t]
تنظیم
میکند.
زمانی مفید
است که
ورودیهای
سیستم فایل
ایجاد شوند
یا یک شل یا
برنامه
اجرا گردد.
معمولاً
مقدار
بهصورت
عدد اکتال
با یک ’0’
آغازین
مشخص
میشود.
مقدار umask فرایند توسط فرایندهای فرزند به ارث برده میشود.
نکته: umask مقداری معکوس است: ایجاد یک فایل با umask=0026 منجر به مجوزهای دسترسی 0640 میشود.
گروه گزینه PROCESS
گزینههای این گروه به جای اینکه صرفاً روی یک کانال داده تأثیر بگذارند، ویژگیهای فرایند را تغییر میدهند. برای آدرسهای EXEC و SYSTEM و برای آدرسهای نوع LISTEN و CONNECT همراه با گزینه fork، این گزینهها به جای فرایند اصلی socat روی فرایندهای فرزند اعمال میشوند.
- chroot=<directory>
- پس از پردازش آدرس، یک عملیات chroot() به دایرکتوری <directory> انجام میدهد (مثال). این فراخوانی ممکن است به دسترسی ریشه (root) نیاز داشته باشد.
- chroot-early=<directory>
- پیش از باز کردن آدرس، یک عملیات chroot() به دایرکتوری <directory> انجام میدهد. این فراخوانی ممکن است به دسترسی ریشه (root) نیاز داشته باشد.
- setgid=<group>
- پس از پردازش آدرس، گروه اصلی <group> فرایند را تغییر میدهد. این فراخوانی ممکن است به دسترسی ریشه (root) نیاز داشته باشد. لطفاً توجه داشته باشید که این گزینه سایر امتیازات مربوط به گروه را لغو نمیکند.
- setgid-early=<group>
- مانند setgid است اما پیش از باز کردن آدرس انجام میشود.
- setuid=<user>
- پس از پردازش آدرس، کاربر <user> (مالک) فرایند را تغییر میدهد. این فراخوانی ممکن است به دسترسی ریشه (root) نیاز داشته باشد. لطفاً توجه داشته باشید که این گزینه امتیازات مربوط به گروه را لغو نمیکند. بررسی کنید که آیا گزینه su برای نیازهای شما مناسبتر است یا خیر.
- setuid-early=<user>
- مانند setuid است اما پیش از باز کردن آدرس انجام میشود.
- su=<user>
- پس از پردازش آدرس، کاربر <user> (مالک) و گروههای فرایند را تغییر میدهد (مثال). این فراخوانی ممکن است به دسترسی ریشه (root) نیاز داشته باشد.
- su-d=<user>
- نام کوتاه برای substuser-delayed. پس از پردازش آدرس، کاربر <user> (مالک) و گروههای فرایند را تغییر میدهد (مثال). اطلاعات کاربر و گروههای او پیش از فراخوانی احتمالی chroot() دریافت میشوند. این فراخوانی ممکن است به دسترسی ریشه (root) نیاز داشته باشد.
- setpgid=<pid_t>
- فرایند را عضو گروه فرایندی مشخصشده <pid_t> میکند. اگر مقداری داده نشود، یا اگر مقدار 0 یا 1 باشد، فرایند رهبر یک گروه فرایندی جدید میشود.
- setsid
- فرایند را به رهبر یک نشست (session) جدید تبدیل میکند (مثال).
- netns=<net-namespace-name>
- پیش از باز
کردن آدرس
تلاش
میکند به
فضای نام
شبکه
نامبرده
سوئیچ کند.
پس از باز
کردن آدرس،
به فضای نام
قبلی
بازمیگردد
(مثال با
فورواردر
TCP، مثال با
اتصال شبکه
مجازی).
تنها در لینوکس؛ نیازمند دسترسی ریشه (root) است؛ از گزینه --experimental استفاده کنید.
گروه گزینه READLINE
به دلیل
محدودیتهای
مجوزی،
قابلیت readline در
دبیان
غیرفعال
است (بخش BUGS را
ببینید).
این
گزینهها
برای نوع
آدرس readline
اعمال
میشوند.
- history=<filename>
- تاریخچه (history) را از/به <filename> میخواند و مینویسد (مثال).
- noprompt
- از نسخه 1.4.0، socat بهطور پیشفرض با به خاطر سپردن آخرین خط ناقص خروجی، سعی میکند اعلانی (prompt) تعیین کند که سپس به فراخوانی readline ارسال میشود. با این گزینه، socat هیچ اعلانی را به readline ارسال نمیکند، بنابراین ویرایش خط در ستون اول ترمینال آغاز میشود.
- noecho=<pattern>
- یک الگوی باقاعده برای اعلان مشخص میکند که از نمایش خط ورودی بعدی بر روی صفحه و اضافه شدن آن به تاریخچه جلوگیری میکند. اعلان به عنوان متنی تعریف میشود که پس از آخرین نویسه خط جدید و پیش از تایپ یک نویسه ورودی، در آدرس readline چاپ شده است. این الگو یک عبارت باقاعده (regex) است، مانند "^[Pp]assword:.*$" یا "([Uu]ser:|[Pp]assword:)". برای جزئیات regex(7) را ببینید. (مثال)
- prompt=<string>
- این رشته را به عنوان اعلان به تابع readline ارسال میکند. readline هنگام پیمایش در تاریخچه، این اعلان را چاپ میکند. اگر این رشته با اعلان ثابتی که توسط یک برنامه تعاملی روی آدرس دیگر socat صادر میشود مطابقت داشته باشد، ظاهر و تجربه یکدستی حاصل میشود.
گروه گزینه APPLICATION
این گروه شامل گزینههایی است که در سطح داده عمل میکنند. توجه داشته باشید که این گزینهها تنها برای دادههای "خام" منتقلشده توسط socat اعمال میشوند، نه برای دادههای پروتکلی که توسط آدرسهایی مانند PROXY استفاده میشوند.
- cr
- هنگام نوشتن/خواندن روی این کانال، نویسه پیشفرض پایان خط NL (’\n’, 0x0a) را از/به CR (’\r’, 0x0d) تبدیل میکند.
- crnl
- هنگام نوشتن/خواندن روی این کانال، نویسه پیشفرض پایان خط NL (’\n’, 0x0a) را از/به CRNL ("\r\n", 0x0d0a) تبدیل میکند (مثال). نکته: socat بهسادگی تمامی نویسههای CR را حذف میکند.
- ignoreeof
- هنگامی که پایان فایل (EOF) در این کانال رخ میدهد، socat آن را نادیده گرفته و تلاش میکند دادههای بیشتری بخواند (مانند "tail -f") (مثال).
- readbytes=<bytes>
- socat فقط همین تعداد بایت را از این آدرس میخواند (آدرس تنها همین تعداد بایت را برای انتقال ارائه داده و پس از آن وانمود میکند که به EOF رسیده است). باید بزرگتر از 0 باشد.
- lockfile=<filename>
- اگر فایل قفل وجود داشته باشد، با خطا خارج میشود. اگر فایل قفل وجود نداشته باشد، آن را ایجاد کرده و ادامه میدهد، و هنگام خروج فایل قفل را حذف (unlink) میکند.
- waitlock=<filename>
- اگر فایل قفل وجود داشته باشد، منتظر ناپدید شدن آن میماند. هنگامی که فایل قفل وجود نداشته باشد، آن را ایجاد کرده و ادامه میدهد، و هنگام خروج فایل قفل را حذف میکند.
- escape=<int>
- کد عددی نویسهای را مشخص میکند که پایان فایل (EOF) را در جریان ورودی فعال میکند. این گزینه برای ترمینال در حالت خام مفید است (مثال).
گروه گزینه SOCKET
این گزینهها برای تمامی انواع سوکتها مانند IP یا دامین یونیکس در نظر گرفته شدهاند. بیشتر آنها با یک فراخوانی setsockopt() اعمال میشوند.
- bind=<sockname>
- سوکت را با
استفاده از
فراخوانی
سیستمی
bind() به
آدرس سوکت
دادهشده
متصل (bind)
میکند.
قالب <sockname> به
دامنه سوکت
بستگی دارد:
در IP4 و IP6 قالب
[hostname|hostaddress][:(service|port)] مجاز
است (مثال)،
در VSOCK قالب [cid][:(port)]
مجاز است.
همچنین ببینید: unix-bind-tempname - connect-timeout=<seconds>
- تلاش برای برقراری اتصال را پس از <seconds> [timeval] ثانیه با وضعیت خطا لغو میکند.
- so-bindtodevice=<interface>
- سوکت را به رابط شبکه <interface> دادهشده متصل (bind) میکند. این گزینه ممکن است به دسترسی ریشه (root) نیاز داشته باشد.
- broadcast
- برای سوکتهای دیتاگرام، اجازه ارسال به آدرسهای برودکست و دریافت بستههای آدرسدهیشده به آدرسهای برودکست را میدهد.
- debug
- اشکالزدایی سوکت را فعال میکند.
- dontroute
- فقط با همتاهای مستقیماً متصلشده ارتباط برقرار میکند و از مسیریابها استفاده نمیکند.
- keepalive
- ارسال پیامهای زنده نگهداشتن (keepalive) را روی سوکت فعال میکند.
- linger=<seconds>
- فراخوانیهای shutdown() یا close() را تا پایان انتقال دادهها یا به پایان رسیدن مهلت زمانی دادهشده [int] مسدود میکند.
- oobinline
- دادههای خارج از باند (out-of-band) را در جریان داده ورودی قرار میدهد.
- priority=<priority>
- اولویت تعریفشده توسط پروتکل <priority> [<int>] را برای بستههای خروجی تنظیم میکند.
- rcvbuf=<bytes>
- اندازه بافر دریافت را پس از فراخوانی socket() به <bytes> [int] بایت تنظیم میکند. در سوکتهای TCP، این مقدار متناظر با حداکثر اندازه پنجره سوکت است.
- rcvbuf-late=<bytes>
- زمانی که سوکت از قبل متصل است، اندازه بافر دریافت را به <bytes> [int] بایت تنظیم میکند. در سوکتهای TCP، این مقدار متناظر با حداکثر اندازه پنجره سوکت است.
- so-rcvtimeo=<time>, rcvtimeo=<time>
- مدت زمانی [int] را تعیین میکند که پس از آن در صورت عدم دریافت داده، توابعی مانند recv() ، read() و غیره با مهلت زمانی مواجه میشوند. توجه داشته باشید که در فاز انتقال، socat این توابع را تنها زمانی فراخوانی میکند که select() گزارش کرده باشد که داده در دسترس است. با این حال این گزینه در آدرسهای DTLS برای ایجاد مهلت زمانی در حین مذاکره اتصال مفید است.
- so-sndtimeo=<time>, sndtimeo=<time>
- مانند so-rcvtimeo است، اما برای send . کاربرد شناختهشدهای ندارد.
- rcvlowat=<bytes>
- حداقل تعداد بایتهای دریافتی [int] را مشخص میکند که پس از آن لایه سوکت، دادههای بافرشده را به socat تحویل میدهد.
- reuseaddr[=[0|1]]
- به
سوکتهای
دیگر اجازه
میدهد به
یک آدرس bind
شوند حتی
اگر
بخشهایی
از آن
(مانند پورت
محلی) در
حال حاضر
توسط socat در
حال
استفاده
باشد.
از نسخه 1.8.0، این گزینه سوکت بهطور خودکار برای آدرسهای TCP LISTEN تنظیم میشود. اگر پیشفرض سیستم را ترجیح میدهید (هیچ فراخوانی مربوط به setsockopt(...SO_REUSEADDR...) انجام نشود)، از قالب reuseaddr= استفاده کنید.
(مثال). - sndbuf=<bytes>
- اندازه بافر ارسال را پس از فراخوانی socket() به <bytes> [int] بایت تنظیم میکند.
- sndbuf-late=<bytes>
- زمانی که سوکت متصل شد، اندازه بافر ارسال را به <bytes> [int] بایت تنظیم میکند.
- sndlowat=<bytes>
- حداقل تعداد بایتهای موجود در بافر ارسال را مشخص میکند که پیش از آن، لایه سوکت دادهها را ارسال نخواهد کرد به <bytes> [int].
- pf=<string>
- استفاده از نسخه یا پروتکل IP مشخصشده را تحمیل میکند. <string> میتواند مقداری مانند "ip4" یا "ip6" باشد. مقدار حاصل به عنوان آرگومان اول در فراخوانیهای socket() یا socketpair() استفاده میشود. این گزینه بر تحلیل آدرس و نحو مورد نیاز گزینههای bind و range تأثیر میگذارد.
- socktype=<type>
- نوع سوکت را که به عنوان آرگومان دوم در فراخوانیهای socket() یا socketpair() مشخص میشود، به <type> [int] تنظیم میکند. تحلیل آدرس تحت تأثیر این گزینه قرار نمیگیرد. در لینوکس، 1 به معنای سوکت مبتنی بر جریان، 2 به معنای سوکت دیتاگرام، 3 به معنای سوکت خام، و 5 seqpacket (جریان با حفظ مرز بستهها) است. دیتاگرامها زمانی مفید هستند که بخواهید مرز بستهها حفظ شود.
- protocol
- پروتکل سوکت را که به عنوان آرگومان سوم در فراخوانیهای socket() یا socketpair() تعیین میشود، به <protocol> [int] تنظیم میکند. تحلیل آدرس تحت تأثیر این گزینه قرار نمیگیرد. 6 به معنای TCP و 17 به معنای UDP است.
- reuseport
- گزینه سوکت SO_REUSEPORT را تنظیم میکند.
- so-timestamp
- گزینه سوکت SO_TIMESTAMP را تنظیم میکند. این گزینه دریافت و ثبت پیامهای جانبی برچسب زمانی را فعال میکند.
- setsockopt=<level>:<optname>:<optval>
- تابع setsockopt() را برای سوکت با پارامترهای دادهشده فراخوانی میکند. پارامتر level [int] به عنوان آرگومان دوم در setsockopt() استفاده میشود و لایه را مشخص میکند، مثلاً SOL_TCP برای TCP (6 در لینوکس)، یا SOL_SOCKET برای لایه سوکت (1 در لینوکس). پارامتر optname [int] آرگومان سوم در setsockopt() است و مشخص میکند کدام گزینه سوکت باید تنظیم شود. برای اعداد واقعی ممکن است نیاز باشد فایلهای include مناسب سیستم خود را بررسی کنید. برای پارامترهای چهارم و پنجم setsockopt()، پارامتر value [dalan] توالی دلخواهی از بایتها را مشخص میکند که از طریق اشارهگر همراه با پارامتر طول که بهطور خودکار استخراج میشود، به تابع ارسال میگردد.
- setsockopt-int=<level>:<optname>:<optval>
- مانند setsockopt است، اما <optval> اشارهگری به int [int] است.
- setsockopt-listen=<level>:<optname>:<optval>
- مانند setsockopt است، اما برای آدرسهای نوع listen به جای سوکت متصلشده، بر روی سوکت شنونده اعمال میشود.
- setsockopt-string=<level>:<optname>:<optval>
- مانند setsockopt است، اما <optval> یک رشته است. این رشته همراه با نویسه نال پایانی به تابع ارسال میشود، و پارامتر طول بهطور خودکار از داده استخراج میگردد.
- setsockopt-socket=<level>:<optname>:<optval>
- مانند setsockopt است، اما پیش از سایر عملیات ( bind() ، connect() ، accept() ، ...) روی سوکت اعمال میشود.
- setsockopt-connected=<level>:<optname>:<optval>
- مانند setsockopt است، اما تنها زمانی اعمال میشود که سوکت با یک فراخوانی connect() یا listen() متصل شده باشد.
گروه گزینه UNIX
این گزینهها برای آدرسهای مبتنی بر دامین یونیکس اعمال میشوند.
- bind-tempname[=/tmp/pre-XXXXXX],
- unix-bind-tempname[=/tmp/pre-XXXXXX]"
به یک مسیر
تصادفی یا
آدرس
تصادفی (روی
سوکتهای
فضای نام
انتزاعی)
متصل (bind)
میشود. این
گزینه با
آدرسهای
کلاینت
دیتاگرام
(SENDTO یا
CLIENT) که در
فرایندهای
فرزندی باز
میشوند که
از یک
فرایند
والد مشترک
انشعاب
یافتهاند
(fork شدهاند) و
این
فرایندهای
فرزند
نمیتوانند
گزینههای
bind متفاوتی
داشته
باشند،
مفید است.
در مسیر،
نویسههای
X مشابه
tempnam(3) با یک
توالی
تصادفی از
نویسهها
جایگزین
میشوند.
هنگامی که
هیچ
آرگومانی
داده نشود،
socat یک مقدار
پیشفرض
مانند
/tmp/fileXXXXXX را در
نظر
میگیرد.
- unix-tightsocklen[=(0|1)]
- در عملیات سوکت، طولی از آدرس سوکت را ارسال میکند که کل رکورد struct sockaddr_un را در بر نمیگیرد، بلکه (در کنار سایر مؤلفهها) تنها بخش مرتبط نام فایل یا رشته انتزاعی را شامل میشود. پیشفرض 1 است.
گروههای گزینه IP4 و IP6
این گزینهها میتوانند با سوکتهای مبتنی بر IPv4 و IPv6 استفاده شوند.
- tos=<tos>
- فیلد نوع سرویس (TOS) بستههای خروجی را به <tos> [byte] تنظیم میکند (RFC 791 را ببینید).
- ttl=<ttl>
- فیلد زمان حیات (TTL) بستههای خروجی را به <ttl> [byte] تنظیم میکند.
- ip-options=<data>
- گزینههای
IP مانند
مسیریابی
مبدأ را
تنظیم
میکند.
باید در
قالب
باینری
داده شود،
قالب
توصیهشده
یک "x"
آغازین و به
دنبال آن
تعداد زوجی
از ارقام
هگزادسیمال
است. این
گزینه ممکن
است چندین
بار
استفاده
شود،
دادهها به
یکدیگر
الحاق
میشوند. به
عنوان
مثال، برای
اتصال به
میزبان 10.0.0.1 از
طریق یک
گیتوی با
استفاده از
یک مسیر
مبدأ منعطف
(loose source route)،
گیتوی را
به عنوان
پارامتر
آدرس قرار
دهید و یک
مسیر مبدأ
منعطف را با
استفاده از
گزینه
ip-options=x8307040a000001
تنظیم کنید.
گزینههای IP در RFC 791 تعریف شدهاند.
- mtudiscover=<0|1|2>
- مقادیر 0، 1 یا 2 را میپذیرد تا کشف MTU مسیر (path MTU discovery) را روی این سوکت به ترتیب هرگز، در صورت تمایل، یا همیشه استفاده کند.
- ip-pktinfo
- گزینه سوکت IP_PKTINFO را تنظیم میکند. این گزینه دریافت و ثبت پیامهای جانبی حاوی آدرس مقصد و رابط شبکه را فعال میکند (لینوکس) (مثال).
- ip-recverr
- گزینه سوکت IP_RECVERR را تنظیم میکند. این گزینه دریافت و ثبت پیامهای جانبی حاوی اطلاعات تفصیلی خطا را فعال میکند.
- ip-recvopts
- گزینه سوکت IP_RECVOPTS را تنظیم میکند. این گزینه دریافت و ثبت پیامهای جانبی گزینههای IP را فعال میکند (لینوکس، *BSD).
- ip-recvtos
- گزینه سوکت IP_RECVTOS را تنظیم میکند. این گزینه دریافت و ثبت پیامهای جانبی نوع سرویس (TOS) را فعال میکند (لینوکس).
- ip-recvttl
- گزینه سوکت IP_RECVTTL را تنظیم میکند. این گزینه دریافت و ثبت پیامهای جانبی زمان حیات (TTL) را فعال میکند (لینوکس، *BSD).
- ip-recvdstaddr
- گزینه سوکت IP_RECVDSTADDR را تنظیم میکند. این گزینه دریافت و ثبت پیامهای جانبی حاوی آدرس مقصد را فعال میکند (*BSD) (مثال).
- ip-recvif
- گزینه سوکت IP_RECVIF را تنظیم میکند. این گزینه دریافت و ثبت پیامهای جانبی رابط شبکه را فعال میکند (*BSD) (مثال).
- ip-add-membership=<multicast-address:interface-address>
- ip-add-membership=<multicast-address:interface-name>
- ip-add-membership=<multicast-address:interface-index>
- ip-add-membership=<multicast-address:interface-address:interface-name>
- ip-add-membership=<multicast-address:interface-address:interface-index>
- سوکت را عضو
گروه
چندپخشی
مشخصشده
میکند. این
گزینه فقط
برای IPv4 کار
میکند،
برای نسخه IPv6
به ipv6-join-group
مراجعه
کنید. این
گزینه آدرس
IP گروه
چندپخشی و
اطلاعات
مربوط به
رابط شبکه
مورد نظر را
دریافت
میکند.
رایجترین
نحو همان
مورد اول
است، در
حالی که
سایر موارد
فقط در
سیستمهایی
در دسترس
هستند که
struct mreqn را
ارائه
میدهند
(لینوکس).
اندیسهای رابطهای شبکه فعال را میتوان با استفاده از ابزار procan مشاهده کرد. - ip-add-source-membership=<multicast-address:interface-address:source-address>
- سوکت را برای مبدأ مشخصشده، عضو گروه چندپخشی تعیینشده میکند؛ یعنی تنها ترافیک چندپخشی حاصل از این آدرس تحویل داده خواهد شد. این گزینه فقط برای IPv4 کار میکند، برای نسخه IPv6 گزینه ipv6-join-source-group را ببینید. این گزینه آدرس IP گروه چندپخشی، آدرس IP رابط شبکه مورد نظر و آدرس IP مبدأ ترافیک چندپخشی را دریافت میکند.
- ipv6-join-group=<multicast-address:interface-name>
- ipv6-join-group=<multicast-address:interface-index>
- سوکت را عضو گروه چندپخشی مشخصشده میکند. این گزینه فقط برای IPv6 کار میکند، برای نسخه IPv4 گزینه ip-add-membership را ببینید. این گزینه آدرس IP گروه چندپخشی و اطلاعات رابط شبکه مورد نظر را دریافت میکند. اندیسهای رابطهای شبکه فعال را میتوان با استفاده از ابزار procan مشاهده کرد.
- ipv6-join-source-group=<multicast-address:interface-name:source-address>
- ipv6-join-source-group=<multicast-address:interface-index:source-address>
- سوکت را
برای مبدأ
مشخصشده،
عضو گروه
چندپخشی
تعیینشده
میکند؛
یعنی تنها
ترافیک
چندپخشی
ارسالشده
از این آدرس
تحویل داده
خواهد شد.
این گزینه
فقط برای IPv6
کار
میکند،
برای نسخه IPv4
گزینه ip-add-source-membership
را ببینید.
این گزینه
آدرس IP گروه
چندپخشی،
اطلاعات
مربوط به
رابط شبکه
مورد نظر و
آدرس IP مبدأ
ترافیک
چندپخشی را
دریافت
میکند.
اندیسهای
رابطهای
شبکه فعال
را میتوان
با استفاده
از ابزار procan
مشاهده کرد.
این قابلیت آزمایشی است. - ip-multicast-if=<hostname>
- نام میزبان یا آدرس رابط شبکهای را مشخص میکند که باید برای ترافیک چندپخشی استفاده شود.
- ip-multicast-loop[=<bool>]
- مشخص میکند که آیا ترافیک چندپخشی خروجی باید به رابط بازگردد (loop back شود) یا خیر.
- ip-multicast-ttl=<byte>
- مقدار TTL مورد استفاده برای ترافیک چندپخشی خروجی را تنظیم میکند. پیشفرض 1 است.
- ip-transparent
- گزینه سوکت IP_TRANSPARENT را تنظیم میکند. این گزینه ممکن است به دسترسی ریشه (root) نیاز داشته باشد.
گزینههای تحلیلگر نام (Resolver)
این گزینهها بهطور موقت رفتار تحلیل نام میزبان را تغییر میدهند. گزینههای به فرم ai-* بر رفتار تابع getaddrinfo() تأثیر میگذارند که شامل جستجوهای مبتنی بر /etc/hosts و NIS است.
آدرسهای به فرم res-* تنها بر جستجوهای DNS تأثیر میگذارند، و فقط زمانی که نتیجه در nscd کَش نشده باشد. این گزینهها ممکن است در تمامی سیستمعاملها یا پیادهسازیهای libc کار نکنند.
- ai-addrconfig[=0|1]
- addrconfig[=0|1]
- فلگ AI_ADDRCONFIG را تنظیم یا لغو میکند تا از تحلیل نام به خانوادههای آدرسی که روی رایانه در دسترس نیستند (مانند IPv6) جلوگیری شود. در صورتی که تحلیلگر نام، راهنمایی مربوط به خانواده آدرس را از آدرس Socat یا پیشفرضها دریافت نکند، مقدار پیشفرض 1 است.
- ai-passive[=0|1]
- passive[=0|1]
- فلگ AI_PASSIVE را برای فراخوانیهای getaddrinfo() تنظیم یا لغو میکند. پیشفرض برای آدرسهای نوع LISTEN، RECV و RECVFROM، و همراه با گزینه bind برابر با 1 است.
- ai-v4mapped[=0|1]
- v4mapped[=0|1]
- فلگ AI_V4MAPPED را برای getaddrinfo() تنظیم یا لغو میکند. در آدرسهای socat که نیازمند آدرسهای IPv6 هستند، این گزینه آدرسهای IPv4 را به آدرس IPv6 متناظر [::ffff:*:*] تحلیل میکند. برای آدرسهای IPv6 در socat، مقدار پیشفرض 1 است.
- ai-all[=0|1]
- فلگ AI_ALL را برای getaddrinfo() تنظیم یا لغو میکند.
- res-debug
- res-aaonly
- res-usevc
- res-primary
- res-igntc
- res-recurse
- res-defnames
- res-stayopen
- res-dnsrch
- این
گزینهها
فلگهای
متناظر
گزینه resolver
(تحلیلگر
نام) را
تنظیم
میکنند.
برای پاک
کردن یک
گزینه
پیشفرض،
عبارت "=0" را
به انتهای
آن اضافه
کنید. برای
کسب
اطلاعات
بیشتر
درباره این
گزینهها
صفحه
راهنمای resolver(5)
را ببینید.
Socat پس از
پایان
مرحله باز
کردن آدرس،
مقادیر
پیشین را
بازیابی
میکند،
بنابراین
این
گزینهها
تنها برای
آدرسی که
روی آن
اعمال
شدهاند
معتبر
هستند.
لطفاً توجه داشته باشید که این فلگها فقط بر تحلیل نام DNS تأثیر میگذارند و روی تحلیل نام مبتنی بر hosts یا NIS اثری ندارند، و همچنین زمانی که (g)libc نتایج را از nscd دریافت میکند هیچ تأثیری ندارند. - res-retrans=<int>
- بازه زمانی ارسال مجدد تحلیلگر DNS را تنظیم میکند (بر اساس یک قابلیت نامستند).
- res-retry=<int>
- تعداد دفعات تلاش مجدد تحلیلگر DNS را تنظیم میکند (بر اساس یک قابلیت نامستند).
- res-nsaddr=<ipaddr>[:<port>]
- تلاش میکند تنظیمات nameserver بارگذاریشده از /etc/resolv.conf را با نوشتن نشانی IPv4 ارائهشده در فیلد نامستند _res:nsaddr_list[0] بازنویسی کند. فایل /etc/hosts همچنان توسط تحلیلگر بررسی میشود. لطفاً توجه داشته باشید که در صورت در حال اجرا بودن nscd در glibc، همیشه ابتدا از آن پرسوجو خواهد شد!
گروه گزینههای IP6
این گزینهها تنها روی سوکتهای مبتنی بر IPv6 قابل استفاده هستند. برای گزینههایی که میتوانند روی هر دو سوکت IPv4 و IPv6 اعمال شوند، گزینههای IP را ببینید.
- ipv6only[=<bool>]
- گزینه سوکت IPV6_V6ONLY را تنظیم میکند. اگر 0 باشد، پشته TCP اتصالهای با پروتکل IPv4 را نیز روی همین پورت میپذیرد. مقدار پیشفرض وابسته به سیستم است.
- ipv6-recvdstopts
- گزینه سوکت IPV6_RECVDSTOPTS را تنظیم میکند. این گزینه دریافت و ثبت لاگ پیامهای کمکی حاوی گزینههای مقصد را فعال میسازد.
- ipv6-recvhoplimit
- گزینه سوکت IPV6_RECVHOPLIMIT را تنظیم میکند. این گزینه دریافت و ثبت لاگ پیامهای کمکی حاوی محدودیت جهش (hoplimit) را فعال میسازد.
- ipv6-recvhopopts
- گزینه سوکت IPV6_RECVHOPOPTS را تنظیم میکند. این گزینه دریافت و ثبت لاگ پیامهای کمکی حاوی گزینههای جهش را فعال میسازد.
- ipv6-recvpktinfo
- گزینه سوکت IPV6_RECVPKTINFO را تنظیم میکند. این گزینه دریافت و ثبت لاگ پیامهای کمکی حاوی نشانی مقصد و رابط شبکه را فعال میسازد.
- ipv6-unicast-hops=link(TYPE_INT)(<int>)
- گزینه سوکت IPV6_UNICAST_HOPS را تنظیم میکند. این گزینه محدودیت تعداد جهش (TTL) را برای بستههای تکپخشی (unicast) خروجی تعیین میکند.
- ipv6-recvrthdr
- گزینه سوکت IPV6_RECVRTHDR را تنظیم میکند. این گزینه دریافت و ثبت لاگ پیامهای کمکی حاوی اطلاعات مسیریابی را فعال میسازد.
- ipv6-tclass
- گزینه سوکت IPV6_TCLASS را تنظیم میکند. این گزینه کلاس انتقال بستههای خروجی را تعیین میکند.
- ipv6-recvtclass
- گزینه سوکت IPV6_RECVTCLASS را تنظیم میکند. این گزینه دریافت و ثبت لاگ پیامهای کمکی حاوی کلاس انتقال را فعال میسازد.
گروه گزینههای TCP
این گزینهها ممکن است روی سوکتهای TCP اعمال شوند. عملکرد آنها از طریق فراخوانی setsockopt() با پارامترهای مناسب است.
- cork
- بستههای کوچکتر از MSS (حداکثر اندازه قطعه) را ارسال نمیکند.
- defer-accept
- در هنگام شنود، اتصالها را تنها زمانی میپذیرد که دادهها از طرف مقابل دریافت شده باشند.
- keepcnt=<count>
- تعداد دفعات ارسال پیامهای keepalive پیش از بستن سوکت را روی <count> [int] تنظیم میکند.
- keepidle=<seconds>
- مدتزمان بیکاری پیش از ارسال نخستین پیام keepalive را روی <seconds> [int] تنظیم میکند.
- keepintvl=<seconds>
- فاصله زمانی میان دو پیام keepalive را روی <seconds> [int] تنظیم میکند.
- linger2=<seconds>
- مدتزمان نگهداری سوکت در وضعیت FIN-WAIT-2 را روی <seconds> [int] تنظیم میکند.
- mss=<bytes>
- مقدار MSS (حداکثر اندازه قطعه) را پس از فراخوانی socket() روی <bytes> [int] تنظیم میکند. سپس این مقدار با بسته SYN یا SYN/ACK به طرف مقابل پیشنهاد داده میشود (مثال).
- mss-late=<bytes>
- مقدار MSS سوکت را پس از برقراری اتصال روی <bytes> [int] تنظیم میکند.
- nodelay
- الگوریتم Nagle را برای اندازهگیری RTT (زمان رفت و برگشت) غیرفعال میکند.
- rfc1323
- گزینههای TCP مندرج در RFC1323 را فعال میسازد: مقیاس پنجره TCP، اندازهگیری زمان رفت و برگشت (RTTM) و محافظت در برابر دور زدن شماره ترتیب (PAWS) (در AIX).
- stdurg
- مدیریت اشارهگر فوری مطابق با RFC1122 را فعال میسازد (در AIX).
- syncnt=<count>
- حداکثر تعداد ارسال مجدد SYN در حین اتصال را روی <count> [int] تنظیم میکند.
- md5sig
- تولید خلاصه پیام MD5 روی بستهها را فعال میکند (در FreeBSD).
- noopt
- استفاده از گزینههای TCP را غیرفعال میسازد (در FreeBSD و MacOSX).
- nopush
- گزینه سوکت TCP_NOPUSH را تنظیم میکند (در FreeBSD و MacOSX).
- sack-disable
- استفاده از قابلیت تایید انتخابی (selective acknowledge) را غیرفعال میسازد (در OpenBSD).
- signature-enable
- تولید خلاصه پیام MD5 روی بستهها را فعال میکند (در OpenBSD).
- abort-threshold=<milliseconds>
- مدتزمان انتظار برای پاسخ طرف مقابل در یک اتصال برقرارشده را تعیین میکند (در HP-UX).
- conn-abort-threshold=<milliseconds>
- مدتزمان انتظار برای پاسخ سرور در حین اتصال اولیه را تعیین میکند (در HP-UX).
- keepinit
- مدتزمان انتظار برای پاسخ سرور در حین connect() پیش از انصراف را تعیین میکند. مقدار بر حسب نیمثانیه است و مقدار پیشفرض 150 (معادل ۷۵ ثانیه) میباشد (در Tru64).
- paws
- قابلیت "محافظت در برابر دور زدن شماره ترتیب" را فعال میکند (در Tru64).
- sackena
- تایید انتخابی را فعال میسازد (در Tru64).
- tsoptena
- گزینه برچسب زمانی را فعال میکند که امکان محاسبه مجدد RTT را روی اتصالهای موجود فراهم میسازد (در Tru64).
گروه گزینههای UDP
این گزینه ممکن است روی سوکتهای دیتاگرام UDP اعمال شود.
- udp-ignore-peerport>
- آدرس UDP-DATAGRAM انتظار دارد پاسخهای ورودی از پورتی که در پارامتر دوم آن مشخص شده است دریافت شوند. با این گزینه، بستههای دریافتی از هر پورتی پذیرفته میشوند.
گروه گزینههای UDPLITE
این گزینهها ممکن است روی آدرسهای UDPLITE اعمال شوند:
- udplite-send-cscov
- تعداد بایتهایی که چکسام برای آنها محاسبه و ارسال میشود را مشخص میکند ("پوشش چکسام").
- udplite-recv-cscov
- تعداد بایتهایی که چکسام برای آنها بررسی میشود را مشخص میکند ("پوشش چکسام").
گروه گزینههای SCTP
این گزینهها ممکن است روی سوکتهای جریانی SCTP اعمال شوند.
- sctp-nodelay
- گزینه سوکت SCTP_NODELAY را تنظیم میکند که الگوریتم Nagle را غیرفعال میسازد.
- sctp-maxseg=<bytes>
- گزینه سوکت SCTP_MAXSEG را روی <bytes> [int] تنظیم میکند. سپس این مقدار با بسته SYN یا SYN/ACK به طرف مقابل پیشنهاد داده میشود.
گروه گزینههای DCCP
این گزینهها ممکن است روی سوکتهای DCCP اعمال شوند.
- dccp-set-ccid=<int>
- ccid=<int>
- سازوکار دلخواه کنترل تراکم (CCID) را انتخاب میکند.
گروه گزینههای UDP، TCP، SCTP، DCCP و UDPLITE
در اینجا گزینههایی را مییابیم که به سازوکار پورت شبکه مرتبط هستند و بنابراین میتوانند همراه با آدرسهای کلاینت و سرور UDP، TCP، SCTP، DCCP و UDP-Lite استفاده شوند.
- sourceport=<port>
- برای اتصالهای خروجی (کلاینت)، پورت مبدا <port> را با استفاده از یک فراخوانی اضافی bind() تنظیم میکند. در آدرسهای شنود TCP یا UDP، اگر کلاینت از این پورت مبدا استفاده نکند، socat بلافاصله اتصال را میبندد. آدرسهای UDP-RECV، UDP-RECVFROM، UDP-SENDTO و UDP-DATAGRAM در صورت عدم تطابق، بسته را نادیده میگیرند (مثال).
- lowport
- اتصالهای خروجی (کلاینت) با این گزینه از یک پورت مبدا تصادفی استفادهنشده بین ۶۴۰ تا ۱۰۲۳ (شامل هر دو) استفاده میکنند. در سیستمعاملهای رده یونیکس، این کار به امتیازات دسترسی ریشه (root) نیاز دارد و بنابراین نشان میدهد که فرایند کلاینت توسط ریشه محلی مجاز شناخته شده است. آدرسهای شنود TCP و UDP با این گزینه در صورتی که کلاینت از پورت مبدا <= 1023 استفاده نکند، بلافاصله اتصال را قطع میکنند. این سازوکار میتواند در برخی شرایط، مجوز محدودی را فراهم سازد.
گروه گزینههای SOCKS
هنگام استفاده از آدرسهای نوع SOCKS، میتوان برخی گزینههای خاص socks را تنظیم کرد.
- socksport=<tcp service>
- سرویس پیشفرض "socks" یا پورت ۱۰۸۰ را برای پورت سرور socks با <TCP service> جایگزین میکند.
- socksuser=<user>
- مقدار <user> [string] را در فیلد نام کاربری به سرور socks ارسال میکند. مقدار پیشفرض، نام کاربری واقعی ($LOGNAME یا $USER) است (مثال).
گروه گزینههای HTTP
گزینههایی که میتوانند همراه با آدرسهای نوع HTTP ارائه شوند. تنها آدرس HTTP پیادهسازیشده در حال حاضر proxy-connect است.
- http-version=<string>
- مقدار پیشفرض "1.0" را که در درخواست اولیه HTTP به سرور ارسال میشود تغییر میدهد. در حال حاضر تأثیر دیگری ندارد، بهویژه هیچ راهکاری برای ارسال سرآیند Host ارائه نمیدهد.
- proxyport=<TCP service>
- پورت پیشفرض پراکسی HTTP یعنی ۸۰۸۰ را با <TCP service> جایگزین میکند.
- ignorecr
- پروتکل HTTP نیازمند استفاده از CR+NL به عنوان پایاندهنده خط است. هنگامی که یک سرور پراکسی این استاندارد را نقض کند، ممکن است socat پاسخ آن را متوجه نشود. این گزینه به socat دستور میدهد که NL را به عنوان پایاندهنده خط تفسیر کند و از CR در پاسخ چشمپوشی نماید. با این حال، socat همچنان CR+NL را به پراکسی ارسال میکند.
- proxy-authorization=<username>:<password>
- احراز هویت
پایه ("basic") را
به سرور
پراکسی
ارائه
میدهد.
آرگومان
این گزینه
همراه با یک
سرآیند
"Proxy-Authorization: Basic" در
قالب
کدگذاریشده
با base64
استفاده
میشود.
توجه: نام کاربری و گذرواژه در فهرست فرایندها برای هر کاربری روی ماشین محلی قابل مشاهده است؛ نام کاربری و گذرواژه بدون رمزنگاری (با کدگذاری base64) به سرور پراکسی منتقل میشوند و ممکن است شنود شوند. - proxy-authorization-file=<filename>
- مشابه
گزینه proxy-authorization
است، اما
اطلاعات
اعتبارسنجی
از فایل
خوانده
میشوند و
بنابراین
در فهرست
فرایندها
قابل
مشاهده
نیستند.
- resolve
- به طور پیشفرض، socat یک درخواست CONNECT حاوی نام میزبان مقصد به پراکسی ارسال میکند. با این گزینه، socat نام میزبان را به طور محلی تحلیل کرده و نشانی IP را ارسال میکند. لطفاً توجه داشته باشید که طبق RFC 2396، تنها تحلیل نام به نشانیهای IPv4 پیادهسازی شده است.
گروه گزینههای RANGE
این گزینهها بررسی میکنند که آیا باید به یک کلاینت متصلشونده اجازه دسترسی داده شود یا خیر. آنها را میتوان روی سوکتهای شبکه شنودکننده و دریافتکننده اعمال کرد. گزینههای tcp-wrappers در این گروه قرار میگیرند.
- range=<address-range>
- پس از پذیرش یک اتصال، بررسی میکند که آیا طرف مقابل در range (محدوده) قرار دارد یا خیر. برای نشانیهای IPv4، مقدار address-range به شکل address/bits (مانند 10.0.0.0/8) یا address:mask (مانند 10.0.0.0:255.0.0.0) است (مثال)؛ برای IPv6 به شکل [ip6-address]/bits (مانند [::1]/128) میباشد. اگر نشانی کلاینت مطابقت نداشته باشد، socat تلاش برای برقراری اتصال را رد کرده، یک هشدار صادر میکند و به شنود/دریافت ادامه میدهد.
- tcpwrap[=<name>]
- از کتابخانه libwrap (tcpd) نوشته Wietse Venema برای تعیین مجاز بودن اتصال کلاینت استفاده میکند. فایلهای پیکربندی به طور پیشفرض /etc/hosts.allow و /etc/hosts.deny هستند؛ برای اطلاعات بیشتر "man 5 hosts_access" را ببینید. مقدار اختیاری <name> (از نوع رشته) به عنوان نام فرایند دیمن به توابع wrapper ارسال میشود (مثال). در صورت حذف آن، نام پایه دستور فراخوانی socat (argv[0]) ارسال میشود. اگر هر دو گزینه tcpwrap و range روی یک آدرس اعمال شوند، برای مجاز بودن اتصال باید هر دو شرط برآورده شوند.
- allow-table=<filename>
- فایل مشخصشده را به جای /etc/hosts.allow در نظر میگیرد.
- deny-table=<filename>
- فایل مشخصشده را به جای /etc/hosts.deny در نظر میگیرد.
- tcpwrap-etc=<directoryname>
- به دنبال hosts.allow و hosts.deny در پوشه مشخصشده میگردد. با گزینههای hosts-allow و hosts-deny لغو میشود.
گروه گزینههای LISTEN
گزینههای ویژه سوکتهای شنود.
- backlog=<count>
- مقدار backlog ارسالشده با فراخوانی سیستمی listen() را روی <count> [int] تنظیم میکند. مقدار پیشفرض ۵ است.
- accept-timeout=<seconds>
- انتظار برای برقراری اتصال را پس از <seconds> [timeval] با وضعیت خطا به پایان میرساند.
گروه گزینههای CHILD
آدرسهای از نوع LISTEN و CONNECT گزینه fork را برای مدیریت چندین اتصال از طریق فرایندهای فرزند میپذیرند.
- fork
- پس از
برقراری یک
اتصال،
کانال آن را
در یک
فرایند
فرزند
مدیریت
کرده و
فرایند
والد را در
حال تلاش
برای تولید
اتصالهای
بیشتر نگه
میدارد،
چه از طریق
شنود یا از
طریق اتصال
در یک حلقه
(مثال).
OPENSSL-LISTEN و OPENSSL-CONNECT در زمان انشعاب واقعی (fork) فرایند فرزند تفاوت دارند: OPENSSL-LISTEN پیش از دستتکانی SSL منشعب میشود، در حالی که OPENSSL-CONNECT پس از آن منشعب میشود. گزینههای retry و forever به فرایند فرزند به ارث نمیرسند.
در برخی سیستمعاملها (مانند FreeBSD) این گزینه برای آدرسهای UDP-LISTEN کار نمیکند.
- max-children=<count>
- تعداد فرایندهای فرزند همزمان را محدود میکند [int]. پیشفرض بدون محدودیت است.
- children-shutup[=1|2|..]
- شدت
پیامهای
لاگ
تولیدشده
توسط
فرایندهای
فرزند را
کاهش
میدهد.
برای
نمونه، با
مقدار ۱
پیامهای notice
به عنوان info
ثبت
میشوند (یا
بسته به
گزینه -dX دور
ریخته
میشوند)، و
خطاهایی که
همچنان
باعث خاتمه
فرایند
فرزند
میشوند به
عنوان
هشدار ثبت
میگردند.
این گزینه برای کاهش لاگهای سرورها یا پراکسیهای پرترافیک در نظر گرفته شده است.
این گزینه جانشین گزینه cool-write شده است.
گروه گزینههای EXEC
گزینهها برای آدرسهایی که یک برنامه را فراخوانی میکنند.
- path=<string>
- متغیر محیطی PATH را برای جستجوی برنامه با <string> بازنویسی میکند. این مقدار $PATH در فرایند فرزند نیز مؤثر است.
- login
- به ابتدای argv[0] برای فراخوانی execvp() پیشوند ’-’ میافزاید و بدین ترتیب پوسته را مانند یک پوسته ورود (login shell) رفتار میدهد.
گروه گزینههای FORK
آدرسهای EXEC یا SYSTEM برنامهای را با استفاده از یک فرایند فرزند فراخوانی کرده و دادهها را میان socat و آن برنامه انتقال میدهند. سازوکار ارتباط بینفرایندی را میتوان با گزینههای زیر تغییر داد. به صورت پیشفرض، یک socketpair() ایجاد شده و به ورودی استاندارد (stdin) و خروجی استاندارد (stdout) فرایند فرزند اختصاص داده میشود، در حالی که خطای استاندارد (stderr) از فرایند socat به ارث برده میشود و فرایند فرزند از توصیفگرهای فایل ۰ و ۱ برای ارتباط با فرایند اصلی socat استفاده میکند.
- nofork
- زیرفرایندی برای اجرای برنامه منشعب نمیکند، بلکه execvp() یا system() را مستقیماً از نمونه جاری socat فراخوانی میکند. این امر از سربار فرایند دیگری میان برنامه و طرف مقابل جلوگیری میکند، اما محدودیتهای بسیاری را ایجاد میکند:
- o
- این گزینه تنها میتواند روی دومین آدرس socat اعمال شود.
- o
- نمیتواند روی بخشی از یک آدرس دوگانه اعمال شود.
- o
- اولین آدرس socat نمیتواند OPENSSL یا READLINE باشد.
- o
- گزینههای -b، -t، -D، -l، -v و -x در socat بیاثر میشوند.
- o
- برای هر دو آدرس، گزینههای ignoreeof، cr و crnl بیاثر میشوند.
- o
- برای هر دو آدرس، مدیریت خاص پایان/خاتمه آدرس (مانند بستن ملایم سوکت) و گزینههای مرتبط با آن بیاثر میشوند.
- o
- برای آدرس دوم (آدرسی که دارای گزینه nofork است)، گزینههای append، cloexec، flock، user، group، mode، nonblock، perm-late، setlk و setpgid را نمیتوان اعمال کرد. هرچند ممکن است برخی از این موارد روی آدرس اول استفاده شوند.
- pipes
- به جای یک جفت سوکت، یک جفت لوله (pipe) بدون نام برای ارتباط بینفرایندی ایجاد میکند.
- openpty
- ارتباط با زیرفرایند را با استفاده از یک شبهترمینال ایجادشده با openpty() به جای پیشفرض (socketpair یا ptmx) برقرار میکند.
- ptmx
- ارتباط با زیرفرایند را با استفاده از یک شبهترمینال ایجادشده از طریق باز کردن /dev/ptmx یا /dev/ptc به جای پیشفرض (socketpair) برقرار میکند.
- pty
- ارتباط با زیرفرایند را با استفاده از یک شبهترمینال به جای یک جفت سوکت برقرار میکند. pty را با سازوکارهای موجود ایجاد میکند. اگر هر دو openpty و ptmx در دسترس باشند، از ptmx استفاده میکند زیرا مطابق با استاندارد POSIX است (مثال).
- ctty
- شبهترمینال (pty) را به tty کنترلی زیرفرایند تبدیل میکند (مثال).
- stderr
- خطای استاندارد (stderr) زیرفرایند را با تبدیل stderr به یک dup() از stdout به کانال خروجی آن هدایت میکند (مثال).
- fdin=<fdnum>
- کانال ورودی زیرفرایند را به جای stdin (0) به توصیفگر فایل <fdnum> آن اختصاص میدهد. برنامهای که از زیرفرایند آغاز شده است باید از این fd برای خواندن دادهها از socat استفاده کند (مثال).
- fdout=<fdnum>
- کانال خروجی زیرفرایند را به جای stdout (1) به توصیفگر فایل <fdnum> آن اختصاص میدهد. برنامهای که از زیرفرایند آغاز شده است باید از این fd برای نوشتن دادهها به socat استفاده کند (مثال).
- sighup, sigint, sigquit
- باعث میشود socat سیگنالهای این نوع را به زیرفرایند منتقل کند. اگر هیچ آدرسی این گزینه را نداشته باشد، socat با دریافت این سیگنالها خاتمه مییابد.
گزینهها برای آدرس SHELL
- shell=<filename>
- استفاده از پوسته پیشفرض را با فایل اجرایی مشخصشده، مانند /bin/dash جایگزین میکند. همچنین متغیر محیطی SHELL را تنظیم میکند.
گروه گزینههای TERMIOS
برای آدرسهایی که روی یک tty کار میکنند (مانند stdio، file:/dev/tty، exec:...، pty)، پارامترهای ترمینال تعریفشده در سازوکار termios یونیکس به عنوان پارامترهای گزینه آدرس در دسترس قرار گرفتهاند. لطفاً توجه داشته باشید که تغییرات پارامترهای ترمینال تعاملی شما پس از خاتمه socat نیز پابرجا باقی میمانند، بنابراین ممکن است لازم باشد پس از آن عبارت "reset" یا "stty sane" را در پوسته خود وارد کنید. برای آدرسهای EXEC و SYSTEM با گزینه PTY، این گزینهها روی pty توسط فرایندهای فرزند اعمال میشوند.
- b0
- ارتباط ترمینال را قطع میکند.
- b19200
- سرعت خط
سریال را
روی 19200 باود
تنظیم
میکند.
برخی
نرخهای
دیگر نیز
امکانپذیر
هستند؛ از
دستوری
مانند socat -hh |grep
’ b[1-9]’ برای
یافتن تمام
سرعتهای
پشتیبانیشده
توسط
پیادهسازی
خود
استفاده
کنید.
توجه: در برخی از سیستمعاملها، ممکن است این گزینهها در دسترس نباشند. به جای آن از ispeed یا ospeed استفاده کنید. - echo[=<bool>]
- انعکاس محلی (local echo) را فعال یا غیرفعال میکند.
- icanon[=<bool>]
- حالت قانونی (canonical mode) را تنظیم یا لغو میکند، که بافرینگ خط و برخی کاراکترهای خاص را فعال میسازد.
- raw
- حالت خام (raw) را تنظیم میکند، بدین ترتیب ورودی و خروجی تقریباً بدون پردازش عبور داده میشوند. این گزینه منسوخ شده است، به جای آن از گزینه rawer یا cfmakeraw استفاده کنید.
- rawer
- ترمینال را از گزینه raw نیز خامتر میکند. این گزینه به طور ضمنی انعکاس (echo) را خاموش میکند (مثال).
- cfmakeraw
- با فراخوانی cfmakeraw() یا با شبیهسازی این فراخوانی حالت خام را تنظیم میکند. این گزینه به طور ضمنی انعکاس را خاموش میکند.
- ignbrk[=<bool>]
- از کاراکتر BREAK (مانند C^) چشمپوشی کرده یا آن را تفسیر میکند.
- brkint[=<bool>]
- bs0
- bs1
- bsdly=<0|1>
- clocal[=<bool>]
cr0 cr1 cr2 cr3
- تأخیر بازگشت مکاننما (carriage return) را به ترتیب روی ۰، ۱، ۲، یا ۳ تنظیم میکند. ۰ به معنای بدون تأخیر است و سایر مقادیر وابسته به ترمینال هستند.
- crdly=<0|1|2|3>
- cread[=<bool>]
- crtscts[=<bool>]
cs5 cs6 cs7 cs8
- اندازه کاراکتر را به ترتیب روی ۵، ۶، ۷، یا ۸ بیت تنظیم میکند.
- csize=<0|1|2|3>
- cstopb[=<bool>]
- به جای یک بیت، دو بیت توقف (stop bits) تنظیم میکند.
- dsusp=<byte>
- مقدار کاراکتر VDSUSP را تنظیم میکند که فرایند پیشزمینه جاری را معلق کرده و پوسته را مجدداً فعال میسازد (همه به جز لینوکس).
- echoctl[=<bool>]
- کاراکترهای کنترلی را در نشانهگذاری کلاهک (مانند ^A) انعکاس میدهد.
- echoe[=<bool>]
- echok[=<bool>]
- echoke[=<bool>]
- echonl[=<bool>]
- echoprt[=<bool>]
- eof=<byte>
- eol=<byte>
- eol2=<byte>
- erase=<byte>
- discard=<byte>
- ff0
- ff1
- ffdly[=<bool>]
- flusho[=<bool>]
- hupcl[=<bool>]
- icrnl[=<bool>]
- iexten[=<bool>]
- igncr[=<bool>]
- ignpar[=<bool>]
- imaxbel[=<bool>]
- inlcr[=<bool>]
- inpck[=<bool>]
- intr=<byte>
- isig[=<bool>]
- ispeed=<unsigned-int>
- نرخ باود را
برای
دادههای
ورودی روی
این خط
تنظیم
میکند.
همچنین ببینید: ospeed, b19200 - istrip[=<bool>]
- iuclc[=<bool>]
- ixany[=<bool>]
- ixoff[=<bool>]
- ixon[=<bool>]
- kill=<byte>
- lnext=<byte>
- min=<byte>
- nl0
- تأخیر خط جدید (newline) را روی 0 تنظیم میکند.
- nl1
- nldly[=<bool>]
- noflsh[=<bool>]
- ocrnl[=<bool>]
- ofdel[=<bool>]
- ofill[=<bool>]
- olcuc[=<bool>]
- onlcr[=<bool>]
- onlret[=<bool>]
- onocr[=<bool>]
- opost[=<bool>]
- پردازش خروجی را فعال یا غیرفعال میکند؛ برای نمونه، تبدیل NL به CR-NL.
- ospeed=<unsigned-int>
- نرخ باود را
برای
دادههای
خروجی روی
این خط
تنظیم
میکند.
همچنین ببینید: ispeed, b19200 - parenb[=<bool>]
- تولید توازن (parity) در خروجی و بررسی توازن برای ورودی را فعال میکند.
- parmrk[=<bool>]
- parodd[=<bool>]
- pendin[=<bool>]
- quit=<byte>
- reprint=<byte>
- sane
- ترمینال را به وضعیتی شبیه به یک حالت پیشفرض کاربردی بازمیگرداند.
- start=<byte>
- stop=<byte>
- susp=<byte>
- swtc=<byte>
- tab0
- tab1
- tab2
- tab3
- tabdly=<unsigned-int>
- time=<byte>
- tostop[=<bool>]
- vt0
- vt1
- vtdly[=<bool>]
- werase=<byte>
- xcase[=<bool>]
- xtabs
- i-pop-all
- در STREAMS سیستم V یونیکس، تمامی درایورها را از پشته حذف میکند.
- i-push=<string>
- در STREAMS سیستم V یونیکس، درایور (ماژول) با نام دادهشده (رشته) را به درون پشته ارسال میکند (push). برای نمونه، به منظور اطمینان از اینکه یک دستگاه کاراکتری در سولاریس از termios و غیره پشتیبانی میکند، از گزینههای زیر استفاده کنید: i-pop-all,i-push=ptem,i-push=ldterm,i-push=ttcompat
گروه گزینههای PTY
این گزینهها برای استفاده با نوع آدرس pty در نظر گرفته شدهاند.
- link=<filename>
- یک پیوند نمادین ایجاد میکند که به شبهترمینال (pty) واقعی اشاره دارد. این امر ممکن است به حل این مشکل کمک کند که ptyها با نامهای کم و بیش غیرقابل پیشبینی ایجاد میشوند، و دسترسی مستقیم و خودکار به pty ایجادشده توسط socat را دشوار میسازد. با این گزینه، کاربر میتواند یک نقطه «ثابت» در سلسلهمراتب فایل تعیین کند که به او در دسترسی به pty واقعی کمک کند (مثال). از نسخه 1.4.3 برنامه socat به بعد، هنگام بسته شدن آدرس، پیوند نمادین حذف میشود (اما گزینه unlink-close را ببینید).
- wait-slave
- مرحله باز کردن را تا زمانی که یک فرایند، سمت اسلیو (slave) شبهترمینال را باز کند مسدود میکند. معمولاً socat پس از ایجاد pty، با باز کردن آدرس بعدی یا با ورود به حلقه انتقال ادامه میدهد. با گزینه wait-slave، برنامه socat پیش از ادامه کار منتظر میماند تا فرایندی سمت اسلیو pty را باز کند. این گزینه تنها در صورتی کار میکند که سیستمعامل فراخوانی سیستمی poll() را ارائه دهد. و همچنین به یک رفتار نامستند در ptyها وابسته است، بنابراین روی همه سیستمعاملها کار نمیکند. این گزینه با موفقیت روی لینوکس، FreeBSD، NetBSD و روی Tru64 با openpty آزمایش شده است.
- pty-interval=<seconds>
- هنگامی که گزینه wait-slave تنظیم شده است، socat وضعیت HUP را با استفاده از poll() به صورت دورهای بررسی میکند تا ببیند آیا سمت اسلیو pty باز شده است یا خیر. فاصله زمانی پیشفرض برای بررسی دورهای ۱ ثانیه است. برای تغییر این مقدار از گزینه pty-interval [timeval] استفاده کنید.
- sitout-eio=<timeval>
- برنامه login در لینوکس به دلایل امنیتی tty/pty خود را میبندد و دوباره باز میکند. در طول این مدت، مستر pty در عملیاتهای ورودی/خروجی با خطای EIO روبرو میشود و ممکن است خاتمه یابد. با این گزینه socat خطای EIO را برای مدتزمان مشخصشده تحمل میکند. لطفاً توجه داشته باشید که در این وضعیت socat ترافیک را در هر دو جهت مسدود میکند، حتی زمانی که به این کانال مربوط نباشد.
گروه گزینههای OPENSSL
این گزینهها روی انواع آدرس openssl و openssl-listen اعمال میشوند.
- cipher=<cipherlist>
- فهرست
رمزهایی (ciphers)
را که
میتوان
برای اتصال
استفاده
کرد مشخص
میکند.
صفحه
راهنمای
ciphers ، بخش
CIPHER LIST FORMAT را
برای
اطلاعات
تفصیلی
درباره
نحو،
مقادیر و
پیشفرض
<cipherlist> ببینید.
میتوان چندین رشته رمز را با جداکننده ’:’ تعیین کرد. برخی رشتههای رمز ساده: - 3DES
- از یک مجموعه رمزی با triple DES استفاده میکند.
- MD5
- از یک مجموعه رمزی با MD5 استفاده میکند.
- aNULL
- از یک مجموعه رمزی بدون احراز هویت استفاده میکند.
- NULL
- از رمزنگاری استفاده نمیکند.
- HIGH
- از یک مجموعه رمزی با رمزنگاری "بالا" (high) استفاده میکند. توجه داشته باشید که طرف مقابل باید از ویژگی انتخابشده پشتیبانی کند، در غیر این صورت مذاکره با شکست مواجه خواهد شد.
- method=<ssl-method>
- این گزینه مبتنی بر توابع منسوخشده است و تنها زمانی در دسترس است که socat با گزینه --with-openssl-method کامپایل شده باشد. به جای آن از گزینه min-proto-version و احتمالاً max-proto-version استفاده کنید. نسخه پروتکل مورد استفاده را تنظیم میکند. رشتههای معتبر (بدون حساسیت به بزرگی و کوچکی حروف) عبارتند از:
- SSL2
- انتخاب نسخه ۲ پروتکل SSL.
- SSL3
- انتخاب نسخه ۳ پروتکل SSL.
- SSL23
- انتخاب بهترین پروتکل موجود SSL یا TLS.
- TLS1
- انتخاب نسخه ۱ پروتکل TLS.
- TLS1.1
- انتخاب نسخه 1.1 پروتکل TLS.
- TLS1.2
- انتخاب نسخه 1.2 پروتکل TLS. هنگامی که این گزینه ارائه نشود، OpenSSL روش را با طرف مقابل خود مذاکره میکند.
- min-proto-version
- این گزینه به OpenSSL دستور میدهد از این نسخه یا نسخههای جدیدتر پروتکل SSL/TLS استفاده کند و از پذیرش پروتکل پایینتر/قدیمیتر خودداری نماید. نحو معتبر عبارت است از:
- SSL2
- انتخاب نسخه ۲ پروتکل SSL.
- SSL3
- انتخاب نسخه ۳ پروتکل SSL.
- TLS1
- TLS1.0
- انتخاب نسخه ۱ پروتکل TLS.
- TLS1.1
- انتخاب نسخه 1.1 پروتکل TLS.
- TLS1.2
- انتخاب نسخه 1.2 پروتکل TLS.
- TLS1.3
- انتخاب نسخه 1.3 پروتکل TLS.
- openssl-max-proto-version
- این گزینه مشابه min-proto-version است، با این حال، استفاده از نسخه پروتکل بالاتر را مجاز نمیداند. برای آزمایش طرف مقابل کاربرد دارد.
- verify[=<bool>]
- بررسی گواهی طرف مقابل را کنترل میکند. مقدار پیشفرض 1 (true) است. غیرفعال کردن verify ممکن است سوکت شما را به روی همگان بگشاید و رمزنگاری را بیفایده سازد!
- cert=<filename>
- فایل حاوی گواهی و کلید خصوصی را برای احراز هویت مشخص میکند. گواهی باید در قالب OpenSSL (*.pem) باشد. با openssl-listen، استفاده از این گزینه به شدت توصیه میشود. به جز در مورد رمز aNULL، در صورت عدم ارائه گواهی، خطای "no shared ciphers" رخ خواهد داد.
- key=<filename>
- فایل حاوی کلید خصوصی را مشخص میکند. کلید خصوصی ممکن است در این فایل یا در فایل ارائهشده با گزینه cert قرار داشته باشد. طرفی که باید مالکیت خود بر یک گواهی را اثبات کند به کلید خصوصی نیاز دارد.
- dhparams=<filename>
- فایل حاوی پارامترهای Diffie Hellman را مشخص میکند. این پارامترها همچنین میتوانند در فایل ارائهشده با گزینه cert باشند که در این صورت نیازی به گزینه dhparams نخواهد بود.
- cafile=<filename>
- فایل حاوی گواهیهای مراجع معتبر (ریشه) را مشخص میکند. این فایل باید در قالب PEM باشد و شامل یک یا چند گواهی باشد. طرفی که اعتبار طرف مقابل خود را بررسی میکند، تنها به گواهیهایی اعتماد میکند که در این فایل وجود دارند.
- capath=<dirname>
- پوشه حاوی گواهیهای معتبر (ریشه) را مشخص میکند. این پوشه باید شامل گواهیها در قالب PEM و هشهای مربوط به آنها باشد (مستندات OpenSSL را ببینید)
- egd=<filename>
- در برخی سیستمها، openssl به یک منبع صریح برای دادههای تصادفی نیاز دارد. نام سوکتی را مشخص کنید که در آن یک دیمن گردآوری انتروپی مانند egd دادههای تصادفی را فراهم میکند، مانند /dev/egd-pool.
- openssl-maxfraglen=<int>, maxfraglen=<int>
- برای اتصالهای کلاینت، یک درخواست مذاکره حداکثر طول قطعه (Max Fragment Length Negotiation Request) به سرور ارسال میکند تا حداکثر اندازه قطعهای را که سرور برای ما ارسال خواهد کرد محدود کند. طولهای پشتیبانیشده عبارتند از: 512، 1024، 2048، یا 4096. توجه داشته باشید که این گزینه برای OPENSSL-LISTEN قابل اعمال نیست.
- openssl-maxsendfrag=<int>, maxsendfrag=<int>
- حداکثر اندازه قطعهای را که به طرف دیگر ارسال خواهیم کرد محدود میکند. محدوده طول پشتیبانیشده: 512 - 16384. توجه داشته باشید که در OPENSSL-LISTEN، حداکثر اندازه قطعه ممکن است بر اثر درخواست مذاکره حداکثر طول قطعه کلاینت (در صورت ارسال آن) بیشتر محدود شود.
- pseudo
- در
سیستمهایی
که openssl
نمیتواند
منبع
انتروپی
پیدا کند و
امکان
استفاده از
هیچ دیمن
گردآوری
انتروپی
وجود
ندارد، این
گزینه
سازوکاری
را برای
ارائه
انتروپی
شبهتصادفی
فعال
میسازد.
این کار با
استفاده از
زمان جاری
بر حسب
میکروثانیه
جهت
مقداردهی
اولیه مولد
اعداد
شبهتصادفی
libc انجام
میشود. سپس
openssl با خروجی
حاصل از
فراخوانیهای
()random تغذیه
میگردد.
توجه: این سازوکار برای تولید کلیدهای امن کافی نیست! - compress
- استفاده از فشردهسازی را برای یک اتصال فعال یا غیرفعال میکند. تنظیم این گزینه روی "none" فشردهسازی را غیرفعال میکند و تنظیم آن روی "auto" به OpenSSL اجازه میدهد بهترین الگوریتم موجود را که مورد پشتیبانی هر دو طرف باشد برگزیند. مقدار پیشفرض این است که هیچیک از تنظیمات مربوط به فشردهسازی دستکاری نشوند. توجه: به OpenSSL 0.9.8 یا بالاتر نیاز دارد و غیرفعال کردن فشردهسازی با OpenSSL 0.9.8 بر تمامی اتصالهای جدید در فرایند تأثیر میگذارد.
- commonname=<string>
- نام عمومی (commonname) را که گواهی طرف مقابل باید با آن مطابقت داشته باشد مشخص میکند. در آدرس OPENSSL-CONNECT این مقدار جایگزین نام میزبان یا نشانی مقصد IP دادهشده میشود؛ در OPENSSL-LISTEN این گزینه بررسی commonname گواهیهای طرف مقابل را فعال میکند. این گزینه تنها زمانی معنا دارد که گزینه verify غیرفعال نشده باشد و رمز برگزیده، گواهی طرف مقابل را ارائه دهد.
- no-sni[=<bool>]
- از قابلیت
نشانگذاری
نام سرور (SNI)
در سمت
کلاینت که
گواهی سرور
دلخواه را
انتخاب
میکند
استفاده
نمیکند.
توجه: SNI از نسخه 1.7.4.0 برنامه socat به صورت خودکار استفاده میشود و از commonname یا نام میزبان دادهشده استفاده میکند. - snihost=<string>
- نام میزبان نشانگذاری نام سرور (SNI) در سمت کلاینت را متفاوت از نام سرور یا نام عمومی (common name) مورد آدرسدهی تنظیم میکند. این امر ممکن است زمانی سودمند باشد که گواهی سرور دارای چندین نام میزبان یا نامهای چندمنظوره (wildcard) است، زیرا نام میزبان SNI به صورت متن آشکار به سرور ارسال میشود و ممکن است شنود گردد؛ با این گزینه میتوان یک نام ساختگی از گواهی مورد نظر را منتقل کرد.
- fips
- در صورت فعال بودن در زمان کامپایل، حالت FIPS را فعال میسازد. برای اطلاعات درباره استاندارد پیادهسازی رمزنگاری FIPS پیوند http://oss-institute.org/fips-faq.html را ببینید. این حالت ممکن است مستلزم آن باشد که گواهیهای درگیر با نسخهای از openssl تولید شده باشند که FIPS در آن فعال است. تنظیم یا لغو این گزینه در یک آدرس socat، بر تمامی آدرسهای OpenSSL این فرایند تأثیر میگذارد.
گروه گزینههای RETRY
گزینههایی که تلاش مجدد برخی فراخوانیهای سیستمی، بهویژه تلاشهای برقراری اتصال را کنترل میکنند.
- retry=<num>
- تعداد دفعات تلاش مجدد پیش از لغو تلاش برای برقراری اتصال یا شنود. پیشفرض 0 است، که به معنای تنها یک بار تلاش میباشد.
- interval=<timespec>
- مدتزمان میان تلاشهای متوالی (ثانیه، [timespec]). مقدار پیشفرض ۱ ثانیه است.
- forever
- تعداد نامحدودی از دفعات تلاش مجدد را انجام میدهد.
گروه گزینههای INTERFACE
این گزینهها ممکن است روی آدرسهای INTERFACE و TUN اعمال شوند. این انواع آدرس و گزینهها در حال حاضر تنها روی سیستمعامل لینوکس پیادهسازی شدهاند.
نکته در مورد VLANها: در بستههای ورودی، هسته لینوکس پیش از انتقال دادهها به برنامه فضای کاربری روی سوکتهای خام، تگ VLAN را جدا میکند. برای به دست آوردن اطلاعات VLAN به تمهیدات خاصی نیاز است، صفحه راهنمای packet(7) بخش PACKET_AUXDATA را ببینید، و برای درج اختیاری مجدد تگ در بسته، در صورت نیاز از گزینه retrieve-vlan استفاده کنید.
- retrieve-vlan
- در بستههای ورودی روی سوکتهای خام، اطلاعات VLAN را استخراج کرده و برای پردازشهای بعدی مجدداً در بستهها درج میکند (لینوکس)
- iff-up
- وضعیت رابط شبکه TUN را روی UP تنظیم میکند. به شدت توصیه میشود.
- iff-broadcast
- فلگ BROADCAST رابط شبکه TUN را تنظیم میکند.
- iff-debug
- فلگ DEBUG رابط شبکه TUN را تنظیم میکند.
- iff-loopback
- فلگ LOOPBACK رابط شبکه TUN را تنظیم میکند.
- iff-pointopoint
- فلگ POINTOPOINT دستگاه TUN را تنظیم میکند.
- iff-notrailers
- فلگ NOTRAILERS دستگاه TUN را تنظیم میکند.
- iff-running
- فلگ RUNNING دستگاه TUN را تنظیم میکند.
- iff-noarp
- فلگ NOARP دستگاه TUN را تنظیم میکند.
- iff-promisc
- فلگ PROMISC دستگاه TUN را تنظیم میکند.
- iff-allmulti
- فلگ ALLMULTI دستگاه TUN را تنظیم میکند.
- iff-master
- فلگ MASTER دستگاه TUN را تنظیم میکند.
- iff-slave
- فلگ SLAVE دستگاه TUN را تنظیم میکند.
- iff-multicast
- فلگ MULTICAST دستگاه TUN را تنظیم میکند.
- iff-portsel
- فلگ PORTSEL دستگاه TUN را تنظیم میکند.
- iff-automedia
- فلگ AUTOMEDIA دستگاه TUN را تنظیم میکند.
- iff-dynamic
- فلگ DYNAMIC دستگاه TUN را تنظیم میکند.
گروه گزینههای TUN
گزینههایی که آدرسهای دستگاه رابط TUN/TAP در لینوکس را کنترل میکنند.
- tun-device=<device-file>
- به socat دستور میدهد تا مسیر دیگری را برای دستگاه شبیهساز (clone) TUN در نظر بگیرد. مقدار پیشفرض /dev/net/tun است.
- tun-name=<if-name>
- به رابط شبکه حاصل یک نام مشخص اختصاص میدهد، به جای نام تولیدشده توسط سیستم (tun0، tun1 و غیره).
- tun-type=[tun|tap]
- نوع دستگاه TUN را مشخص میکند؛ از این گزینه برای ایجاد یک دستگاه TAP استفاده کنید. برای تفاوت میان این دو نوع، مستندات لینوکس را ببینید. هنگامی که تلاش میکنید یک تونل میان دو دستگاه TUN برقرار کنید، نوع آنها باید یکسان باشد.
- iff-no-pi
- فلگ IFF_NO_PI را تنظیم میکند که تعیین میکند آیا دستگاه شامل اطلاعات بسته اضافی در تونل باشد یا خیر. هنگامی که تلاش میکنید یک تونل میان دو دستگاه TUN برقرار کنید، این فلگها باید مقادیر یکسانی داشته باشند.
گروه گزینههای POSIX-MQ
گزینههایی که ممکن است روی آدرسهای POSIX-MQ اعمال شوند.
- posixmq-priority (mq-prio)
- اولویت پیامهای (بستههای) نوشتهشده در صف، یا حداقل اولویت بسته خواندهشده از صف را مشخص میکند.
- posixmq-flush (mq-flush)
- تمامی پیامهای موجود در صف را پیش از شروع انتقالها "مصرف" (حذف) میکند.
- posixmq-maxmsg (mq-maxmsg)
- پارامتر maxmsg
صف پیام POSIX را
هنگام
ایجاد آن
تنظیم
میکند.
توجه: این گزینه تنها زمانی اعمال میشود که صف از قبل وجود نداشته باشد. - posixmq-msgsize (mq-msgsize)
- پارامتر msgsize
صف پیام POSIX را
هنگام
ایجاد آن
تنظیم
میکند.
توجه: این گزینه تنها زمانی اعمال میشود که صف از قبل وجود نداشته باشد.
مقادیر داده (DATA VALUES)
این بخش انواع مختلف دادههایی را توضیح میدهد که پارامترهای آدرس و گزینههای آدرس میتوانند دریافت کنند.
- address-range
- در حال حاضر تنها برای IPv4 و IPv6 پیادهسازی شده است. گزینه آدرس `range’ را ببینید.
- bool
- "0" یا "1"؛ اگر مقدار حذف شود، "1" در نظر گرفته میشود.
- byte
- یک عدد int بدون علامت، خواندهشده با strtoul() ، کوچکتر یا مساوی با UCHAR_MAX .
- command-line
- رشتهای که نام یک برنامه و آرگومانهای آن را مشخص میکند که با یک فاصله از هم جدا شدهاند.
- data
- این یک
مشخصه
عمومیتر
داده است،
"dalan" (زبان
توصیف داده
سطح پایین).
رشته متنی
دادهشده
شامل
اطلاعاتی
درباره نوع
داده هدف و
مقدار آن
است. به طور
کلی یک
نویسه
آغازین،
نوع آیتم
داده بعدی
را مشخص
میکند. در
زمینه خاص
آن ممکن است
یک نوع داده
پیشفرض
وجود داشته
باشد.
در حال حاضر تنها مشخصات زیر پیادهسازی شدهاند:
- i
- یک عدد صحیح
علامتدار،
ذخیرهشده
با ترتیب
بایت
میزبان.
مثال: i-1000 (عدد صحیح -1000) - I
- یک عدد صحیح
بدون
علامت،
ذخیرهشده
با ترتیب
بایت
میزبان.
- l
- یک عدد صحیح
long
علامتدار،
ذخیرهشده
با ترتیب
بایت
میزبان.
- L
- یک عدد صحیح
long بدون
علامت،
ذخیرهشده
با ترتیب
بایت
میزبان.
- s
- یک عدد صحیح
short
علامتدار،
ذخیرهشده
با ترتیب
بایت
میزبان.
- S
- یک عدد صحیح
short بدون
علامت،
ذخیرهشده
با ترتیب
بایت
میزبان.
- b
- یک بایت
علامتدار
(signed char).
- B
- یک بایت
بدون علامت
(unsigned char).
- x
- در ادامه یک
تعداد زوج
از ارقام
هگزادسیمال
میآید که
به عنوان
دنبالهای
از بایتها
ذخیره
میشوند؛
طول داده،
تعداد
بایتهای
حاصل است.
مثال: x7f000001 (آدرس IP برابر با 127.0.0.1) - "
- در ادامه
رشتهای
میآید که
با
تبدیلهای
متداول \n \r \t \f \b \a \e \0
استفاده
میشود؛
رشته باید
با ’"’ بسته
شود. لطفاً
توجه داشته
باشید که
نقلقولها
و
بکاسلشها
باید از
تبدیل شل و
socat اسکیپ
شوند. هیچ \0
ضمنی به
انتها
اضافه
نمیشود.
مثال: "Hello world!\n" - ’
- یک
تکنویسه،
با
تبدیلهای
معمول.
لطفاً توجه
داشته
باشید که
نقلقولها
و
بکاسلشها
باید از
تبدیل شل و
socat اسکیپ
شوند.
مثال: ’a’ آیتمهای داده میتوانند بدون نیاز به تکرار مجدد مشخصکننده نوع، با فضای خالی از یکدیگر جدا شوند. - directory
- رشتهای با معنای معمول نام دایرکتوری در UN*X.
- facility
- نام یک facility در syslog با نویسههای کوچک.
- fdnum
- یک نوع int بدون علامت، خواندهشده با strtoul() ، که یک توصیفگر فایل در UN*X را مشخص میکند.
- filename
- رشتهای با معنای معمول نام فایل در UN*X.
- group
- اگر اولین نویسه یک رقم دهدهی باشد، مقدار با strtoul() به عنوان یک عدد صحیح بدون علامت که شناسه گروه را مشخص میکند خوانده میشود. در غیر این صورت، باید نام یک گروه موجود باشد.
- int
- عددی که از قوانین تابع strtol() با مبنای "0" پیروی میکند، یعنی عدد دهدهی، عدد هشتهشتی با "0" آغازین، یا عدد هگزادسیمال با "0x" آغازین. مقدار باید در یک int زبان C بگنجد.
- interface
- رشتهای که نام دستگاه یک رابط شبکه را همانطور که توسط ifconfig یا procan نشان داده میشود مشخص میکند، مانند "eth0".
- IP address
- یک آدرس IPv4 در
نماد اعداد
و نقطه، یک
آدرس IPv6 در
نماد
هگزادسیمال
محصور در
براکت، یا
نام
میزبانی که
به یک آدرس IPv4
یا یک آدرس IPv6
تبدیل
میشود.
مثالها: 127.0.0.1، [::1]، www.dest-unreach.org، dns1 - IPv4 address
- یک آدرس IPv4 در
نماد اعداد
و نقطه یا
نام
میزبانی که
به یک آدرس IPv4
تبدیل
میشود.
مثالها: 127.0.0.1، www.dest-unreach.org، dns2 - IPv6 address
- یک آدرس IPv6 در
نماد ارقام
هگز و
دونقطه
محصور در
براکت، یا
نام
میزبانی که
به یک آدرس IPv6
تبدیل
میشود.
مثالها: [::1]، [1234:5678:9abc:def0:1234:5678:9abc:def0]، ip6name.domain.org - long
- عددی خواندهشده با strtol() . مقدار باید در یک long زبان C بگنجد.
- long long
- عددی خواندهشده با strtoll() . مقدار باید در یک long long زبان C بگنجد.
- off_t
- یک عدد علامتدار وابسته به پیادهسازی، معمولاً ۳۲ بیتی، خواندهشده با strtol یا strtoll.
- off64_t
- یک عدد علامتدار وابسته به پیادهسازی، معمولاً ۶۴ بیتی، خواندهشده با strtol یا strtoll.
- mode_t
- یک عدد صحیح بدون علامت، خواندهشده با strtoul() ، مشخصکننده بیتهای حالت (مجوز).
- pid_t
- عددی خواندهشده با strtol() ، مشخصکننده شناسه فرآیند.
- port
- یک uint16_t (عدد ۱۶ بیتی بدون علامت) مشخصکننده درگاه TCP یا UDP، خواندهشده با strtoul() .
- protocol
- یک عدد ۸ بیتی بدون علامت، خواندهشده با strtoul() .
- size_t
- یک عدد بدون علامت با محدودیتهای size_t، خواندهشده با strtoul .
- sockname
- آدرس سوکت. گزینه آدرس `bind’ را ببینید.
- string
- دنبالهای از نویسهها که شامل ’\0’ نبوده و بسته به موقعیت در خط فرمان، شامل ’:’، ’,’ یا "!!" نباشد. توجه داشته باشید که ممکن است لازم باشد نویسههای متا شل را در خط فرمان اسکیپ کنید.
- TCP service
- نام یک سرویس که با رقم آغاز نمیشود و توسط getservbyname() تبدیل میشود، یا یک عدد ۱۶ بیتی از نوع int بدون علامت خواندهشده با strtoul() .
- timeval
- یک عدد ممیز شناور با دقت مضاعف (double float) مشخصکننده ثانیهها؛ عدد به یک struct timeval شامل ثانیه و میکروثانیه نگاشت میشود.
- timespec
- یک عدد ممیز شناور با دقت مضاعف (double float) مشخصکننده ثانیهها؛ عدد به یک struct timespec شامل ثانیه و نانوثانیه نگاشت میشود.
- UDP service
- نام یک سرویس که با رقم آغاز نمیشود و توسط getservbyname() تبدیل میشود، یا یک عدد ۱۶ بیتی از نوع int بدون علامت خواندهشده با strtoul() .
- unsigned int
- عددی خواندهشده با strtoul() . مقدار باید در یک unsigned int زبان C بگنجد.
- user
- اگر اولین نویسه یک رقم دهدهی باشد، مقدار با strtoul() به عنوان یک عدد صحیح بدون علامت مشخصکننده شناسه کاربر خوانده میشود. در غیر این صورت، باید نام یک کاربر موجود باشد.
- VSOCK cid
- یک uint32_t (عدد ۳۲ بیتی بدون علامت) مشخصکننده شناسه بافت VSOCK (CID)، خواندهشده با strtoul() . چندین آدرس ویژه وجود دارد: VMADDR_CID_ANY (-1U) به معنای هر آدرسی برای bind است؛ VMADDR_CID_HOST (2) آدرس شناختهشده میزبان است.
- VSOCK port
- یک uint32_t (عدد ۳۲ بیتی بدون علامت) مشخصکننده درگاه VSOCK، خواندهشده با strtoul() .
مثالها (EXAMPLES)
socat - TCP4:www.domain.org:80
- دادهها را بین STDIO (-) و یک اتصال TCP4 به درگاه 80 از میزبان www.domain.org انتقال میدهد. این مثال منجر به برقراری یک اتصال تعاملی شبیه به telnet یا netcat میشود. پارامترهای ترمینال stdin تغییر داده نمیشوند، بنابراین میتوانید رله را با ^D ببندید یا با ^C آن را متوقف کنید.
socat \
TCP4-LISTEN:www \ TCP4:www.domain.org:www
- یک هدایتکننده درگاه TCP ساده نصب میکند. با TCP4-LISTEN روی درگاه محلی "www" گوش میدهد تا زمانی که یک اتصال وارد شود، آن را میپذیرد، سپس به میزبان راه دور (TCP4) متصل میشود و انتقال داده را آغاز میکند. اتصال دومی را نخواهد پذیرفت.
socat -d -d -lmlocal2 \
TCP4-LISTEN:80,bind=myaddr1,reuseaddr,fork,su=nobody,range=10.0.0.0/8 \ TCP4:www.domain.org:80,bind=myaddr2
- یک هدایتکننده درگاه TCP، که هر سمت آن به یک آدرس IP محلی دیگر متصل شده است (bind). این مثال با منشعب کردن (fork) یک فرآیند جدید پس از هر accept() ، تقریباً تعداد نامحدودی از اتصالات موازی یا متوالی را مدیریت میکند. این دستور با تغییر کاربر (su) به کاربر nobody پس از fork، کمی امنیت فراهم میکند؛ فقط اتصالات از شبکه خصوصی 10 (range) را مجاز میداند؛ و به دلیل reuseaddr، امکان راهاندازی مجدد فوری پس از خاتمه فرآیند اصلی را فراهم میکند، حتی اگر برخی سوکتهای فرزند به طور کامل بسته نشده باشند. با گزینه -lmlocal2، برنامه socat تا زمان رسیدن موفقیتآمیز به حلقه accept لاگها را در stderr ثبت میکند. ثبت لاگهای بعدی با تسهیلات (facility) برابر با local2 به syslog هدایت میشود.
socat \
TCP4-LISTEN:5555,fork,tcpwrap=script \ EXEC:/bin/myscript,chroot=/home/sandbox,su-d=sandbox,pty,stderr
- یک سرور ساده که اتصالات را میپذیرد (TCP4-LISTEN) و برای هر اتصال یک فرآیند فرزند جدید منشعب (fork) میکند؛ هر فرزند به عنوان یک رله تکی عمل میکند. کلاینت باید با قوانین مربوط به نام فرآیند دیمون "script" در /etc/hosts.allow و /etc/hosts.deny مطابقت داشته باشد، در غیر این صورت دسترسی آن رد میشود (ببینید "man 5 hosts_access"). برای اجرای (EXEC) برنامه، فرآیند فرزند به /home/sandbox تغییر ریشه (chroot) میدهد، به کاربر sandbox سوئیچ (su) میکند، و سپس برنامه /home/sandbox/bin/myscript را آغاز مینماید. برنامه Socat و myscript از طریق یک شبهترمینال (pty) ارتباط برقرار میکنند؛ خروجی خطای استاندارد (stderr) مربوط به myscript به stdout هدایت میشود، بنابراین پیامهای خطای آن از طریق socat به کلاینت متصل انتقال مییابد.
socat \
EXEC:"mail.sh target@domain.com",fdin=3,fdout=4 \ TCP4:mail.relay.org:25,crnl,bind=alias1.server.org,mss=512
- فایل mail.sh یک اسکریپت شل است که همراه با socat توزیع شده و یک کلاینت ساده SMTP را پیادهسازی میکند. این اسکریپت طوری برنامهریزی شده است که روی توصیفگرهای فایل (FD) شماره ۳ (ورودی) و ۴ (خروجی) به زبان SMTP "صحبت" کند. گزینههای fdin و fdout به socat میگویند که از این FDها برای برقراری ارتباط با برنامه استفاده کند. از آنجا که mail.sh ورودی و خروجی استاندارد (stdin و stdout) را به ارث میبرد در حالی که socat از آنها استفاده نمیکند، اسکریپت میتواند متن نامه را از stdin بخواند. برنامه Socat آدرس alias1 را آدرس مبدأ محلی شما قرار میدهد (bind)، به پایاندهی صحیح خطوط در شبکه رسیدگی میکند (crnl) و حداکثر ۵۱۲ بایت داده در هر بسته ارسال مینماید (mss).
socat \
-,escape=0x0f \ /dev/ttyS0,rawer,crnl
- یک اتصال تعاملی را از طریق خط سریال باز میکند، مثلاً برای برقراری ارتباط با یک مودم. گزینه rawer پارامترهای ترمینال کنسول و ttyS0 را روی مقادیر کاربردی تنظیم میکند، و crnl به نویسههای صحیح خط جدید تبدیل مینماید. گزینه escape امکان خاتمه دادن به فرآیند socat را با نویسه کنترل-O فراهم میسازد.
socat \
UNIX-LISTEN:/tmp/.X11-unix/X1,fork \ SOCKS4:host.victim.org:127.0.0.1:6000,socksuser=nobody,sourceport=20
- با UNIX-LISTEN، برنامه socat یک سوکت شنوا در دامنه یونیکس در /tmp/.X11-unix/X1 باز میکند. این مسیر متناظر با نمایشگر محلی :1 برنامه XWindow در دستگاه شماست، بنابراین اتصالات کلاینت XWindow به DISPLAY=:1 پذیرفته میشوند. سپس Socat با سرور SOCKS4 به آدرس host.victim.org ارتباط برقرار میکند که ممکن است به دلیل ضعفی مربوط به FTP در فیلترهای ایستا IP خود، اتصالات مبتنی بر sourceport 20 را مجاز بداند. برنامه Socat وانمود میکند که توسط socksuser برابر با nobody اجرا شده است، و درخواست اتصال به درگاه لوپبک 6000 را میدهد (تنها پیکربندیهای ضعیف sockd چنین اجازهای را میدهند). بنابراین اتصالی به سرور XWindow قربانی به دست میآوریم و اگر نیازی به کوکیهای MIT یا احراز هویت کربروس نباشد، میتوان کار را آغاز کرد. لطفاً توجه داشته باشید که در هر لحظه فقط یک اتصال میتواند وجود داشته باشد، زیرا TCP تنها میتواند یک نشست را با یک مجموعه معین از آدرسها و درگاهها برقرار کند.
socat -u \
/tmp/readdata,seek-end=0,ignoreeof \ STDIO
- این مثالی برای انتقال داده یکطرفه (-u) است. برنامه Socat دادهها را از فایل /tmp/readdata (آدرس ضمنی GOPEN)، با شروع از انتهای فعلی آن انتقال میدهد (گزینه seek-end=0 به socat اجازه میدهد خواندن را از انتهای فعلی فایل آغاز کند؛ از seek=0 یا عدم استفاده از گزینه seek برای خواندن دادههای موجود در ابتدا استفاده کنید) در حالتی شبیه به "tail -f" (ignoreeof). این "فایل" میتواند یک سوکت شنوا در دامنه یونیکس نیز باشد (در این صورت از گزینه seek استفاده نکنید).
(sleep 5; echo PASSWORD; sleep 5; echo ls; sleep 1) | \ socat - \
EXEC:'ssh -l user server',pty,setsid,ctty
- یک نشست ssh به سرور را با EXEC اجرا میکند. از یک pty برای ارتباط میان socat و ssh استفاده میکند، آن را به tty کنترلی ssh تبدیل مینماید (ctty)، و این pty را مالک یک گروه فرآیند جدید میکند (setsid)، بنابراین ssh رمز عبور را از socat میپذیرد.
socat -u \
TCP4-LISTEN:3334,reuseaddr,fork \ OPEN:/tmp/in.log,creat,append
- یک جمعآوریکننده پیام مبتنی بر شبکه ساده را پیادهسازی میکند. برای هر کلاینت که به درگاه 3334 متصل میشود، یک فرآیند فرزند جدید تولید میگردد (گزینه fork). تمام دادههای ارسالشده توسط کلاینتها به انتهای فایل /tmp/in.log افزوده (append) میشوند. اگر فایل وجود نداشته باشد، socat آن را ایجاد (creat) میکند. گزینه reuseaddr اجازه راهاندازی مجدد فوری فرآیند سرور را میدهد.
socat \
PTY,link=$HOME/dev/vmodem0,rawer,wait-slave \ EXEC:'"ssh modemserver.us.org socat - /dev/ttyS0,nonblock,rawer"'
- یک دستگاه شبهترمینال (PTY) در کلاینت ایجاد میکند که تحت پیوند نمادین $HOME/dev/vmodem0 قابل دسترسی است. برنامهای که انتظار یک خط سریال یا مودم را دارد میتواند برای استفاده از $HOME/dev/vmodem0 پیکربندی شود؛ ترافیک آن از طریق ssh به یک modemserver هدایت میشود که در آنجا نمونه دیگری از socat آن را به /dev/ttyS0 متصل میکند.
sudo socat --experimental \
TCP4-LISTEN:8000,reuseaddr,fork,netns=namespace1 \ TCP4-CONNECT:server2:8000
- یک شنونده در فضای نام شبکه دادهشده ایجاد میکند که اتصالات TCP را روی درگاه 8000 میپذیرد و آنها را به server2 هدایت مینماید.
sudo socat --experimental \
TUN:192.168.2.1/24,up \ TUN:192.168.2.2/24,up,netns=namespace2
- دو رابط شبکه مجازی ایجاد میکند، یکی در فضای نام پیشفرض و دیگری در namespace2، و بستهها را میان آنها هدایت میکند که به عنوان یک اتصال شبکه مجازی عمل مینماید.
socat \
TCP4-LISTEN:2022,reuseaddr,fork \ PROXY:proxy.local:www.domain.org:22,proxyport=3128,proxyauth=username:s3cr3t
- یک هدایتکننده را آغاز میکند که اتصالات را روی درگاه 2022 میپذیرد و آنها را از طریق دیمون پروکسی که روی درگاه 3128 (proxyport) در میزبان proxy.local گوش میدهد، با استفاده از روش CONNECT هدایت میکند؛ جایی که به عنوان "username" با "s3cr3t" احراز هویت میشوند (proxyauth). سپس proxy.local باید اتصالات به میزبان www.domain.org را روی درگاه 22 برقرار کند.
socat - \
SSL:server:4443,cafile=./server.crt,cert=./client.pem
- یک کلاینت OpenSSL
است که تلاش
میکند یک
اتصال امن
به یک سرور SSL
برقرار کند.
گزینه cafile
فایلی را
مشخص
میکند که
شامل
گواهیهای
قابل
اعتماد است:
ما تنها
زمانی به
سرور
اعتماد
میکنیم که
یکی از این
گواهیها
را ارائه
دهد و اثبات
کند که کلید
خصوصی
مربوطه را
در اختیار
دارد. در
غیر این
صورت اتصال
قطع میشود.
با cert فایلی
حاوی گواهی
کلاینت و
کلید خصوصی
مربوطه
مشخص
میشود. این
مورد زمانی
لازم است که
سرور مایل
به احراز
هویت
کلاینت
باشد؛
بسیاری از
سرورهای
اینترنتی
چنین
نمیخواهند.
آدرس نخست (’-’) میتواند با تقریباً هر آدرس socat دیگری جایگزین شود.
socat \
OPENSSL-LISTEN:4443,reuseaddr,pf=ip4,fork,cert=./server.pem,cafile=./client.crt \ PIPE
- یک سرور OpenSSL
است که
اتصالات TCP
را
میپذیرد،
گواهی را از
فایل server.pem
ارائه
میدهد و
کلاینت را
وادار
میکند
گواهیای
را ارائه
دهد که در
برابر cafile.crt
اعتبارسنجی
میشود.
آدرس دوم (’PIPE’) میتواند با تقریباً هر آدرس socat دیگری جایگزین شود.
برای مشاهده دستورالعملهای تولید و توزیع کلیدها و گواهیهای OpenSSL، مستندات تکمیلی socat با نام socat-openssl.txt را ببینید.
echo | socat -u - \
FILE:/tmp/bigfile,create,largefile,seek=100000000000
- یک فایل تنک (sparse file) به اندازه ۱۰۰ گیگابایت به اضافه ۱ بایت ایجاد میکند؛ این کار نیازمند نوعی از سیستمفایل است که از آن پشتیبانی کند (ext2، ext3، ext4، reiserfs، xfs؛ نه minix یا vfat). عملیات نوشتن ۱ بایت ممکن است زمانبر باشد (در reiserfs: چند دقیقه؛ در ext2: بدون زمان یا آنی)، و فایل حاصل میتواند تنها با inodeهای خود مقداری فضای دیسک مصرف کند (در reiserfs: حدود ۲ مگابایت؛ در ext2: حدود ۱۶ کیلوبایت).
socat \
TCP-L:7777,reuseaddr,fork \ SYSTEM:'filan -i 0 -s >&2',nofork
- برای اتصالات ورودی TCP روی درگاه 7777 گوش میدهد. برای هر اتصال پذیرفتهشده، یک شل را فراخوانی میکند. ورودی و خروجی استاندارد این شل مستقیماً به سوکت TCP متصل است (nofork). شل برنامه filan را اجرا میکند و به آن اجازه میدهد آدرسهای سوکت را در stderr (پنجره ترمینال شما) چاپ کند.
echo -e "\0\14\0\0\c" | socat -u - \
FILE:/usr/bin/squid.exe,seek=0x00074420
- به عنوان یک ویرایشگر باینری ابتدایی عمل میکند: ۴ بایت 000 014 000 000 را در فایل اجرایی /usr/bin/squid.exe در آفست 0x00074420 مینویسد (این یک وصله واقعی برای اجرای فایل اجرایی squid کامپایلشده در Cygwin تحت ویندوز، در سال ۲۰۰۴ بود).
socat - \
TCP:www.blackhat.org:31337,readbytes=1000
- به یک سرویس ناشناخته متصل میشود و از سرریز شدن با دادهها (flooded) جلوگیری میکند.
socat -U \
TCP:target:9999,end-close \ TCP-L:8888,reuseaddr,fork
- دادههای دریافتی از جریانهای مختلف TCP روی درگاه 8888 را تنها به یک جریان به سمت target:9999 ادغام میکند. گزینه end-close از خاتمه یافتن اتصال اشتراکی به 9999 توسط فرآیندهای فرزند منشعبشده از آدرس دوم جلوگیری میکند (close(2) صرفاً پیوند inode را حذف میکند که تا زمانی که فرآیند والد زنده است فعال میماند؛ در حالی که shutdown(2) فعالانه اتصال را خاتمه میدهد).
socat \
TCP-LISTEN:10021,reuseaddr,socktype=6,protocol=33,fork PIPE
- یک سرور اکوی ساده DCCP است. پروتکل DCCP اکنون مستقیماً در socat تدارک دیده شده است، با این حال این مثال نشان میدهد چگونه میتوان از رویههای TCP در socat استفاده کرد و نوع سوکت را به SOCK_DCCP=6 (در لینوکس) و پروتکل IP را به IPPROTO_DCCP=33 تغییر داد.
socat - \
TCP:<server>:10021,reuseaddr,socktype=6,protocol=33,fork
- یک کلاینت ساده DCCP است. پروتکل DCCP اکنون مستقیماً در socat تدارک دیده شده است، با این حال این مثال نشان میدهد چگونه میتوان از رویههای TCP در socat استفاده کرد اما نوع سوکت را به SOCK_DCCP=6 (در لینوکس) و پروتکل IP را به IPPROTO_DCCP=33 تغییر داد.
socat - \
UDP4-DATAGRAM:192.168.1.0:123,sp=123,broadcast,range=192.168.1.0/24
- یک پخش همگانی (broadcast) به شبکه 192.168.1.0/24 ارسال میکند و پاسخهای سرورهای زمانی موجود در آنجا را دریافت مینماید. بستههای NTP دریافتی از میزبانهای خارج از این شبکه نادیده گرفته میشوند.
socat - \
SOCKET-DATAGRAM:2:2:17:x007bxc0a80100x0000000000000000,bind=x007bx00000000x0000000000000000,setsockopt-int=1:6:1,range=x0000xc0a80100x0000000000000000:x0000xffffff00x0000000000000000
- از نظر معنایی معادل مثال قبلی است، اما تمام پارامترها به شکل جنریک مشخص شدهاند. مقدار 6 در setsockopt-int مقدار لینوکسی برای SO_BROADCAST است.
socat - \
IP4-DATAGRAM:255.255.255.255:44,broadcast,range=10.0.0.0/8
- با استفاده از پروتکل 44 یک پخش همگانی (broadcast) به شبکه(های) محلی ارسال میکند. تنها پاسخهای مربوط به محدوده آدرس خصوصی را میپذیرد.
socat - \
UDP4-DATAGRAM:224.255.0.1:6666,bind=:6666,ip-add-membership=224.255.0.1:eth0
- دادهها را از stdin با استفاده از UDP به آدرس چندپخشی (multicast) مشخصشده انتقال میدهد. هر دو درگاه محلی و راه دور 6666 هستند. به رابط eth0 اعلام میکند که بستههای چندپخشی گروه دادهشده را نیز بپذیرد. چندین میزبان در شبکه محلی میتوانند این دستور را اجرا کنند، بنابراین تمام دادههای ارسالشده توسط هر یک از میزبانها توسط سایر آنها دریافت خواهد شد. توجه داشته باشید که دلایل احتمالی بسیاری برای بروز خطا وجود دارد، از جمله فیلترهای IP، مسائل مسیریابی، انتخاب رابط اشتباه توسط سیستمعامل، پلها (bridges)، یا یک سوئیچ با پیکربندی نامناسب.
socat \
UDP:host2:4443 \ TUN:192.168.255.1/24,up
- یک سمت از یک شبکه مجازی (اما نه خصوصی!) را با host2 برقرار میکند که ممکن است فرآیند مشابهی با UDP-L و آدرس tun برابر با 192.168.255.2 در آنجا اجرا شود. آنها میتوانند با استفاده از آدرسهای 192.168.255.1 و 192.168.255.2 به یکدیگر دسترسی پیدا کنند. توجه داشته باشید که جریانسازی به عنوان مثال از طریق TCP یا SSL حفظ مرزهای بسته را تضمین نمیکند و بنابراین ممکن است باعث از دست رفتن بستهها شود.
socat - \
VSOCK-CONNECT:2:1234
- یک اتصال VSOCK با میزبان (میزبان همواره با CID=2 شناختهشده قابل دسترسی است) روی درگاه 1234 برقرار میکند.
socat - \
VSOCK-LISTEN:1234
- روی درگاه 1234 منتظر یک اتصال VSOCK میماند.
socat - \
VSOCK-CONNECT:31:4321,bind:5555
- یک اتصال VSOCK با سیستم میهمان دارای CID=31 روی درگاه 4321 برقرار میکند، و سوکت محلی را به درگاه 5555 متصل (bind) مینماید.
socat \
VSOCK-LISTEN:3333,reuseaddr,fork \ VSOCK-CONNECT:42,3333
- یک هدایتکننده را آغاز میکند که اتصالات VSOCK را روی درگاه 3333 میپذیرد، و آنها را به سیستم میهمان با CID=42 روی همان درگاه هدایت مینماید.
socat \
VSOCK-LISTEN:22,reuseaddr,fork \ TCP:localhost:22
- اتصالات VSOCK را از درگاه 22 به سرور SSH محلی هدایت میکند. اجرای این دستور در یک VM به شما امکان میدهد از طریق SSH با استفاده از VSOCK از میزبان متصل شوید، همانطور که در مثال زیر آمده است.
socat \
TCP4-LISTEN:22222,reuseaddr,fork \ VSOCK-CONNECT:33:22
- اتصالات TCP را از درگاه 22222 به سیستم میهمان با CID=33 که روی درگاه 22 در VSOCK گوش میدهد هدایت میکند. اجرای این دستور در میزبان، در صورتی که سیستم میهمان مثال بالا را اجرا کرده باشد، به شما امکان میدهد با اجرای "ssh -p 22222 user@localhost" از طریق SSH متصل شوید.
socat \
PTY,link=/var/run/ppp,rawer \ INTERFACE:hdlc0
- این مشکل را که pppd به یک دستگاه سریال نیاز دارد و بنابراین ممکن است نتواند روی یک خط همگام که با یک دستگاه شبکه نشان داده میشود کار کند، دور میزند. برنامه socat یک PTY برای راضی نگه داشتن pppd ایجاد میکند، به رابط شبکه hdlc0 متصل (bind) میشود، و میتواند دادهها را میان هر دو دستگاه انتقال دهد. سپس از pppd روی دستگاه /var/run/ppp استفاده کنید.
socat -u \
STDIO \ POSIXMQ-SEND:/queue1,unlink-early,mq-prio=10
- بستههای خواندهشده از stdio (یعنی خطوط ورودی در هنگام اجرای تعاملی) را با اولویت ۱۰ درون صف پیام پازیکس (POSIX message queue) مینویسد.
socat -u \
POSIXMQ-RECV:/queue1,fork,max-children=3 \ SYSTEM:"worker.sh"
- پیامها (بستهها) را از صف پیام پازیکس دریافت میکند و به ازای هر پیام، یک زیرفرآیند منشعب میکند که پیام را خوانده و پردازش مینماید. در یک زمان حداکثر ۳ زیرفرآیند مجاز هستند.
socat -T 1 -d -d \
TCP-L:10081,reuseaddr,fork,crlf \ SYSTEM:"echo -e \"\\\"HTTP/1.0 200 OK\\\nDocumentType: text/plain\\\n\\\ndate: \$\(date\)\\\nserver:\$SOCAT_SOCKADDR:\$SOCAT_SOCKPORT\\\nclient: \$SOCAT_PEERADDR:\$SOCAT_PEERPORT\\\n\\\"\"; cat; echo -e \"\\\"\\\n\\\"\""
- یک سرور اکوی بسیار ابتدایی HTTP ایجاد میکند: هر کلاینت HTTP که متصل میشود یک پاسخ معتبر HTTP دریافت میکند که حاوی اطلاعاتی درباره آدرس و درگاه کلاینت همانگونه که توسط سرور میزبان دیده میشود، آدرس میزبان (که ممکن است در سرورهای چندخانهای متفاوت باشد)، و درخواست اصلی کلاینت است.
socat -d -d \
UDP4-RECVFROM:9999,so-broadcast,so-timestamp,ip-pktinfo,ip-recverr,ip-recvopts,ip-recvtos,ip-recvttl!!- \ SYSTEM:'export; sleep 1' |
grep SOCAT
- روی درگاه 9999 منتظر یک بسته ورودی UDP میماند و متغیرهای محیطی ارائهشده توسط socat را چاپ میکند. در سیستمهای مبتنی بر BSD باید ip-pktinfo را با ip-recvdstaddr,ip-recvif جایگزین کنید. به ویژه متغیر SOCAT_IP_DSTADDR جالب توجه است: این متغیر حاوی آدرس مقصد بسته است که ممکن است یک آدرس تکپخشی (unicast)، چندپخشی (multicast)، یا پخش همگانی (broadcast) باشد.
echo -e "M-SEARCH * HTTP/1.1\nHOST: 239.255.255.250:1900\nMAN: \"ssdp:discover\"\nMX: 4\nST: \"ssdp:all\"\n" | socat - \
UDP-DATAGRAM:239.255.255.250:1900,crlf
- یک پرسوجوی پروتکل SSDP (پروتکل ساده کشف سرویس) را به شبکه محلی ارسال میکند و پاسخهای دریافتشده را جمعآوری کرده و در خروجی نمایش میدهد.
systemd-socket-activate -l 1077 --inetd socat ACCEPT:0,fork PIPE
- ابزار systemd-socket-activate برنامهای برای آزمایش فعالسازی سوکت دیمونها در systemd است. با گزینه --inetd منتظر یک اتصال روی درگاه مشخصشده میماند. اتصال را نمیپذیرد بلکه توصیفگر فایل شنوا را به عنوان FDهای 0 و 1 ارسال میکند. برنامه Socat اتصال در حال انتظار را پذیرفته و انتقال داده را آغاز میکند.
عیبیابی (DIAGNOSTICS)
برنامه Socat از یک سازوکار ثبت لاگ استفاده میکند که امکان فیلتر کردن پیامها بر اساس شدت را فراهم میسازد. سطوح شدت ارائهشده کموبیش با اولویت مربوطه در syslog سازگار هستند. با یک یا حداکثر چهار بار استفاده از گزینه خط فرمان -d، پایینترین اولویت پیامهای صادرشده را میتوان انتخاب کرد. هر پیام شامل یک نویسه بزرگ است که شدت پیام را مشخص میکند (یکی از حروف F، E، W، N، I، یا D)
- FATAL:
- شرایطی که مستلزم پایان فوری و بدون قیدوشرط برنامه است.
- ERROR:
- شرایطی که مانع از پردازش صحیح برنامه میشود. معمولاً برنامه خاتمه مییابد (گزینه -s را ببینید).
- WARNING:
- چیزی به درستی کار نکرده است یا در وضعیتی قرار دارد که ادامه پردازش صحیح قابل تضمین نیست، اما ممکن است امکانپذیر باشد.
- NOTICE:
- اقدامات جالب توجه برنامه، برای مثال برای نظارت بر socat در انواعی از حالتهای سرور.
- INFO:
- توصیف کارهایی که برنامه انجام میدهد و شاید چرایی رخ دادن آنها. امکان نظارت بر چرخه حیات توصیفگرهای فایل را فراهم میکند.
- DEBUG:
- توصیف نحوه کارکرد برنامه، تمام فراخوانیهای سیستم یا کتابخانه و نتایج آنها.
پیامهای لاگ را میتوان در stderr، یک فایل، یا syslog نوشت.
در هنگام خروج، اگر socat به دلیل رسیدن به پایان فایل (EOF) یا مهلت عدم فعالیت خاتمه یافته باشد وضعیت 0 را برمیگرداند؛ در صورت بروز خطا یک مقدار مثبت، و در صورت بروز خطای مهلک یک مقدار منفی بازمیگرداند.
فایلها (FILES)
/usr/bin/socat
/usr/bin/filan
/usr/bin/procan
سیگنالها (SIGNALS)
- SIGUSR1:
- باعث ثبت
آمار
انتقال
فعلی در لاگ
میشود.
همچنین گزینه --statistics را ببینید
متغیرهای محیطی (ENVIRONMENT VARIABLES)
متغیرهای ورودی اطلاعات را از محیط به socat منتقل میکنند، و متغیرهای خروجی توسط socat برای استفاده در اسکریپتها و برنامههای اجراشده تنظیم میشوند.
در متغیرهای خروجی که با "SOCAT" آغاز میشوند، این پیشوند در واقع با نام بزرگِ فایل اجرایی یا مقدار گزینه -lp جایگزین میشود.
- SOCAT_DEFAULT_LISTEN_IP (input)
- (مقادیر 4 یا 6) نسخه IP مورد استفاده را برای آدرسهای listen، recv، و recvfrom در صورتی که هیچ گزینه pf (خانواده پروتکل) داده نشده باشد، تعیین میکند. توسط گزینههای -4 یا -6 در socat بازنویسی (override) میشود.
- SOCAT_PREFERRED_RESOLVE_IP (input)
- (مقادیر 0، 4، یا 6) نسخه IP مورد استفاده را هنگام حل نامهای میزبان هدف در صورتی که نسخه توسط نوع آدرس، گزینه pf (خانواده پروتکل)، یا قالب آدرس مشخص نشده باشد، تعیین میکند. اگر تبدیل نام ورودی مطابقتی برنگرداند، اولین نتیجه (با نسخه IP متفاوت) انتخاب میشود. با مقدار 0، برنامه socat همواره اولین رکورد و نسخه IP آن را انتخاب میکند.
- SOCAT_MAIN_WAIT (input)
- مدت زمانی (ثانیه) را برای به خواب رفتن فرآیند اصلی در آغاز تابع main\() مشخص میکند. برای اشکالزدایی مفید است.
- SOCAT_TRANSFER_WAIT (input)
- مدت زمانی (ثانیه) را برای به خواب رفتن فرآیند پس از باز کردن آدرسها و پیش از ورود به حلقه انتقال مشخص میکند. برای اشکالزدایی مفید است.
- SOCAT_FORK_WAIT (input)
- مدت زمانی (ثانیه) را برای به خواب رفتن فرآیندهای والد و فرزند پس از یک fork() موفقیتآمیز مشخص میکند. برای اشکالزدایی مفید است.
- SOCAT_VERSION (output)
- برنامه Socat این متغیر را روی رشته نسخه خود تنظیم میکند، مانند "1.7.0.0" برای نسخههای منتشرشده یا مثلاً "1.6.0.1+envvar" برای نسخههای موقت؛ میتواند در اسکریپتهای فراخوانیشده توسط socat استفاده شود.
- SOCAT_PID (output)
- برنامه Socat این متغیر را روی شناسه فرآیند خود تنظیم میکند. در صورت استفاده از گزینه آدرس fork، متغیر SOCAT_PID شناسه فرآیندهای فرزند را دریافت میکند. عمل Fork برای exec، system، و SHELL مقدار SOCAT_PID را تغییر نمیدهد.
- SOCAT_PPID (output)
- برنامه Socat این متغیر را روی شناسه فرآیند خود تنظیم میکند. در صورت fork، متغیر SOCAT_PPID شناسه فرآیند اصلی را حفظ میکند.
- SOCAT_PEERADDR (output)
- در آدرسهای سوکت غیرفعال (تمام آدرسهای LISTEN و RECVFROM)، این متغیر روی رشتهای تنظیم میشود که آدرس سوکت طرف مقابل را توصیف میکند. اطلاعات درگاه شامل آن نمیشود.
- SOCAT_PEERPORT (output)
- در آدرسهای سوکت غیرفعال مناسب (TCP، UDP، و SCTP - LISTEN و RECVFROM)، این متغیر روی رشتهای حاوی شماره درگاه طرف مقابل تنظیم میشود.
- SOCAT_SOCKADDR (output)
- در تمام آدرسهای LISTEN، این متغیر روی رشتهای تنظیم میشود که آدرس سوکت محلی را توصیف میکند. اطلاعات درگاه شامل آن نمیشود.
- SOCAT_SOCKPORT (output)
- در آدرسهای TCP-LISTEN، UDP-LISTEN، و SCTP-LISTEN، این متغیر روی درگاه محلی تنظیم میشود.
- SOCAT_TIMESTAMP (output)
- در تمام آدرسهای RECVFROM که در آنها گزینه آدرس so-timestamp اعمال شده باشد، socat این متغیر را روی برچسب زمانی حاصل تنظیم میکند.
- SOCAT_IP_OPTIONS (output)
- در تمام آدرسهای RECVFROM مبتنی بر IPv4 که در آنها گزینه آدرس ip-recvopts اعمال شده باشد، socat این متغیر را با گزینههای IP بسته دریافتشده پر میکند.
- SOCAT_IP_DSTADDR (output)
- در تمام آدرسهای RECVFROM مبتنی بر IPv4 که در آنها گزینه آدرس ip-recvdstaddr (در BSD) یا ip-pktinfo (در سایر پلتفرمها) اعمال شده باشد، socat این متغیر را روی آدرس مقصد بسته دریافتشده تنظیم میکند. این به ویژه برای شناسایی بستههای با آدرس پخش همگانی و چندپخشی مفید است.
- SOCAT_IP_IF (output)
- در تمام آدرسهای RECVFROM مبتنی بر IPv4 که در آنها گزینه آدرس ip-recvif (در BSD) یا ip-pktinfo (در سایر پلتفرمها) اعمال شده باشد، socat این متغیر را روی نام رابطی که بسته در آن دریافت شده تنظیم میکند.
- SOCAT_IP_LOCADDR (output)
- در تمام آدرسهای RECVFROM مبتنی بر IPv4 که در آنها گزینه آدرس ip-pktinfo اعمال شده باشد، socat این متغیر را روی آدرس رابطی که بسته در آن دریافت شده تنظیم میکند.
- SOCAT_IP_TOS (output)
- در تمام آدرسهای RECVFROM مبتنی بر IPv4 که در آنها گزینه آدرس ip-recvtos اعمال شده باشد، socat این متغیر را روی TOS (نوع سرویس) بسته دریافتشده تنظیم میکند.
- SOCAT_IP_TTL (output)
- در تمام آدرسهای RECVFROM مبتنی بر IPv4 که در آنها گزینه آدرس ip-recvttl اعمال شده باشد، socat این متغیر را روی TTL (طول عمر) بسته دریافتشده تنظیم میکند.
- SOCAT_IPV6_HOPLIMIT (output)
- در تمام آدرسهای RECVFROM مبتنی بر IPv6 که در آنها گزینه آدرس ipv6-recvhoplimit اعمال شده باشد، socat این متغیر را روی مقدار hoplimit بسته دریافتشده تنظیم میکند.
- SOCAT_IPV6_DSTADDR (output)
- در تمام آدرسهای RECVFROM مبتنی بر IPv6 که در آنها گزینه آدرس ipv6-recvpktinfo اعمال شده باشد، socat این متغیر را روی آدرس مقصد بسته دریافتشده تنظیم میکند.
- SOCAT_IPV6_TCLASS (output)
- در تمام آدرسهای RECVFROM مبتنی بر IPv6 که در آنها گزینه آدرس ipv6-recvtclass اعمال شده باشد، socat این متغیر را روی کلاس انتقال بسته دریافتشده تنظیم میکند.
- SOCAT_OPENSSL_X509_ISSUER (output)
- فیلد Issuer (صادرکننده) از گواهی طرف مقابل
- SOCAT_OPENSSL_X509_SUBJECT (output)
- فیلد Subject (موضوع) از گواهی طرف مقابل
- SOCAT_OPENSSL_X509_COMMONNAME (output)
- ورودیهای commonName از موضوع گواهی طرف مقابل. مقادیر چندگانه با " // " از هم جدا میشوند.
- SOCAT_OPENSSL_X509_* (output)
- تمام ورودیهای دیگر از موضوع گواهی طرف مقابل
- SOCAT_OPENSSL_X509V3_DNS (output)
- ورودیهای DNS از افزونههای گواهی طرف مقابل - فیلد subjectAltName. مقادیر چندگانه با " // " از هم جدا میشوند.
- HOSTNAME (input)
- برای تعیین نام میزبان جهت ثبت لاگ استفاده میشود (گزینه -lh را ببینید).
- LOGNAME (input)
- به عنوان
نام کاربری
کلاینت socks در
صورتی که
هیچ socksuser مشخص
نشده باشد،
استفاده
میشود.
با گزینههای su و su-d، مقدار LOGNAME روی نام کاربری دادهشده تنظیم میشود. - USER (input)
- به عنوان
نام کاربری
کلاینت socks در
صورتی که
هیچ socksuser مشخص
نشده باشد و
LOGNAME خالی
باشد،
استفاده
میشود.
با گزینههای su و su-d، مقدار USER روی نام کاربری دادهشده تنظیم میشود. - SHELL (output)
- با گزینههای su و su-d، مقدار SHELL روی شل لاگین کاربر دادهشده تنظیم میشود.
- PATH (output)
- میتواند با گزینه path برای آدرسهای exec، system، و SHELL تنظیم شود.
- HOME (output)
- با گزینههای su و su-d، مقدار HOME روی دایرکتوری خانگی کاربر دادهشده تنظیم میشود.
تقدیر و تشکر (CREDITS)
فعالیت گروهها و سازمانهای زیر برای این پروژه بسیار ارزشمند بوده است:
پروژه FSF (گنو، http://www.fsf.org) با نرمافزارهای توسعه آزاد و قابل حمل خود و انبوهی از ابزارها و کتابخانههای مفید دیگر.
جامعه توسعهدهندگان لینوکس (http://www.linux.org) برای ارائه یک سیستمعامل آزاد و متنباز.
گروه Open Group (http://www.unix-systems.org) برای در دسترس قرار دادن رایگان مشخصات استاندارد خود در اینترنت.
نسخه (VERSION)
این صفحه راهنما نسخه 1.8.0 از socat را شرح میدهد.
اشکالات (BUGS)
آدرسها نمیتوانند تودرتو باشند، بنابراین یک فرآیند تکی socat نمیتواند، به عنوان مثال، ssl را روی socks به کار بیندازد.
گزینه آدرس ftruncate بدون مقدار به جای 0 از پیشفرض 1 استفاده میکند.
حالتهای با جزئیات (-x و/یا -v) در صورت استفاده از گزینههای آدرس cr یا crnl، نویسههای پایان خط را به طور ناسازگار نمایش میدهند: آنها دادهها را در هر دو جهت پس از تبدیل نشان میدهند.
مجوزهای OpenSSL و GNU Readline ناسازگار هستند. بنابراین پشتیبانی از readline در دبیان غیرفعال شده است.
گزارش اشکالات را به <socat@dest-unreach.org> ارسال کنید
همچنین ببینید (SEE ALSO)
nc(1), rinetd(8), openssl(1), stunnel(8), rlwrap(1), setsid(1)
صفحه اصلی Socat: http://www.dest-unreach.org/socat
نویسنده (AUTHOR)
Gerhard Rieger <rieger@dest-unreach.org> و مشارکتکنندگان