| TOR(1) | Tor Manual | TOR(1) |
نام (NAME)
tor - مسیریاب پیازی نسل دوم
خلاصه دستور (SYNOPSIS)
tor [OPTION value]...
توضیحات (DESCRIPTION)
برنامهٔ Tor یک سرویس ارتباطی ناشناسکنندهٔ مبتنی بر اتصال است. کاربران مسیری با مسیریابی مبدأ را از میان مجموعهای از گرهها برمیگزینند و یک «مدار مجازی» را درون شبکه برقرار میکنند. هر گره در مدار مجازی تنها گرههای پیشین و پسین خود را میشناسد و از گرههای دیگر بیخبر است. ترافیکی که در امتداد مدار جریان دارد، در هر گره با یک کلید متقارن رمزگشایی میشود که گره بعدی مسیر را مشخص میسازد.
بهطور اساسی، Tor یک شبکهٔ توزیعشده از سرورها یا بازپخشها («مسیریابهای پیازی») را فراهم میکند. کاربران جریانهای TCP خود مانند ترافیک وب، ftp، ssh و غیره را در سراسر شبکه بازمیجهانند، بهطوری که دریافتکنندگان، ناظران و حتی خود بازپخشها برای ردگیری مبدأ جریان با دشواری روبرو شوند.
نکته
بهطور پیشفرض، tor تنها بهعنوان کلاینت عمل میکند. برای کمک به شبکه از طریق اختصاص پهنای باند بهعنوان یک بازپخش (relay)، گزینهٔ پیکربندی ORPort را مطابق آنچه در ادامه آمده است تغییر دهید. لطفاً مستندات موجود در وبسایت پروژهٔ Tor را نیز مطالعه فرمایید.
گزینههای خط فرمان (COMMAND-LINE OPTIONS)
برنامهٔ Tor رابط خط فرمان قدرتمندی دارد. این بخش آرگومانهای اختیاری را که میتوانید با دستور tor در خط فرمان به کار ببرید فهرست میکند.
گزینههای پیکربندی را میتوان در خط فرمان در قالب --OptionName OptionValue، یا در قالب OptionName OptionValue، یا درون فایل پیکربندی مشخص کرد. بهعنوان مثال، میتوانید با فرستادن --SocksPort 9999 یا SocksPort 9999 در خط فرمان، یا با درج SocksPort 9999 در فایل پیکربندی، به Tor فرمان دهید که روی درگاه 9999 به اتصالات SOCKS گوش فرا دهد. در خط فرمان، مقادیر گزینههایی را که فاصله دارند درون نقلقول قرار دهید. برای نمونه، چنانچه میخواهید Tor تمام پیامهای اشکالزدایی را در debug.log ثبت کند، باید --Log "debug file debug.log" را مشخص نمایید.
نکته
گزینههای پیکربندی در خط فرمان بر گزینههای موجود در فایلهای پیکربندی اولویت دارند و جایگزین آنها میشوند. برای اطلاعات بیشتر THE CONFIGURATION FILE FORMAT را مشاهده کنید.
گزینههای زیر در این بخش فقط در خط فرمان tor شناسایی میشوند و در فایل پیکربندی کاربرد ندارند.
-h، --help
-f، --torrc-file FILE
--allow-missing-torrc
--defaults-torrc FILE
--ignore-missing-torrc
--hash-password PASSWORD
--list-fingerprint [key type]
--verify-config
--dump-config short|full
--service install [--options command-line options]
--service remove|start|stop
--nt-service
--list-torrc-options
--list-deprecated-options
--list-modules
--version
--quiet|--hush
از گزینهٔ --newpass همراه با --keygen تنها زمانی استفاده کنید که نیاز به افزودن، تغییر یا حذف عبارت عبور روی یک کلید هویت اصلی ed25519 موجود داشته باشید. از شما عبارت عبور قدیمی (در صورت وجود) و عبارت عبور جدید (در صورت وجود) درخواست خواهد شد.
نکته
هنگام تولید یک کلید اصلی، ممکن است بخواهید از --DataDirectory برای کنترل محل ذخیرهٔ کلیدها و گواهیها، و از --SigningKeyLifetime برای کنترل طول عمر آنها استفاده کنید. برای کسب اطلاعات بیشتر دربارهٔ رفتار این گزینهها، بخش SERVER OPTIONS را ببینید. شما باید به DataDirectory مشخصشده دسترسی نوشتن داشته باشید.
--keygen-family basename
--passphrase-fd FILEDES
--key-expiration [purpose] [--format iso8601|timestamp]
اجرای tor --key-expiration sign تلاش میکند تا گواهی کلید امضای شما را پیدا کند و خروجی را هم در گزارشها و هم در stdout نمایش دهد. آرگومان اختیاری --format به شما امکان میدهد قالب زمان را مشخص کنید. در حال حاضر، iso8601 و timestamp پشتیبانی میشوند. اگر --format مشخص نشود، زمان انقضای گواهی کلید امضا در قالب ISO-8601 خواهد بود. برای مثال، خروجی ارسالشده به stdout به این شکل خواهد بود: "signing-cert-expiry: 2017-07-25 08:30:15 UTC". اگر --format timestamp مشخص شود، زمان انقضای گواهی کلید امضا در قالب برچسب زمانی یونیکس (Unix timestamp) خواهد بود. برای مثال، خروجی ارسالشده به stdout به این شکل خواهد بود: "signing-cert-expiry: 1500971415".
--dbg-...
بهطور پیشفرض، تمام گزینههای پیکربندی در یک فایل پیکربندی در یک خط واحد نوشته میشوند. آنها به شکل یک نام گزینه و یک مقدار، یا یک نام گزینه و یک مقدار نقلقولشده (option value یا option "value") هستند. هر چیزی پس از نویسه # به عنوان کامنت در نظر گرفته میشود. گزینهها به بزرگ و کوچک بودن حروف حساس نیستند. نویسههای گریز (escape) به سبک C درون مقادیر نقلقولشده مجاز هستند. برای تقسیم یک مدخل پیکربندی به چند خط، از یک نویسه خط مورب وارونه (\) پیش از انتهای خط استفاده کنید. کامنتها را میتوان در چنین مدخلهای چندخطی استفاده کرد، اما باید از ابتدای خط آغاز شوند.
گزینههای پیکربندی را میتوان با استفاده از گزینه %include همراه با مقداری که یک مسیر است از فایلها یا پوشهها وارد کرد. این مسیر میتواند حاوی نویسههای عمومی (wildcard) باشد. نویسههای عمومی ابتدا بسط داده میشوند و سپس بر اساس ترتیب واژگانی (lexical) مرتب میگردند. آنگاه برای هر فایل یا پوشه منطبق، قواعد زیر دنبال میشود: اگر مسیر یک فایل باشد، گزینههای آن فایل بهگونهای تجزیه میشوند که گویی در محل گزینه %include نوشته شدهاند. اگر مسیر یک پوشه باشد، تمام فایلهای موجود در آن پوشه بر اساس ترتیب واژگانی تجزیه خواهند شد. فایلهایی که با یک نقطه آغاز میشوند نادیده گرفته میشوند. فایلهای موجود در زیرپوشهها نادیده گرفته میشوند. گزینه %include میتواند بهصورت بازگشتی استفاده شود. در صورتی که Sandbox فعال باشد، نمیتوان فایلها یا دایرکتوریهای پیکربندی جدید را به نمونه در حال اجرای Tor اضافه کرد.
نویسههای عمومی پشتیبانیشده عبارتند از * به معنی هر تعداد نویسه شامل هیچ، و ? به معنی دقیقاً یک نویسه. این نویسهها را میتوان با قرار دادن یک خط مورب وارونه پیش از آنها گریز داد، مگر در ویندوز. هنگام بسط نویسههای عمومی، فایلهایی که با یک نقطه آغاز میشوند تطبیق داده نمیشوند، مگر اینکه نقطه آغازین بهطور صریح در الگو آمده باشد، بهجز در ویندوز.
بهطور پیشفرض، گزینهای در خط فرمان بر گزینهای که در فایل پیکربندی آمده است اولویت دارد، و گزینهای در فایل پیکربندی بر گزینهای در فایل پیشفرضها ارجحیت دارد.
این قاعده برای گزینههایی که یک مقدار منفرد میپذیرند ساده است، اما برای گزینههایی که مجازند بیش از یک بار رخ دهند میتواند پیچیده شود: اگر چهار SocksPort در فایل پیکربندی خود تعیین کنید و یک SocksPort دیگر در خط فرمان مشخص کنید، گزینه موجود در خط فرمان جایگزین همه گزینههای SocksPort در فایل پیکربندی خواهد شد. اگر این چیزی نیست که میخواهید، نام گزینه را با یک علامت مثبت (+) پیشوندگذاری کنید تا به جای آن به مجموعه گزینههای قبلی افزوده شود. برای نمونه، تنظیم SocksPort 9100 فقط از درگاه 9100 استفاده خواهد کرد، اما تنظیم +SocksPort 9100 از هر دو درگاه 9100 و 9050 استفاده میکند (زیرا این مقدار پیشفرض است).
از طرف دیگر، ممکن است بخواهید تمام نمونههای یک گزینه را در فایل پیکربندی حذف کنید و اصلاً آن را جایگزین نکنید: برای مثال بخواهید در خط فرمان تعیین کنید که اصلاً هیچ SocksPortی نمیخواهید. برای انجام این کار، نام گزینه را با یک خط مورب رو به جلو (/) پیشوندگذاری کنید. شما میتوانید از علامت مثبت (+) و خط مورب رو به جلو (/) هم در فایل پیکربندی و هم در خط فرمان استفاده کنید.
گزینههای عمومی (GENERAL OPTIONS)
AccelDir DIR
AccelName NAME
اگر نام موتور با یک "!" پیشوندگذاری شده باشد، در صورت عدم بارگذاری موتور، Tor خارج خواهد شد.
AlternateBridgeAuthority [nickname] [flags] ipv4address:port fingerprint, AlternateDirAuthority [nickname] [flags] ipv4address:port fingerprint
AvoidDiskWrites 0|1
BandwidthBurst N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
BandwidthRate N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
توجه داشته باشید که این گزینه و سایر گزینههای محدودکننده پهنای باند، تنها روی دادههای TCP اعمال میشوند: آنها سرآیندهای TCP یا ترافیک DNS را محاسبه نمیکنند.
برنامه Tor از توانهای دو استفاده میکند نه توانهای ده، بنابراین 1 GByte برابر با 1024*1024*1024 بایت است، بر خلاف ۱ میلیارد بایت.
در این گزینه و سایر گزینههایی که آرگومانهایی بر حسب bytes، KBytes و غیره میپذیرند، قالبهای دیگری نیز پشتیبانی میشوند. بهویژه، "KBytes" میتواند به صورت "kilobytes" یا "kb" نیز نوشته شود؛ "MBytes" را میتوان به صورت "megabytes" یا "MB" نوشت؛ "kbits" را میتوان به شکل "kilobits" نوشت؛ و به همین ترتیب. بزرگی یا کوچکی حروف اهمیتی ندارد. برنامه Tor همچنین واژههای "byte" و "bit" را در حالت مفرد میپذیرد. پیشوندهای "tera" و "T" نیز شناخته میشوند. اگر هیچ واحدی مشخص نشود، پیشفرض بایت (bytes) خواهد بود. برای جلوگیری از سردرگمی، توصیه میکنیم "bytes" یا "bits" را بهطور صریح بنویسید، زیرا فراموش کردن اینکه "B" به معنای بایت است نه بیت، آسان است.
CacheDirectory DIR
CacheDirectoryGroupReadable 0|1|auto
CircuitPriorityHalflife NUM
ClientTransportPlugin transport socks4|socks5 IP:PORT, ClientTransportPlugin transport exec path-to-binary [options]
در حالت دوم، هنگامی که همراه با یک خط Bridge متناظر تنظیم شود، کلاینت Tor فایل اجرایی پراکسی انتقالپذیر (pluggable transport) را در path-to-binary با استفاده از options به عنوان گزینههای خط فرمان اجرا کرده و ترافیک خود را به آن فوروارد میکند. وظیفه آن پراکسی است که ترافیک را به درستی به پل فوروارد کند. (پیشفرض: none)
ConfluxEnabled 0|1|auto
ConfluxClientUX throughput|latency|throughput_lowmem|latency_lowmem
ConnLimit NUM
رلههای Tor برای اتصال به هر رله دیگر به هزاران سوکت نیاز دارند. اگر یک پل خصوصی را اجرا میکنید، میتوانید تعداد سوکتهای مورد استفاده Tor را کاهش دهید. برای مثال، جهت محدود کردن Tor به ۵۰۰ سوکت، دستور "ulimit -n 500" را در یک شل اجرا کنید. سپس tor را در همان شل با ConnLimit 500 شروع کنید. همچنین ممکن است نیاز باشد DisableOOSCheck 0 را تنظیم کنید.
مگر اینکه سوکتهای شما بهشدت محدود باشند، احتمالاً نیازی به تنظیم خودِ ConnLimit نخواهید داشت. این گزینه روی ویندوز بیتأثیر است، زیرا آن پلتفرم فاقد getrlimit() است. (پیشفرض: 1000)
ConstrainedSockets 0|1
راهکار ترجیحی این است که مدیر سیستم، استخر بافر میزبان را از طریق /proc/sys/net/ipv4/tcp_mem یا سازوکار معادل افزایش دهد؛ این گزینه پیکربندی یک راهحل ثانویه (چاره آخر) است.
همچنین در صورت کمیاب بودن بافرهای TCP نباید از گزینه DirPort استفاده شود. درخواستهای دایرکتوری کششده، سوکتهای اضافی مصرف میکنند که مشکل را تشدید میکند.
شما نباید این ویژگی را فعال کنید مگر اینکه با مشکل "no buffer space available" روبرو شوید. کاهش بافرهای TCP بر اندازه پنجره (window size) برای جریان TCP تأثیر میگذارد و توان عملیاتی را متناسب با زمان رفتوبرگشت (round trip time) در مسیرهای طولانی کاهش میدهد. (پیشفرض: 0)
ConstrainedSockSize N bytes|KBytes
ControlPort [address:]port|unix:path|auto [flags]
پرچمهای شناختهشده عبارتند از:
GroupWritable
WorldWritable
RelaxDirModeCheck
ControlPortFileGroupReadable 0|1
ControlPortWriteToFile Path
ControlSocket Path
ControlSocketsGroupWritable 0|1
CookieAuthFile Path
CookieAuthFileGroupReadable 0|1
CountPrivateBandwidth 0|1
DataDirectory DIR
DataDirectoryGroupReadable 0|1
DirAuthority [nickname] [flags] ipv4address:dirport fingerprint
در صورتی که پرچم "bridge" تنظیم شده باشد، Tor از این مرجع به عنوان یک دایرکتوری معتبر پل استفاده خواهد کرد. اگر پرچم "orport=orport" داده شده باشد، Tor هنگام باز کردن تونلهای رمزگذاریشده به dirserver از درگاه ارائهشده استفاده خواهد کرد. اگر پرچم "weight=num" داده شده باشد، کارگزار دایرکتوری بهطور تصادفی با احتمالی متناسب با آن وزن انتخاب میشود (پیشفرض 1.0). اگر پرچم "v3ident=fp" داده شده باشد، dirserver یک مرجع دایرکتوری v3 است که کلید امضای بلندمدت v3 آن دارای اثرانگشت fp میباشد. در نهایت، اگر پرچم "ipv6=[ipv6address]:orport" وجود داشته باشد، مرجع دایرکتوری برای اتصالات IPv6 روی آدرس IPv6 و OR Port مشخصشده گوش فرا میدهد.
برنامه Tor برای بارگیری اسناد دایرکتوری با مرجع در ipv4address ارتباط برقرار میکند. کلاینتها همواره از ORPort استفاده میکنند. رلهها معمولاً از DirPort استفاده میکنند، اما در برخی شرایط از ORPort استفاده خواهند کرد. اگر یک ORPort مربوط به IPv6 ارائه شده باشد، کلاینتها نیز در صورت پیکربندی برای استفاده از IPv6، اسناد دایرکتوری را از IPv6 ORPort بارگیری خواهند کرد.
اگر هیچ خط DirAuthority داده نشده باشد، Tor از مراجع دایرکتوری پیشفرض استفاده خواهد کرد. نکته: این گزینه برای راهاندازی یک شبکه خصوصی Tor با مراجع دایرکتوری اختصاصی در نظر گرفته شده است. در صورت استفاده از آن، از سایر کاربران قابل تشخیص خواهید بود، زیرا به مراجعی که آنها اعتماد دارند، اعتماد ندارید.
DirAuthorityFallbackRate NUM
DisableAllSwap 0|1
DisableDebuggerAttachment 0|1
DisableNetwork 0|1
ExtendByEd25519ID 0|1|auto
ExtORPort [address:]port|auto
(پیشفرض: DataDirectory/extended_orport_auth_cookie)
ExtORPortCookieAuthFile Path
ExtORPortCookieAuthFileGroupReadable 0|1
FallbackDir ipv4address:dirport orport=orport id=fingerprint [weight=num] [ipv6=[ipv6address]:orport]
گزینههای FallbackDir باید رلههای پایدار با آدرسهای IP، درگاهها، و کلیدهای هویتی پایدار باشند. آنها باید حتماً دارای DirPort باشند.
بهطور پیشفرض، مراجع دایرکتوری نیز FallbackDir هستند. مشخص کردن یک FallbackDir جایگزین FallbackDirهای پیشفرض hard-coded در Tor میشود (در صورت وجود). (برای توضیح هر پرچم به DirAuthority مراجعه کنید.)
FetchDirInfoEarly 0|1
FetchDirInfoExtraEarly 0|1
FetchHidServDescriptors 0|1
FetchServerDescriptors 0|1
FetchUselessDescriptors 0|1
HardwareAccel 0|1
HashedControlPassword hashed_password
HTTPProxy host[:port]
HTTPProxyAuthenticator username:password
HTTPSProxy host[:port]
HTTPSProxyAuthenticator username:password
KeepalivePeriod NUM
KeepBindCapabilities 0|1|auto
برخی از گزارشهای سطح پایین ممکن است از گردانندههای سیگنال (signal handlers) ارسال شوند، بنابراین مقصد این گزارشها باید در برابر سیگنال ایمن (signal-safe) باشد. این گزارشهای سطح پایین شامل ردگیری به عقب (backtraces)، خطاهای توابع گزارشگیری، و خطاها در کدهایی هستند که توسط توابع گزارشگیری فراخوانی میشوند. گزارشهای signal-safe همیشه به stderr یا stdout ارسال میشوند. آنها همچنین به تعداد محدودی از فایلهای گزارش که برای ثبت پیامهایی در سطح اهمیت error از دامنههای bug یا general پیکربندی شدهاند ارسال میگردند. آنها هرگز به عنوان syslog، رویدادهای گزارش درگاه کنترل (control port)، یا مقاصد گزارشگیری مبتنی بر API ارسال نمیشوند.
Log minSeverity[-maxSeverity] file FILENAME
Log [domain,...]minSeverity[-maxSeverity] ... file FILENAME
Log [domain,...]minSeverity[-maxSeverity] ... stderr|stdout|syslog
این یک قابلیت پیشرفته است که بیشتر برای اشکالزدایی یک یا دو زیرسیستم Tor در یک زمان مفید است.
دامنههای شناختهشده در حال حاضر عبارتند از: general، crypto، net، config، fs، protocol، mm، http، app، control، circ، rend، bug، dir، dirserv، or، edge، acct، hist، handshake، heartbeat، channel، sched، guard، consdiff، dos، process، pt، btrack، و mesg. نام دامنهها به بزرگی و کوچکی حروف حساس نیستند.
برای نمونه، «Log [handshake]debug [~net,~mm]info notice stdout» موارد زیر را به stdout ارسال میکند: تمام پیامهای handshake با هر سطح اهمیتی، تمام پیامهای با اهمیت info و بالاتر از دامنههایی به جز شبکه (net) و مدیریت حافظه (mm)، و تمام پیامهای با اهمیت notice یا بالاتر.
LogMessageDomains 0|1
LogTimeGranularity NUM
MaxAdvertisedBandwidth N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
MaxUnparseableDescSizeToLog N bytes|KBytes|MBytes|GBytes|TBytes
MetricsPort [address:]port [format]
ما برای format از نوع prometheus توصیه میکنیم که تنها نشانیِ مجاز برای دسترسی به این درگاه، خودِ کارساز Prometheus باشد. به یاد داشته باشید که این اتصال رمزگذارینشده است (HTTP)، بنابراین استفاده از ابزاری مانند stunnel را برای ایمنسازی پیوند ارتباطی میان این درگاه و کارساز در نظر بگیرید.
در صورت تعیین، این درگاه برای شنود درخواستهای HTTP GET به «/metrics» باز میشود. به محض دریافت درخواست، سنجههای جمعآوریشده در این نمونهٔ tor بر اساس قالب ارائهشده مرتب و قالببندی شده و سپس ارسال میشوند. اگر این گزینه تعیین شود، MetricsPortPolicy نیز باید حتماً تعریف گردد؛ در غیر این صورت تمامی درخواستها رد خواهند شد.
قالب پشتیبانیشده «prometheus» است که در صورت تعیین نشدن، پیشفرض نیز میباشد. مدل دادههای Prometheus را میتوان در اینجا مشاهده کرد: https://prometheus.io/docs/concepts/data_model
سنجههای tor به صورت مداوم جمعآوری میشوند و صرفاً متشکل از شمارندهها هستند. از این رو، واکشی این سنجهها بار پردازشی بسیار ناچیزی روی فرایند tor دارد. (پیشفرض: None)
به عنوان مثال، در اینجا تنها 5.6.7.8 مجاز به اتصال خواهد بود:
MetricsPort 1.2.3.4:9035 MetricsPortPolicy accept 5.6.7.8
MetricsPortPolicy policy,policy,...
لطفاً در نظر داشته باشید که اگر کارساز جمعآوریکنندهٔ سنجهها روی MetricsPort پشت یک NAT باشد، در این صورت هر موجودیتی در پشت آن میتواند به آن دسترسی داشته باشد. وضعیت در مورد مجاز کردن localhost نیز مشابه است و تمامی کاربران روی کارساز به آن دسترسی خواهند داشت. بار دیگر تأکید میشود که برای ایمنسازی پیوند یا تقویت کنترل دسترسی، حتماً استفاده از ابزاری مانند stunnel را مد نظر قرار دهید.
NoExec 0|1
OutboundBindAddress IP
OutboundBindAddressExit IP
OutboundBindAddressOR IP
__OwningControllerProcess PID
PerConnBWBurst N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
PerConnBWRate N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
OutboundBindAddressPT IP
PidFile FILE
ProtocolWarnings 0|1
RelayBandwidthBurst N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
RelayBandwidthRate N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
RephistTrackTime N seconds|minutes|hours|days|weeks
RunAsDaemon 0|1
SafeLogging 0|1|relay
اگر این گزینه روی ۰ تنظیم شود، Tor هیچ پاکسازیای انجام نخواهد داد؛ اگر روی ۱ تنظیم شود، تمام رشتههای بالقوه حساس جایگزین میشوند. اگر روی relay تنظیم شود، تمام پیامهای گزارش ایجادشده در هنگام فعالیت به عنوان رله پاکسازی میشوند، اما پیامهای ایجادشده در زمان فعالیت به عنوان کلاینت دستنخورده باقی میمانند. نکته: Tor ممکن است هنگام گزارشگیری در سطوح پرگوتر از Notice به این گزینه اعتنا نکند. (پیشفرض: 1)
Sandbox 0|1
هنگامی که Sandbox برابر ۱ باشد، گزینههای زیر را نمیتوان در زمان اجرای tor تغییر داد: Address، ConnLimit، CookieAuthFile، DirPortFrontPage، ExtORPortCookieAuthFile، Logs، ServerDNSResolvConfFile، ClientOnionAuthDir (و هیچیک از فایلهای درون آن با دریافت سیگنال HUP دوباره بارگیری نخواهند شد).
راهاندازی Onion Services جدید از طریق درگاه کنترل با پیادهسازی فعلی سندباکس فراخوانی سیستمی پشتیبانی نمیشود.
Tor باید در حالت کلاینت یا سرور باقی بماند (برخی تغییرات در ClientOnly و ORPort مجاز نیستند). در حال حاضر، اگر Sandbox برابر ۱ باشد، دستور «GETINFO address» در ControlPort کار نخواهد کرد.
هنگام استفاده از %include در فایلهای پیکربندی tor، بارگیری مجدد پیکربندی tor پس از افزودن فایلها یا دایرکتوریهای جدید پیکربندی پشتیبانی نمیشود.
(پیشفرض: 0) Schedulers KIST|KISTLite|Vanilla
انواع ممکن زمانبند عبارتند از:
KIST: مخفف Kernel-Informed Socket Transport. برنامه Tor از اطلاعات TCP هسته استفاده خواهد کرد تا تصمیمهای آگاهانهای در رابطه با اینکه چه مقدار داده و در چه زمانی ارسال شود اتخاذ کند. همچنین KIST برای بهبود تصمیمهای اولویتبندی ترافیک، ترافیک را به صورت دستهای مدیریت میکند (نگاه کنید به KISTSchedRunInterval). طبق پیادهسازی فعلی، KIST تنها بر روی هسته Linux نگارش 2.6.39 یا بالاتر کار خواهد کرد.
KISTLite: همانند KIST است اما بدون پشتیبانی هسته. برنامه Tor از تمامی سازوکارهای مشابه KIST، از جمله دستهبندی استفاده خواهد کرد، اما تصمیمات آن در رابطه با میزان داده ارسالی به آن خوبی نخواهد بود. زمانبند KISTLite روی تمامی هستهها و سیستمهای عامل کار خواهد کرد، و بیشتر مزایای KIST همچنان با KISTLite محقق میشوند.
Vanilla: زمانبندی که Tor پیش از پیادهسازی KIST استفاده میکرد. این زمانبند تا جای ممکن دادهها را در سریعترین زمان ممکن ارسال میکند. زمانبند Vanilla روی تمامی هستهها و سیستمهای عامل کار خواهد کرد.
KISTSchedRunInterval NUM msec
KISTSockBufSizeFactor NUM
Socks4Proxy host[:port]
Socks5Proxy host[:port]
Socks5ProxyUsername username
Socks5ProxyPassword password
SyslogIdentityTag tag
TCPProxy protocol host:port
تنها پروتکل پشتیبانیشده در حال حاضر 'haproxy' است. این گزینه فقط برای کلاینتها است. (پیشفرض: none) +
پروتکل پروکسی نگارش 1 HAProxy با جزئیات در نشانی زیر شرح داده شده است: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt +
هر دو نشانی IP مبدأ و درگاه مبدأ روی صفر تنظیم خواهند شد.
TruncateLogFile 0|1
UnixSocksGroupWritable 0|1
UseDefaultFallbackDirs 0|1
User Username
گزینههای زیر تنها برای کلاینتها سودمند هستند (یعنی اگر SocksPort، HTTPTunnelPort، TransPort، DNSPort یا NATDPort غیرصفر باشد):
AllowNonRFC953Hostnames 0|1
AutomapHostsOnResolve 0|1
AutomapHostsSuffixes SUFFIX,SUFFIX,...
Bridge [transport] IP:ORPort [fingerprint]
اگر «transport» مشخص شده باشد، باید با یک خط ClientTransportPlugin مطابقت داشته باشد. سپس به جای اتصال مستقیم به پل، از پروکسی آن ترابرد پذیرفتنی (pluggable transport) برای انتقال داده به پل استفاده میکنیم. برخی ترابردها از روش ویژهای برای تشخیص آدرس راه دور جهت اتصال استفاده میکنند. این ترابردها معمولاً «IP:ORPort» تعیینشده در خط پل را نادیده میگیرند.
هنگام اتصال به پل، Tor هرگونه تنظیم «key=val» را به عنوان آرگومانهای ویژهٔ هر اتصال به پروکسی ترابرد پذیرفتنی ارسال میکند. برای جزئیات در مورد اینکه چه آرگومانهایی پشتیبانی میشوند، مستندات ترابرد پذیرفتنی مورد نظر را مطالعه کنید.
CircuitPadding 0|1
ReducedCircuitPadding 0|1
ClientBootstrapConsensusAuthorityDownloadInitialDelay N
ClientBootstrapConsensusAuthorityOnlyDownloadInitialDelay N
ClientBootstrapConsensusFallbackDownloadInitialDelay N
ClientBootstrapConsensusMaxInProgressTries NUM
ClientDNSRejectInternalAddresses 0|1
ClientOnionAuthDir path
<onion-address>:descriptor:x25519:<base32-encoded-privkey>
بخش <onion-address> نباید دارای پسوند «.onion» باشد. مقدار <base32-encoded-privkey> فقط نمایش base32 بایتهای خام کلید است (۳۲ بایت برای x25519). برای اطلاعات بیشتر پیوست G در فایل rend-spec-v3.txt از torspec را ببینید.
ClientOnly 0|1
ClientPreferIPv6DirPort 0|1|auto
ClientPreferIPv6ORPort 0|1|auto
ClientRejectInternalAddresses 0|1
ClientUseIPv4 0|1
ClientUseIPv6 0|1
ConnectionPadding 0|1|auto
ReducedConnectionPadding 0|1
DNSPort [address:]port|auto [isolation flags]
DownloadExtraInfo 0|1
EnforceDistinctSubnets 0|1
FascistFirewall 0|1
FirewallPorts PORTS
HTTPTunnelPort [address:]port|auto [isolation flags]
LongLivedPorts PORTS
MapAddress address newaddress
نکات:.sp
MapAddress www.torproject.org 192.0.2.1 MapAddress www.torproject.org 198.51.100.1
MapAddress 198.51.100.1 203.0.113.1 MapAddress www.torproject.org 198.51.100.1
MapAddress www.torproject.org *.torproject.org.torserver.exit
MaxCircuitDirtiness NUM
MaxClientCircuitsPending NUM
NATDPort [address:]port|auto [isolation flags]
این گزینه فقط مخصوص کسانی است که امکان استفاده از TransPort را ندارند. (پیشفرض: 0)
NewCircuitPeriod NUM
PathBiasCircThreshold NUM
PathBiasDropGuards NUM
PathBiasExtremeRate NUM
PathBiasNoticeRate NUM
PathBiasWarnRate NUM
PathBiasScaleThreshold NUM
گزینه PathBiasCircThreshold کنترل میکند که پیش از انجام این بررسیها، چند مدار باید از طریق یک نگهبان ساخته شود. گزینههای PathBiasNoticeRate، PathBiasWarnRate و PathBiasExtremeRate تعیین میکنند که چه کسری از مدارها باید با موفقیت از طریق یک نگهبان ایجاد شوند تا پیامهای ثبت وقایع نوشته نشوند. اگر مدارهای موفق کمتر از PathBiasExtremeRate باشند و PathBiasDropGuards روی 1 تنظیم شده باشد، استفاده از آن نگهبان غیرفعال میشود.
هنگامی که بیش از PathBiasScaleThreshold مدار از طریق یک نگهبان دیده شد، مشاهدات با ضریب 0.5 مقیاسبندی میشوند (تحت کنترل سند توافق یا consensus) تا مشاهدات جدید تحتالشعاع دادههای قدیمی قرار نگیرند.
بهطور پیشفرض، یا در صورتی که مقداری منفی برای یکی از این گزینهها مشخص شود، Tor از مقادیر منطقی پیشفرض در سند توافق networkstatus استفاده میکند. در صورتی که پیشفرضی در آنجا در دسترس نباشد، این گزینهها بهترتیب روی 150، 0.70، 0.50، 0.30، 0 و 300 تنظیم میشوند.
PathBiasUseThreshold NUM
PathBiasNoticeUseRate NUM
PathBiasExtremeUseRate NUM
PathBiasScaleUseThreshold NUM
در حالی که پارامترهای سوگیری مسیر بر آستانههای ساخت موفقیتآمیز مدارها حاکم هستند، این چهار پارامتر سوگیری استفاده از مسیر تنها بر آستانههای مربوط به استفاده از مدار نظارت دارند. مدارهایی که جریانی از آنها عبور نکرده باشد، توسط این الگوریتم تشخیص شمرده نمیشوند. یک مدارِ استفادهشده زمانی موفق تلقی میشود که قادر به حمل جریانها بوده یا پاسخهای دارای ساختار صحیح به سلولهای RELAY دریافت نماید.
بهطور پیشفرض، یا در صورتی که مقداری منفی برای یکی از این گزینهها وارد شود، Tor از مقادیر منطقی پیشفرض در سند توافق networkstatus استفاده میکند. اگر مقادیر پیشفرضی در آن سند نباشد، این گزینهها بهترتیب روی 20، 0.80، 0.60 و 100 پیشفرض میشوند.
PathsNeededToBuildCircuits NUM
ReachableAddresses IP[/MASK][:PORT]...
ReachableORAddresses IP[/MASK][:PORT]...
تفکیک بین ReachableORAddresses و ReachableDirAddresses تنها زمانی قابلتوجه است که از طریق پروکسیها متصل میشوید (ببینید: HTTPProxy و HTTPSProxy). بیشتر پروکسیها اتصالات TLS را (که Tor برای اتصال به مسیریابهای پیازی استفاده میکند) به پورت 443 محدود میکنند، و برخی درخواستهای HTTP GET را (که Tor برای دریافت اطلاعات دایرکتوری استفاده میکند) به پورت 80 محدود میسازند.
SafeSocks 0|1
TestSocks 0|1
WarnPlaintextPorts port,port,...
RejectPlaintextPorts port,port,...
SocksPolicy policy,policy,...
SocksPort [address:]port|unix:path|auto [flags] [isolation flags]
نکته: با این که این گزینه به شما اجازه میدهد نشانی IP به غیر از localhost را مشخص کنید، اما تنها باید با احتیاط بسیار شدید این کار را انجام دهید. پروتکل SOCKS رمزنگارینشده و (همانطور که ما استفاده میکنیم) فاقد احراز هویت است، بنابراین باز گذاشتن آن به این شکل میتواند اطلاعات شما را برای هر ناظری در شبکهتان فاش کند، و به هر کسی اجازه دهد از رایانه شما به عنوان یک پروکسی باز استفاده نماید.
اگر چندین مدخل از این گزینه در فایل پیکربندی شما وجود داشته باشد، Tor بهطور پیشفرض جداسازی جریان را میان شنوندگان انجام میدهد. آرگومانهای isolation flags قوانینی را به Tor ارائه میدهند مبنی بر این که کدام جریانهای دریافت شده روی این SocksPort اجازه دارند مدارهای مشترکی با یکدیگر داشته باشند. پرچمهای جداسازی شناختهشده عبارتند از:
IsolateClientAddr
IsolateSOCKSAuth
IsolateClientProtocol
IsolateDestPort
IsolateDestAddr
KeepAliveIsolateSOCKSAuth
SessionGroup=INT
NoIPv4Traffic
IPv6Traffic
PreferIPv6
NoDNSRequest
NoOnionTraffic
OnionTrafficOnly
CacheIPv4DNS
CacheIPv6DNS
GroupWritable
WorldWritable
CacheDNS
UseIPv4Cache
UseIPv6Cache
UseDNSCache
PreferSOCKSNoAuth
ExtendedErrors
X'F0' توصیفگر سرویس پیازی یافت نشد
توصیفگر سرویس پیازیِ درخواستی در هشرینگ پیدا نمیشود و بنابراین برای کلاینت قابل دسترسی نیست. (فقط v3)
X'F1' توصیفگر سرویس پیازی نامعتبر است
توصیفگر سرویس پیازیِ درخواستی قابل تجزیه نیست یا اعتبارسنجی امضای آن با شکست مواجه شد. (فقط v3)
X'F2' معرفی سرویس پیازی ناموفق بود
تمام تلاشهای معرفی به دلیل ترکیبی از دریافت NACK از سوی نقطهٔ معرفی یا اتمام مهلت زمانی با شکست مواجه شدند. (فقط v3)
X'F3' ملاقات سرویس پیازی ناموفق بود
مهلت زمانی تمام مدارهای ملاقات به پایان رسیده و بنابراین کلاینت قادر به برقراری ملاقات با سرویس نیست. (فقط v3)
X'F4' سرویس پیازی فاقد مجوز کلاینت است
کلاینت موفق به دانلود توصیفگر سرویس پیازیِ درخواستی شد، اما چون اطلاعات مجوز کلاینت را در اختیار ندارد، قادر به رمزگشایی محتوای آن نیست. (فقط v3)
X'F5' مجوز کلاینت سرویس پیازی نادرست است
کلاینت موفق به دانلود توصیفگر سرویس پیازیِ درخواستی شد، اما نمیتواند با اطلاعات مجوزی که دارد محتوای آن را رمزگشایی کند. این بدان معناست که دسترسی کلاینت لغو شده است. (فقط v3)
X'F6' نشانی سرویس پیازی نامعتبر است
نشانی .onion دادهشده نامعتبر است. در یکی از این موارد این خطا بازگردانده میشود: چکسام نشانی مطابقت ندارد، کلید عمومی ed25519 نامعتبر است، یا کدگذاری نامعتبر است. (فقط v3)
X'F7' مهلت زمانی معرفی سرویس پیازی به پایان رسید
مشابه کد X'F2' است، اما در این حالت، تمام تلاشهای معرفی به دلیل اتمام مهلت زمانی با شکست مواجه شدهاند. (فقط v3)
TokenBucketRefillInterval NUM [msec|second]
TrackHostExits host,.domain,...
TrackHostExitsExpire NUM
TransPort [address:]port|auto [isolation flags]
دستور TransPort نیازمند پشتیبانی سیستمعامل از پروکسیهای شفاف است، مانند pf در BSDها یا IPTables در Linux. اگر قصد دارید از Tor به عنوان یک پروکسی شفاف برای یک شبکه استفاده کنید، مایل خواهید بود VirtualAddrNetwork را بررسی کرده و از تنظیمات پیشفرض تغییر دهید. (پیشفرض: 0)
TransProxyType default|TPROXY|ipfw|pf-divert
اگر مایلید بتوانید از ماژول TPROXY لینوکس برای پروکسی کردن شفاف اتصالاتی که با استفاده از گزینهٔ TransPort پیکربندی شدهاند استفاده کنید، این را روی "TPROXY" قرار دهید. اطلاعات دقیق دربارهٔ نحوهٔ پیکربندی ویژگی TPROXY را میتوانید در درخت منابع هسته لینوکس در فایل Documentation/networking/tproxy.txt بیابید.
این گزینه را روی "ipfw" تنظیم کنید تا از رابط ipfw در FreeBSD استفاده شود.
در سیستمعاملهای *BSD هنگام استفاده از pf، این را روی "pf-divert" تنظیم کنید تا از قواعد divert-to بهرهمند شوید، که مانند قواعد rdr-to بستهها را دستکاری نمیکنند. اطلاعات دقیق دربارهٔ نحوهٔ پیکربندی pf برای استفاده از قواعد divert-to را میتوان در صفحه راهنمای pf.conf(5) یافت. در OpenBSD، قاعدهٔ divert-to در نسخههای بزرگتر یا مساوی OpenBSD 4.4 برای استفاده در دسترس است.
این را روی "default" تنظیم کنید، یا آن را پیکربندینشده رها کنید، تا از IPTables معمولی در Linux، یا قواعد rdr-to مربوط به pf در سیستمهای *BSD استفاده شود.
(پیشفرض: "default")
UpdateBridgesFromAuthority 0|1
UseBridges 0|1
UseEntryGuards 0|1
UseGuardFraction 0|1|auto
GuardLifetime N days|weeks|months
NumDirectoryGuards NUM
NumEntryGuards NUM
NumPrimaryGuards NUM
VanguardsLiteEnabled 0|1|auto
UseMicrodescriptors 0|1|auto
VirtualAddrNetworkIPv4 IPv4Address/bits
VirtualAddrNetworkIPv6 [IPv6Address]/bits
هنگام ارائهٔ خدمات کارگذار پروکسی به شبکهای از رایانهها با استفاده از ابزاری مانند dns-proxy-tor، شبکه IPv4 را به "10.192.0.0/10" یا "172.16.0.0/12" تغییر دهید و شبکه IPv6 را به "[FC00::]/7" تغییر دهید. محدودههای آدرس پیشفرض VirtualAddrNetwork روی یک ماشین با پیکربندی مناسب به رابط loopback یا link-local هدایت (route) میشوند. حداکثر تعداد بیتها برای پیشوند شبکه برای IPv6 برابر با ۱۰۴ و برای IPv4 برابر با ۱۶ تنظیم شده است. با این حال، یک شبکهٔ بزرگتر (یعنی شبکهای با طول پیشوند کوچکتر) ترجیح داده میشود، زیرا شانس یک مهاجم را برای حدس زدن IP استفادهشده کاهش میدهد. برای استفادهٔ محلی، نیازی به تغییر در تنظیمات پیشفرض VirtualAddrNetwork نیست.
گزینههای زیر برای پیکربندی مهلتهای زمانی مربوط به ساخت مدارهای Tor و استفاده از آنها مفید هستند:
CircuitsAvailableTimeout NUM
LearnCircuitBuildTimeout 0|1
CircuitBuildTimeout NUM
CircuitStreamTimeout NUM
SocksTimeout NUM
گزینههای حالت خفته (DORMANT MODE OPTIONS)
برای صرفهجویی در مصرف انرژی و پهنای باند شبکه، Tor میتواند وارد حالت خفته (dormant mode) شود. گزینههای زیر زمان ورود و خروج Tor از حالت خفته را کنترل میکنند:
DormantCanceledByStartup 0|1
نکته: بستهبندها و توسعهدهندگان برنامهها باید تنها با احتیاط بسیار زیاد مقدار این گزینه را تغییر دهند؛ چرا که این گزینه پتانسیل ایجاد ترافیک کاذب در شبکه را دارد. از این گزینه تنها باید در صورتی استفاده شود که Tor با اقدام مستقیم و آگاهانه کاربر شروع شده باشد (مانند کلیک روی یک برنامه یا اجرای یک دستور)، نه زمانی که Tor به دلایل دیگری اجرا میشود (برای مثال توسط یک فرایند راهاندازی سیستم، یا توسط برنامهای که در هر بار ورود به سیستم بهطور خودکار اجرا میشود).
DormantClientTimeout N minutes|hours|days|weeks
DormantOnFirstStartup 0|1
پس از نخستین راهاندازی Tor، اگر قبلاً در حالت خفته بوده باشد در حالت خفته آغاز به کار میکند و در غیر این صورت خیر. (پیشفرض: 0)
DormantTimeoutDisabledByIdleStreams 0|1
DormantTimeoutEnabled 0|1
گزینههای انتخاب گره (NODE SELECTION OPTIONS)
گزینههای زیر گرههایی را که یک کلاینت tor (یا سرویس onion) میتواند هنگام ساخت مدار استفاده کند محدود میکنند. این گزینهها میتوانند با متفاوت ساختن رفتار کلاینت شما از سایر کلاینتهای Tor، گمنامی شما را تضعیف کنند:
EntryNodes node,node,...
این گزینه میتواند چندین بار تکرار شود: مقادیر خطوط مختلف به هم متصل میشوند.
گزینه ExcludeNodes این گزینه را لغو میکند: با هر گرهای که هم در EntryNodes و هم در ExcludeNodes فهرست شده باشد، بهعنوان مستثنیشده رفتار میشود. برای اطلاعات بیشتر در مورد چگونگی تعیین گرهها، ExcludeNodes را ببینید.
ExcludeNodes node,node,...
این گزینه میتواند چندین بار تکرار شود: مقادیر خطوط مختلف به هم متصل میشوند.
بهطور پیشفرض، با این گزینه مانند یک اولویت برخورد میشود که Tor مجاز است برای ادامه کارکرد خود آن را نادیده بگیرد. به عنوان مثال، اگر تلاش کنید به یک سرویس مخفی متصل شوید، اما تمام نقاط معرفی (introduction points) آن سرویس مخفی را مستثنی کرده باشید، Tor در هر صورت به یکی از آنها متصل خواهد شد. اگر چنین رفتاری را نمیخواهید، گزینه StrictNodes (توضیحدادهشده در زیر) را تنظیم کنید.
همچنین توجه داشته باشید که اگر یک رله هستید، این گزینه (و سایر گزینههای انتخاب گره در زیر) تنها بر مدارهای خود شما که Tor برایتان میسازد تأثیر میگذارد. کلاینتها همچنان میتوانند از طریق شما به هر گرهای مدار بسازند. کنترلکنندهها (Controllers) میتوانند به Tor دستور دهند که از طریق هر گرهای مدار بسازد.
کدهای کشوری به بزرگی و کوچکی حروف حساس نیستند. کد «{??}» به گرههایی اشاره دارد که کشور آنها قابل شناسایی نیست. اگر هیچ GeoIPFile قابل بارگیری نباشد، هیچ کد کشوری، از جمله {??}، کار نخواهد کرد. همچنین گزینه GeoIPExcludeUnknown در زیر را ببینید.
ExcludeExitNodes node,node,...
این گزینه میتواند چندین بار تکرار شود: مقادیر خطوط مختلف به هم متصل میشوند.
ExitNodes node,node,...
این گزینه میتواند چندین بار تکرار شود: مقادیر خطوط مختلف به هم متصل میشوند.
توجه داشته باشید که اگر گرههای بسیار کمی را در اینجا فهرست کنید، یا اگر با ExcludeExitNodes گرههای خروجی بسیار زیادی را مستثنی کنید، کارایی کاهش مییابد. به عنوان مثال، اگر هیچیک از گرههای خروجی فهرستشده توسط شما اجازه عبور ترافیک روی درگاه 80 یا 443 را ندهد، قادر به مرور وب نخواهید بود.
همچنین توجه داشته باشید که هر مداری برای تحویل ترافیک به خارج از شبکه Tor استفاده نمیشود. دیدن مدارهای غیرخروجی (مانند مدارهایی که برای اتصال به سرویسهای مخفی استفاده میشوند، آنهایی که دریافت دایرکتوری را انجام میدهند، آنهایی که برای خودآزمایی دسترسپذیری رله به کار میروند، و غیره) که در یک گره غیرخروجی خاتمه مییابند امری طبیعی است. برای جلوگیری کامل از استفاده از یک گره، ExcludeNodes و StrictNodes را ببینید.
گزینه ExcludeNodes این گزینه را لغو میکند: با هر گرهای که هم در ExitNodes و هم در ExcludeNodes فهرست شده باشد، بهعنوان مستثنیشده رفتار میشود.
قالب آدرسدهی exit.، در صورت فعال بودن از طریق MapAddress، این گزینه را لغو میکند.
GeoIPExcludeUnknown 0|1|auto
HSLayer2Nodes node,node,...
(مثال: HSLayer2Nodes ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234, {cc}, 255.254.0.0/8)
این گزینه میتواند چندین بار تکرار شود: مقادیر خطوط مختلف به هم متصل میشوند.
هنگامی که این گزینه تنظیم شود، مسیرهای سرویس مخفی حاصل شبیه به این خواهند بود:
C - G - L2 - M - Rend
C - G - L2 - M - HSDir
C - G - L2 - M - Intro
S - G - L2 - M - Rend
S - G - L2 - M - HSDir
S - G - L2 - M - Intro
که در آن C این کلاینت، S سرویس، G گره Guard، L2 گرهای از این گزینه، و M یک گره میانی تصادفی است. انتخاب نقاط Rend، HSDir و Intro تحت تأثیر این گزینه قرار نمیگیرد.
این گزینه ممکن است با HSLayer3Nodes ترکیب شود تا مسیرهایی به شکل زیر ایجاد کند:
C - G - L2 - L3 - Rend
C - G - L2 - L3 - M - HSDir
C - G - L2 - L3 - M - Intro
S - G - L2 - L3 - M - Rend
S - G - L2 - L3 - HSDir
S - G - L2 - L3 - Intro
گزینه ExcludeNodes اولویت بالاتری نسبت به HSLayer2Nodes دارد، به این معنی که گرههای مشخصشده در ExcludeNodes انتخاب نخواهند شد.
هنگامی که این گزینه یا HSLayer3Nodes تنظیم شوند، محدودیتهای زیرشبکه /16 و خانواده گرهها برای مدارهای سرویس مخفی برداشته میشوند. علاوه بر این، اجازه داده میشود که گره guard به عنوان گره Rend، HSDir و IP و همچنین به عنوان جهش قبل از آن حضور داشته باشد. این کار برای جلوگیری از استنتاج اطلاعات توسط مهاجم درباره انتخابهای گرههای guard، layer2 و layer3 ما در نقاط بعدی مسیر انجام میشود.
این گزینه قرار است توسط یک کنترلکننده Tor مانند https://github.com/mikeperry-tor/vanguards مدیریت شود که این مجموعه از گرهها را برای شما انتخاب و بهروزرسانی میکند. از این رو اگر کمتر از 20 گره انتخاب شده باشد، توازن بار (load balancing) انجام نمیدهد، و اگر هیچ گرهای در HSLayer2Nodes در حال حاضر برای استفاده در دسترس نباشد، Tor کار نخواهد کرد. لطفاً اگر این گزینه را به صورت دستی تنظیم میکنید، نهایت احتیاط را به خرج دهید. HSLayer3Nodes node,node,...
(مثال: HSLayer3Nodes ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234, {cc}, 255.254.0.0/8)
این گزینه میتواند چندین بار تکرار شود: مقادیر سطرهای مختلف به هم متصل میشوند.
هنگامی که این گزینه به تنهایی تنظیم شود، مسیرهای سرویس مخفی حاصل به صورت زیر خواهند بود:
C - G - M - L3 - Rend
C - G - M - L3 - M - HSDir
C - G - M - L3 - M - Intro
S - G - M - L3 - M - Rend
S - G - M - L3 - HSDir
S - G - M - L3 - Intro
که در آن C این کلاینت، S سرویس، G گره Guard، L2 گرهای از این گزینه، و M یک گره میانی تصادفی است. انتخاب نقاط Rend، HSDir و Intro تحت تأثیر این گزینه قرار نمیگیرد.
اگرچه استفاده از این گزینه به تنهایی امکانپذیر است، اما برای ایجاد مسیرهایی به فرم زیر باید با HSLayer2Nodes ترکیب شود:
C - G - L2 - L3 - Rend
C - G - L2 - L3 - M - HSDir
C - G - L2 - L3 - M - Intro
S - G - L2 - L3 - M - Rend
S - G - L2 - L3 - HSDir
S - G - L2 - L3 - Intro
گزینه ExcludeNodes اولویت بالاتری نسبت به HSLayer3Nodes دارد، بدان معنا که گرههای مشخصشده در ExcludeNodes انتخاب نخواهند شد.
هنگامی که این گزینه یا HSLayer2Nodes تنظیم شوند، محدودیتهای زیرشبکه /16 و خانواده گره (node family) برای مدارهای سرویس مخفی برداشته میشوند. علاوه بر این، ما اجازه میدهیم گره گارد به عنوان گره Rend، HSDir و IP، و همچنین به عنوان گام قبل از آن حضور داشته باشد. این کار برای جلوگیری از استنباط اطلاعات درباره انتخابهای گرههای guard، layer2 و layer3 توسط مهاجم در نقاط بعدی مسیر انجام میشود.
این گزینه برای مدیریت شدن توسط یک کنترلکننده Tor مانند https://github.com/mikeperry-tor/vanguards در نظر گرفته شده است که این مجموعه از گرهها را برای شما انتخاب و بهروزرسانی میکند. از این رو در صورتی که کمتر از ۲۰ گره انتخاب شده باشد، تعادل بار (load balancing) انجام نمیشود، و اگر هیچ گرهای در HSLayer3Nodes در حال حاضر برای استفاده در دسترس نباشد، Tor کار نخواهد کرد. لطفاً اگر این گزینه را به صورت دستی تنظیم میکنید، نهایت احتیاط را به عمل آورید.
MiddleNodes node,node,...
این گزینه میتواند چندین بار تکرار شود: مقادیر سطرهای مختلف به هم متصل میشوند.
این یک ویژگی آزمایشی است که برای استفاده پژوهشگران و توسعهدهندگان جهت آزمایش ایمن قابلیتهای جدید در شبکه Tor در نظر گرفته شده است. استفاده بدون دقت از آن به شدت بر گمنامی شما تأثیر میگذارد. ممکن است سایر قابلیتهای tor با MiddleNodes کار نکنند. این ویژگی ممکن است در آینده حذف شود.
گزینههای HSLayer2Node و HSLayer3Node در صورت تنظیم شدن، این گزینه را برای مدارهای onion service نادیده میگیرند (override میکنند). افزونه vanguards این گزینه را میخواند، و در صورت تنظیم، HSLayer2Nodes و HSLayer3Nodes را روی گرههایی از این مجموعه قرار میدهد.
گزینه ExcludeNodes این گزینه را لغو (override) میکند: هر گرهای که هم در MiddleNodes و هم در ExcludeNodes فهرست شده باشد به عنوان مستثنیشده در نظر گرفته میشود. برای اطلاعات بیشتر در مورد نحوه مشخص کردن گرهها به <<ExcludeNodes,ExcludeNodes>> مراجعه کنید.
NodeFamily node,node,...
StrictNodes 0|1
گزینههای زیر فقط برای سرورها (یعنی در صورتی که ORPort غیر صفر باشد) کاربرد دارند:
AccountingMax N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
توجه داشته باشید که (همانطور که در بخش Bandwidth نیز توضیح داده شده است) Tor از توانهای دو استفاده میکند، نه توانهای ده: 1 GByte برابر با 1024*1024*1024 است، نه یک میلیارد. دقت کنید: ممکن است برخی از ارائهدهندگان خدمات اینترنتی (ISP) گیگابایتها را بهطور متفاوتی محاسبه کنند.
AccountingRule sum|max|in|out
AccountingStart day|week|month [day] HH:MM
Address address
AddressDisableIPv6 0|1
AssumeReachable 0|1
AssumeReachableIPv6 0|1|auto
BridgeRelay 0|1
نکته: مطمئن شوید هنگامی که بازپخش در حالت پل پیکربندی شده است، هیچ خط MyFamily در فایل torrc شما وجود نداشته باشد.
BridgeDistribution string
ContactInfo email_address
اگر بیش از یک بازپخش یا پل را اجرا میکنید، ContactInfo باید روی یک نشانی فعال تنظیم شود. (در واقع، هر کسی که یک بازپخش یا پل را اجرا میکند باید آن را تنظیم کند.)
DisableOOSCheck 0|1
ExitPolicy policy,policy,...
بهعنوان مثال، "accept 18.7.22.69:*,reject 18.0.0.0/8:*,accept *:*" هر ترافیک IPv4 به مقصد MIT را بهجز web.mit.edu رد میکند، و هر ترافیک دیگر IPv4 یا IPv6 را میپذیرد.
همچنین Tor ورودیهای سیاست خروج IPv6 را مجاز میداند. برای نمونه، "reject6 [FC00::]/7:*" تمامی مقاصدی را که در پیشوند ۷ بیت باارزشتر با نشانی FC00:: مشترک هستند رد میکند. بهطور مشابه، "accept6 [C000::]/3:*" تمامی مقاصدی را که در پیشوند ۳ بیت باارزشتر با نشانی C000:: مشترک هستند میپذیرد.
دستورهای accept6 و reject6 تنها ورودیهای سیاست خروج IPv6 را تولید میکنند. استفاده از نشانی IPv4 با accept6 یا reject6 نادیده گرفته شده و یک هشدار ایجاد میکند. دستور accept/reject اجازه استفاده از هر یک از نشانیهای IPv4 یا IPv6 را میدهد. از *4 بهعنوان نویسه عام (wildcard) نشانی IPv4 و از *6 بهعنوان نویسه عام نشانی IPv6 استفاده کنید. عبارت accept/reject * به تطابق با قواعد نویسه عام نشانیهای IPv4 و IPv6 گسترش مییابد.
برای مشخص کردن تمامی شبکههای داخلی و پیوند-محلی (link-local) مربوط به IPv4 و IPv6 (شامل 0.0.0.0/8، 169.254.0.0/16، 127.0.0.0/8، 192.168.0.0/16، 10.0.0.0/8، 172.16.0.0/12، [::]/8، [FC00::]/7، [FE80::]/10، [FEC0::]/10، [FF00::]/8، و [::]/127)، میتوانید بهجای یک نشانی از نام مستعار "private" استفاده کنید. ("private" همیشه قواعدی را برای نشانیهای IPv4 و IPv6 ایجاد میکند، حتی زمانی که همراه با accept6/reject6 استفاده شود.)
نشانیهای خصوصی بهطور پیشفرض (در ابتدای سیاست خروج شما)، به همراه هر نشانی عمومی اصلی پیکربندیشده IPv4 و IPv6 رد میشوند. این نشانیهای خصوصی رد میشوند مگر اینکه گزینه پیکربندی ExitPolicyRejectPrivate را روی 0 تنظیم کنید. برای مثال، پس از انجام این کار، میتوانید با دستور "accept 127.0.0.1:80,reject private:*" اتصال HTTP به 127.0.0.1 را مجاز دانسته و تمام اتصالات دیگر به شبکههای داخلی را مسدود کنید، گرچه ممکن است این کار اتصالات به رایانه خودتان را که به نشانی IP عمومی (خارجی) آن ارسال شدهاند نیز مجاز بگذارد. برای جزئیات بیشتر درباره فضای نشانی IP داخلی و رزروشده، به RFC 1918 و RFC 3330 مراجعه کنید. اگر میخواهید هر نشانی روی بازپخش را مسدود کنید، حتی آنهایی که در توصیفگر اعلان نشدهاند، به ExitPolicyRejectLocalInterfaces نگاه کنید.
این دستورالعمل را میتوان چندین بار مشخص کرد تا مجبور نباشید همه آن را در یک خط بنویسید.
سیاستها از ابتدا تا انتها بررسی میشوند و نخستین تطابق اعمال میگردد. اگر میخواهید درگاههای یکسانی را در IPv4 و IPv6 مجاز کنید، قواعد خود را با استفاده از accept/reject * بنویسید. اگر میخواهید درگاههای متفاوتی را در IPv4 و IPv6 مجاز کنید، قواعد IPv6 خود را با استفاده از accept6/reject6 *6 و قواعد IPv4 خود را با استفاده از accept/reject *4 بنویسید. اگر میخواهید سیاست خروج پیشفرض را _جایگزین_ کنید، سیاست خروج خود را با reject *:* یا accept *:* پایان دهید. در غیر این صورت، شما در حال _توسعه_ (پیشوند کردن به) سیاست خروج پیشفرض هستید.
اگر میخواهید بهجای سیاست خروج پیشفرض از یک سیاست خروج تقلیلیافته استفاده کنید، "ReducedExitPolicy 1" را تنظیم کنید. اگر میخواهید سیاست خروج پیشفرض را با سیاست خروج سفارشی خود جایگزین کنید، سیاست خروج خود را با reject : یا accept : پایان دهید. در غیر این صورت، شما در حال افزودن به (پیشوند کردن به) سیاست خروج پیشفرض یا تقلیلیافته هستید.
سیاست خروج پیشفرض عبارت است از:
reject *:25 reject *:119 reject *:135-139 reject *:445 reject *:563 reject *:1214 reject *:4661-4666 reject *:6346-6429 reject *:6699 reject *:6881-6999 accept *:*
ExitPolicyRejectLocalInterfaces 0|1
ExitPolicyRejectPrivate 0|1
ExitRelay 0|1|auto
اگر ExitRelay روی 0 تنظیم شود، هیچ ترافیکی اجازه خروج نخواهد داشت، و گزینههای ExitPolicy، ReducedExitPolicy و IPv6Exit نادیده گرفته میشوند.
اگر ExitRelay روی "auto" تنظیم شود، Tor گزینههای ExitPolicy، ReducedExitPolicy و IPv6Exit را بررسی میکند. اگر حداقل یکی از این گزینهها تنظیم شده باشد، Tor طوری عمل میکند که گویی ExitRelay روی 1 تنظیم شده است. اگر هیچیک از این گزینههای سیاست خروج تنظیم نشده باشند، Tor طوری عمل میکند که گویی ExitRelay روی 0 تنظیم شده است. (پیشفرض: auto) ReevaluateExitPolicy 0|1
هنگامی که سیاست خروج یک گره خروجی در حین بارگذاری مجدد پیکربندی تغییر میکند، اتصالاتی که پیش از این تغییر برقرار شدهاند ممکن است خطمشی جدید را نقض کنند. با تنظیم این گزینه روی 1، Tor بررسی میکند که آیا چنین اتصالاتی وجود دارند یا خیر، و آنها را برای پایان دادن علامتگذاری میکند. (پیشفرض: 0)
ExtendAllowPrivateAddresses 0|1
GeoIPFile filename
GeoIPv6File filename
HeartbeatPeriod N minutes|hours|days|weeks
IPv6Exit 0|1
KeyDirectory DIR
KeyDirectoryGroupReadable 0|1|auto
MainloopStats 0|1
MaxHSDirCacheBytes N bytes|KBytes|MBytes|GBytes
این هرس کردن قبلاً به عنوان بخشی از MaxMemInQueues انجام میشد، اما برای فراهم آوردن امکان کنترل دقیقتر بر اندازهٔ حافظهٔ موقت توصیفکنندهها تحت شرایط حملات DDoS تفکیک شده است.
MaxMemInQueues N bytes|KBytes|MBytes|GBytes
MaxOnionQueueDelay NUM [msec|second]
MyFamily fingerprint,fingerprint,...
اگر بیش از یک رله را اجرا میکنید، گزینهٔ MyFamily روی هر رله باید تمام رلههای دیگر را همانگونه که در بالا تشریح شد فهرست کند.
نکته: هنگام پیکربندی نمونهٔ Tor خود به عنوان یک پل، از MyFamily استفاده نکنید.
FamilyId ident
در آینده، این روش شیوهٔ ترجیحی برای اعلام عضویت خانواده توسط رلهها خواهد بود. اما در حال حاضر، خانوادههای رله باید هم این گزینه و هم MyFamily را پیکربندی کنند تا کلاینتهای قدیمیتر همچنان بتوانند عضویت خانوادگی رلهها را تشخیص دهند.
(توجه داشته باشید که اگر قابلیت Sandbox مبتنی بر seccomp2 فعال باشد، تغییر نام فایلهای کلید در حین اجرای Tor امکانپذیر نیست.)
FamilyId *
FamilyKeyDirectory directory: دایرکتوری مورد استفاده به جای دایرکتوری کلیدها را هنگام جستجو برای کلیدهای شناسهٔ خانواده پیکربندی میکند.
Nickname name
NumCPUs num
OfflineMasterKey 0|1
ORPort [address:]PORT|auto [flags]
سامانهٔ Tor این پرچمها را روی هر ORPort به رسمیت میشناسد:
NoAdvertise
NoListen
IPv4Only
IPv6Only
PublishServerDescriptor 0|1|v3|bridge,...
اگر این گزینه روی 0 تنظیم شود، Tor توصیفکنندههای خود را در هیچ دایرکتوریای منتشر نخواهد کرد. (این مورد زمانی که در حال آزمایش کارساز خود هستید، یا از یک کنترلکنندهٔ Tor استفاده میکنید که انتشار در دایرکتوری را به جای شما مدیریت میکند، مفید است.) در غیر این صورت، Tor توصیفکنندههای خود را از تمام انواع مشخصشده منتشر میکند. مقدار پیشفرض "1" است، که به این معناست: "اگر به عنوان یک رله یا پل در حال اجرا هستید، توصیفکنندهها را در مراجع ذیصلاح مربوطه منتشر کنید". سایر مقادیر ممکن "v3" است که به معنای "طوری منتشر کن که گویی یک رله هستید" میباشد، و "bridge" که به معنای "طوری منتشر کن که گویی یک پل هستید" است.
ReducedExitPolicy 0|1
سیاست خروج کاهشیافته جایگزینی برای سیاست خروج پیشفرض است. این سیاست تا حد امکان به سرویسهای اینترنتی اجازهٔ دسترسی میدهد، در حالی که همچنان اکثریت درگاههای TCP را مسدود نگه میدارد. در حال حاضر، این سیاست به حدود ۶۵ درگاه اجازهٔ فعالیت میدهد. این امر احتمال استفاده از گره شما برای برنامههای همتابههمتا (peer-to-peer) را کاهش میدهد.
سیاست خروج کاهشیافته به صورت زیر است:
(پیشفرض: 0)
RefuseUnknownExits 0|1|auto
ServerDNSAllowBrokenConfig 0|1
ServerDNSAllowNonRFC953Hostnames 0|1
ServerDNSDetectHijacking 0|1
ServerDNSRandomizeCase 0|1
ServerDNSResolvConfFile filename
ServerDNSSearchDomains 0|1
ServerDNSTestAddresses hostname,hostname,...
ServerTransportListenAddr transport IP:PORT
ServerTransportOptions transport k=v k=v ...
(مثال: ServerTransportOptions obfs45 shared-secret=bridgepasswd cache=/var/lib/tor/cache) (پیشفرض: none)
ServerTransportPlugin transport exec path-to-binary [options]
ShutdownWaitLength NUM
SigningKeyLifetime N days|weeks|months
SSLKeyLifetime N minutes|hours|days|weeks
بازپخشها بیشتر آمارها را در سندی به نام سند extra-info منتشر میکنند. گزینههای زیر بر انواع مختلف آمارهایی که بازپخشهای Tor جمعآوری و منتشر میکنند تأثیر میگذارند:
BridgeRecordUsageByCountry 0|1
CellStatistics 0|1
ConnDirectionStatistics 0|1
DirReqStatistics 0|1
EntryStatistics 0|1
ExitPortStatistics 0|1
ExtraInfoStatistics 0|1
HiddenServiceStatistics 0|1
OverloadStatistics 0|1*
یک بازپخش در صورتی دارای بار بیش از حد در نظر گرفته میشود که دستکم یکی از این شرایط برقرار باشد:
+
اگر ExtraInfoStatistics فعال باشد، در صورتی که دستکم یکی از این
شرایط برقرار باشد، میتواند دو خط اضافهبار دقیقتر را نیز در سند
extra-info قرار دهد:
- محدودیتهای نرخ اتصال (سمت خواندن و نوشتن) برقرار شده باشند.
- توصیفکنندههای پرونده تمام شده باشند.
PaddingStatistics 0|1
گزینههای زیر فقط برای سرورهای دایرکتوری مفید هستند. (رلههای با پهنای باند کافی بهطور خودکار به سرور دایرکتوری تبدیل میشوند؛ برای جزئیات DirCache را ببینید.)
DirCache 0|1
DirPolicy policy,policy,...
DirPort [address:]PORT|auto [flags]
همان پرچمهایی که توسط ORPort پشتیبانی میشوند، در اینجا نیز معتبر هستند. این پورت تنها میتواند IPv4 باشد.
از Tor 0.4.6.1-alpha به بعد، رلههای غیرمرجع (AuthoritativeDirectory را ببینید) DirPort را منتشر نخواهند کرد اما همچنان به آن گوش میدهند. کلاینتها از DirPortها روی رلهها استفاده نمیکنند، بنابراین میتوانید با خیال راحت DirPort را از پیکربندی torrc خود حذف کنید.
DirPortFrontPage FILENAME
MaxConsensusAgeForDiffs N minutes|hours|days|weeks
گزینههای کاهش انکار سرویس (DENIAL OF SERVICE MITIGATION OPTIONS)
برنامه Tor دارای مجموعهای از گزینههای توکار کاهش اثرات انکار سرویس (DoS) است که میتوان آنها را بهصورت جداگانه فعال/غیرفعال و تنظیم دقیق کرد، اما بهطور پیشفرض مراجع دایرکتوری Tor مقادیر معقولی را برای شبکه تعریف میکنند و برای بهرهمندی از این محافظتها نیازی به پیکربندی صریح نیست.
در ادامه مجموعهای از گزینههای پیکربندی رلهها و سپس گزینههای onion services و نحوه کار آنها آمده است.
این تمهیدات کاهشی در رلهها صورت میگیرند و به شرح زیر هستند:
این دفاعها را میتوان بهصورت دستی با گزینههای torrc کنترل کرد، اما رلهها همچنین از پارامترهای اجماع با همین نامها راهنمایی میگیرند، بنابراین نیازی به پیکربندی دستی هیچچیز نیست. در صورت تردید، این مقادیر را تغییر ندهید.
مقادیر تعیینشده توسط اجماع، در صورت وجود، در اینجا یافت میشوند: https://consensus-health.torproject.org/#consensusparams
اگر هر یک از تمهیدات کاهش DoS فعال شده باشد، پیامی دورهای (heartbeat) در گزارش شما در سطح NOTICE ظاهر میشود که شبیه به این خواهد بود:
DoS mitigation since startup: 429042 circuits rejected, 17 marked addresses. 2238 connections closed. 8052 single hop clients refused.
گزینههای زیر فقط برای یک رله عمومی مفید هستند. آنها زیرسیستم کاهش اثرات انکار سرویس توصیفشده در بالا را کنترل میکنند.
DoSCircuitCreationEnabled 0|1|auto
DoSCircuitCreationBurst NUM
DoSCircuitCreationDefenseTimePeriod N seconds|minutes|hours
DoSCircuitCreationDefenseType NUM
1: بدون دفاع.
2: رد ایجاد مدار برای بازه زمانی DoSCircuitCreationDefenseTimePeriod.
مقدار "0" به معنای استفاده از پارامتر اجماع است. اگر در اجماع تعریف نشده باشد، مقدار 2 خواهد بود. (پیشفرض: 0)
DoSCircuitCreationMinConnections NUM
DoSCircuitCreationRate NUM
DoSConnectionEnabled 0|1|auto
DoSConnectionDefenseType NUM
1: بدون دفاع.
2: بستن فوری اتصالات جدید.
مقدار "0" به معنای استفاده از پارامتر اجماع است. اگر در اجماع تعریف نشده باشد، مقدار 2 خواهد بود. (پیشفرض: 0)
DoSConnectionMaxConcurrentCount NUM
DoSConnectionConnectRate NUM
DoSConnectionConnectBurst NUM
DoSConnectionConnectDefenseTimePeriod N seconds|minutes|hours
DoSRefuseSingleHopClientRendezvous 0|1|auto
DoSStreamCreationEnabled 0|1|auto
DoSStreamCreationDefenseType NUM
1: بدون دفاع.
2: رد کردن جریان یا درخواست تحلیل نام (resolve).
3: بستن مداری که جریانهای بسیار زیادی ایجاد میکند.
مقدار "0" به معنای استفاده از پارامتر اجماع است. در صورت عدم تعریف در اجماع، مقدار آن 2 خواهد بود. (پیشفرض: 0)
DoSStreamCreationRate NUM
DoSStreamCreationBurst NUM
برای سرویسهای پیازی (onion services)، راهکارهای مقابله در حال توسعه هستند و گزینههای متعددی هماکنون در دسترس قرار دارند.
دفاع نقطهٔ معارفه (introduction point defense) یک محدودیت نرخ بر تعداد درخواستهای معارفهای است که توسط هر یک از مسیریابهای نقطهٔ معارفهٔ درستکار به سرویس هدایت میشوند. این سازوکار میتواند از رسیدن برخی انواع سیلابهای ترافیکی سنگین به سرویس جلوگیری کند، اما مانع از برقراری اتصالات جدید توسط کلاینتهای مجاز نیز خواهد شد.
گزینههای زیر برای هر سرویس پیازی مجزا هستند:
HiddenServiceEnableIntroDoSDefense 0|1
نقطهٔ معارفه از پارامترهای اجماع پیروی میکند، مگر اینکه گردانندهٔ سرویس به طور خاص آن را با این گزینه تنظیم کرده باشد. سرویس هرگز پارامترهای اجماع را برای فعال یا غیرفعال کردن این دفاع بررسی نمیکند. (پیشفرض: 0)
HiddenServiceEnableIntroDoSBurstPerSec NUM
HiddenServiceEnableIntroDoSRatePerSec NUM
نرخ (rate) حداکثر تعداد کلاینتهایی است که یک سرویس از نقاط معارفهٔ خود میخواهد در هر ثانیه مجاز بدانند. و جهش (burst) پارامتری است که اجازهٔ عبور همین تعداد را در طول یک ثانیه میدهد.
برای مثال، مقادیر پیشفرضِ به ترتیب 25 و 200 به این معنی است که برای هر نقطهٔ معارفهای که سرویس دارد (پیشفرض 3 است اما با HiddenServiceNumIntroductionPoints قابل پیکربندی است)، به 25 کلاینت در ثانیه اجازه داده میشود به سرویس دسترسی یابند و حداکثر 200 مورد در عرض 1 ثانیه به عنوان جهش (burst) مجاز است. این بدان معناست که اگر 200 کلاینت در عرض 1 ثانیه مشاهده شوند، با توجه به نرخ 25 در ثانیه، 8 ثانیه (200/25) طول خواهد کشید تا کلاینت دیگری بتواند اجازهٔ معارفه پیدا کند.
این مقدار ممکن است برای مورد کاربرد شما زیاد باشد یا نباشد؛ تنظیم دقیق این مقادیر دشوار است و احتمالاً برای هر گردانندهٔ سرویس متفاوت خواهد بود.
چرا این سازوکار به دسترسپذیری سرویس کمکی نمیکند؟ زیرا دفاعها در نقطهٔ معارفه مستقر هستند و مهاجم میتواند بهسادگی تمامی نقاط معارفه را اشباع کرده و به دلیل عدم توانایی عبور کلاینتها، سرویس را از دسترس خارج سازد. با این حال، خود سرویس با اتصالات بیش از حد بارگذاری نمیشود و به آن اجازه میدهد برای معدود کلاینتهایی که موفق به عبور شدهاند یا هر سرویس دیگری که روی همان نمونهٔ tor اجرا میشود، به درستی کار کند.
نکتهٔ اساسی این است که این راهکار با جلوگیری از غرق کردن شبکه توسط یک سرویس پیازی با مدارهای ملاقات (rendezvous circuits) جدید، از شبکه محافظت کرده و بار آن را کاهش میدهد.
یک راهکار ثانویه نیز در دسترس است که مبتنی بر ارسال اولویتبندیشدهٔ مدارهای ملاقات برای اتصالات جدید است. صف بر اساس میزان تلاشی که کلاینت برای محاسبهٔ یک تابع اثبات کار (proof-of-work) صرف میکند مرتب میشود.
گزینههای زیر برای هر سرویس پیازی مجزا هستند:
HiddenServicePoWDefensesEnabled 0|1
HiddenServicePoWQueueRate NUM
HiddenServicePoWQueueBurst NUM
این گزینهها هم برای سرویسهای پیازی و هم برای کلاینتهای آنها قابل اعمال هستند:
CompiledProofOfWorkHash 0|1|auto
اگر این گزینه روی 1 تنظیم شود، معماها تنها با استفاده از پیادهسازی کامپایلشده (حدود ۲۰ برابر سریعتر) حل و تأیید میشوند و شکست خوردن بر استفاده از راهکار جایگزین کندتر ترجیح داده میشود. اگر 0 باشد، کامپایلر هرگز استفاده نخواهد شد. بهطور پیشفرض، در صورت امکان همیشه کامپایلر امتحان میشود، اما مفسر نیز به عنوان راهکار جایگزین در دسترس است. (پیشفرض: auto)
همچنین --list-modules را ببینید؛ این گزینههای اثبات کار (proof of work) تا زمانی که ماژول "pow" در زمان کامپایل فعال نشده باشد، هیچ اثری نخواهند داشت..SH "گزینههای کارساز مرجع دایرکتوری (DIRECTORY AUTHORITY SERVER OPTIONS)"
گزینههای زیر عملکرد بهعنوان یک مرجع دایرکتوری (directory authority) را فعال کرده و نحوهٔ رفتار Tor بهعنوان یک مرجع دایرکتوری را کنترل میکنند. اگر یک بازپخش (relay) معمولی یا یک کارساز خروجی (exit server) را روی شبکهٔ عمومی Tor اجرا میکنید، نیازی به تنظیم هیچیک از آنها نخواهید داشت.
AuthoritativeDirectory 0|1
BridgeAuthoritativeDir 0|1
V3AuthoritativeDirectory 0|1
AuthDirBadExit AddressPattern...
(نحو الگوی نشانی در اینجا و گزینههای زیر مشابه با سیاستهای خروج (exit policies) است، با این تفاوت که نیازی به قید “accept” یا “reject” نیست، و درگاهها نیز مورد نیاز نیستند.)
AuthDirMiddleOnly AddressPattern...
AuthDirFastGuarantee N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
AuthDirGuardBWGuarantee N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
AuthDirHasIPv6Connectivity 0|1
محتوای اجماع (consensus) به تعداد مراجع رأیدهندهای که AuthDirHasIPv6Connectivity را تنظیم کردهاند بستگی دارد:
اگر هیچ مرجعی AuthDirHasIPv6Connectivity را روی 1 تنظیم نکند، هیچ IPv6 ORPort در اجماع وجود نخواهد داشت.
اگر اقلیتی از مراجع AuthDirHasIPv6Connectivity را روی 1 تنظیم کنند، IPv6 ORPortهای غیرقابلدسترس از اجماع حذف خواهند شد. اما اکثریت مراجع فقط-IPv4 همچنان به بازپخش بهعنوان Running رأی خواهند داد. خطوط IPv6 ORPort دردسترس در اجماع گنجانده خواهند شد
اگر اکثریتی از مراجع رأیدهنده AuthDirHasIPv6Connectivity را روی 1 تنظیم کنند، بازپخشهای با IPv6 ORPort غیرقابلدسترس بهعنوان Running فهرست نخواهند شد. خطوط IPv6 ORPort دردسترس در اجماع گنجانده خواهند شد (برای اطمینان از اینکه هر اکثریت معتبری به بازپخشهای با IPv6 ORPort غیرقابلدسترس رأی not Running بدهد، 75% از مراجع باید AuthDirHasIPv6Connectivity را روی 1 تنظیم کنند.)
AuthDirInvalid AddressPattern...
AuthDirListBadExits 0|1
AuthDirListMiddleOnly 0|1
AuthDirMaxServersPerAddr NUM
AuthDirPinKeys 0|1
AuthDirReject AddressPattern...
AuthDirRejectRequestsUnderLoad 0|1
AuthDirBadExitCCs CC,...
AuthDirInvalidCCs CC,...
AuthDirMiddleOnlyCCs CC,...
AuthDirRejectCCs CC,...
AuthDirSharedRandomness 0|1
AuthDirTestEd25519LinkKeys 0|1
AuthDirTestReachability 0|1
AuthDirVoteGuard node,node,...
AuthDirVoteGuardBwThresholdFraction FRACTION
AuthDirVoteGuardGuaranteeWFU FRACTION
AuthDirVoteStableGuaranteeMinUptime N seconds|minutes|hours|days|weeks
AuthDirVoteStableGuaranteeMTBF N seconds|minutes|hours|days|weeks
BridgePassword Password
ConsensusParams STRING
DirAllowPrivateAddresses 0|1
GuardfractionFile FILENAME
MinMeasuredBWsForAuthToIgnoreAdvertised N
MinUptimeHidServDirectoryV2 N seconds|minutes|hours|days|weeks
RecommendedClientVersions STRING
RecommendedServerVersions STRING
RecommendedVersions STRING
MinimalAcceptedServerVersion STRING
V3AuthDistDelay N seconds|minutes|hours
V3AuthNIntervalsValid NUM
V3AuthUseLegacyKey 0|1
V3AuthVoteDelay N seconds|minutes|hours
V3AuthVotingInterval N minutes|hours
V3BandwidthsFile FILENAME
VersioningAuthoritativeDirectory 0|1
گزینههای زیر برای پیکربندی یک سرویس مخفی به کار میروند. برخی گزینهها به ازای هر سرویس اعمال میشوند و برخی دیگر بر کل نمونهٔ tor اعمال میگردند.
بخش بعدی گزینههای به ازای هر سرویس را شرح میدهد که تنها میتوان آنها را پس از دستورالعمل HiddenServiceDir تنظیم کرد.
گزینههای به ازای هر سرویس (PER SERVICE OPTIONS):
HiddenServiceAllowUnknownPorts 0|1
HiddenServiceDir DIRECTORY
HiddenServiceDirGroupReadable 0|1
HiddenServiceExportCircuitID protocol
گزینهٔ haproxy به روش زیر عمل میکند: هنگامی که این ویژگی فعال است، فرایند Tor هنگام اتصال کلاینت به سرویس پیازی، یک خط سرایند (header) مینویسد. این سرایند شبیه به این خواهد بود:
"PROXY TCP6 fc00:dead:beef:4dad::ffff:ffff ::1 65535 42\r\n"
ما «شناسهٔ مدار سراسری» را به عنوان ۳۲ بیت پایانیِ نخستین آدرس IPv6 کدگذاری میکنیم. از تمام مقادیر دیگر در سرایند میتوان با اطمینان صرفنظر کرد. شما میتوانید شناسهٔ مدار سراسری را با استفاده از فرمول زیر برای آدرس IPv6 فرضی "fc00:dead:beef:4dad::AABB:CCDD" محاسبه کنید:
global_circuit_id = (0xAA << 24) + (0xBB << 16) + (0xCC << 8) + 0xDD;
در حالت بالا، که در آن ۳۲ بیت پایانی برابر 0xffffffff است، شناسهٔ مدار سراسری برابر 4294967295 خواهد بود. میتوانید از این مقدار همراه با control port مربوط به Tor برای پایان دادن به مدارهای خاص با استفاده از شناسههای مدار سراسری آنها استفاده کنید. برای اطلاعات بیشتر در این مورد، control-spec.txt را ببینید.
پروتکل HAProxy نسخهٔ ۱ با جزئیات کامل در نشانی زیر شرح داده شده است: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt
HiddenServiceOnionBalanceInstance 0|1
MasterOnionAddress <frontend_onion_address>
که در آن <frontend_onion_address> آدرس onion مربوط به فرانتاند OnionBalance است (برای نمونه wrxdvcaqpuzakbfww5sxs6r2uybczwijzfn2ezy2osaj7iox7kl7nhad.onion).
HiddenServiceMaxStreams N
HiddenServiceMaxStreamsCloseCircuit 0|1
HiddenServiceNumIntroductionPoints NUM
HiddenServicePort VIRTPORT [TARGET]
HiddenServiceVersion 3
گزینههای به ازای هر نمونه (PER INSTANCE OPTIONS):
HiddenServiceSingleHopMode 0|1
هشدار: هنگامی که یک دایرکتوری سرویس مخفی توسط یک نمونهٔ tor در حالت HiddenServiceSingleHopMode استفاده شد، هرگز نمیتواند دوباره برای یک سرویس مخفی به کار گرفته شود. بهترین شیوه این است که برای هر Single Onion Service و سرویس مخفی جدید، یک دایرکتوری سرویس مخفی، کلید و آدرس جدید ایجاد کنید. اجرای همزمان Single Onion Services و سرویسهای مخفی از یک نمونهٔ tor ممکن نیست: آنها باید روی سرورهای مجزا با آدرسهای IP متفاوت اجرا شوند.
گزینهٔ HiddenServiceSingleHopMode نیازمند این است که HiddenServiceNonAnonymousMode روی 1 تنظیم شده باشد. از آنجا که یک سرویس Single Onion غیرناشناس است، نمیتوانید روی نمونهٔ tor که در حالت HiddenServiceSingleHopMode اجرا میشود یک SOCKSPort پیکربندی کنید. هنگام اجرای tor قابل تغییر نیست. (پیشفرض: 0)
HiddenServiceNonAnonymousMode 0|1
PublishHidServDescriptors 0|1
سمت سرویس:
برای پیکربندی احراز هویت کلاینت در سمت سرویس، دایرکتوری "<HiddenServiceDir>/authorized_clients/" باید وجود داشته باشد. هر فایل در آن دایرکتوری باید دارای پسوند ".auth" باشد (مانند "alice.auth"؛ نام فایل اهمیتی ندارد) و ساختار محتوای آن حتماً باید به این صورت باشد:
<auth-type>:<key-type>:<base32-encoded-public-key>
موارد پشتیبانیشده برای <auth-type> عبارتند از: "descriptor". موارد پشتیبانیشده برای <key-type> عبارتند از: "x25519". مقدار <base32-encoded-public-key> تنها نمایش base32 از بایتهای خام کلید است (۳۲ بایت برای x25519).
هر فایل حتماً باید تنها شامل یک خط باشد. هر فایل ناهماهنگ یا معیوب نادیده گرفته خواهد شد. احراز هویت کلاینت تنها زمانی برای سرویس فعال میشود که tor حداقل یک فایل احراز هویت را با موفقیت بارگذاری کند.
توجه داشته باشید که به محض پیکربندی احراز هویت کلاینت، از این زمان به بعد هیچکس دیگری با داشتن نشانی قادر به دسترسی به آن نخواهد بود. در صورتی که هیچ احراز هویتی پیکربندی نشده باشد، سرویس برای هر فردی که نشانی onion را داشته باشد قابل دسترسی خواهد بود.
ابطال یک کلاینت میتواند با حذف فایل ".auth" آن انجام شود؛ با این حال این ابطال تنها پس از راهاندازی مجدد فرایند tor یا در صورت رخ دادن SIGHUP اعمال خواهد شد.
سمت کلاینت:
برای دسترسی به عنوان یک کلاینت به یک سرویس onion نسخه ۳ (v3) دارای احراز هویت کلاینت، مطمئن شوید که ClientOnionAuthDir در torrc شما تنظیم شده باشد. سپس، در دایرکتوری <ClientOnionAuthDir>، یک فایل .auth_private برای سرویس onion متناظر با این کلید ایجاد کنید (مانند 'bob_onion.auth_private'). محتویات فایل <ClientOnionAuthDir>/<user>.auth_private باید به صورت زیر باشد:
<56-char-onion-addr-without-.onion-part>:descriptor:x25519:<x25519 private key in base32>
برای اطلاعات بیشتر، لطفاً ببینید: https://2019.www.torproject.org/docs/tor-onion-service.html.en#ClientAuthorization ..SH "گزینههای شبکه آزمایشی (TESTING NETWORK OPTIONS)"
گزینههای زیر برای راهاندازی یک شبکه آزمایشی Tor استفاده میشوند.
TestingTorNetwork 0|1
DirAllowPrivateAddresses 1 EnforceDistinctSubnets 0 AuthDirMaxServersPerAddr 0 ClientBootstrapConsensusAuthorityDownloadInitialDelay 0 ClientBootstrapConsensusFallbackDownloadInitialDelay 0 ClientBootstrapConsensusAuthorityOnlyDownloadInitialDelay 0 ClientDNSRejectInternalAddresses 0 ClientRejectInternalAddresses 0 CountPrivateBandwidth 1 ExitPolicyRejectPrivate 0 ExtendAllowPrivateAddresses 1 V3AuthVotingInterval 5 minutes V3AuthVoteDelay 20 seconds V3AuthDistDelay 20 seconds TestingV3AuthInitialVotingInterval 150 seconds TestingV3AuthInitialVoteDelay 20 seconds TestingV3AuthInitialDistDelay 20 seconds TestingAuthDirTimeToLearnReachability 0 minutes MinUptimeHidServDirectoryV2 0 minutes TestingServerDownloadInitialDelay 0 TestingClientDownloadInitialDelay 0 TestingServerConsensusDownloadInitialDelay 0 TestingClientConsensusDownloadInitialDelay 0 TestingBridgeDownloadInitialDelay 10 TestingBridgeBootstrapDownloadInitialDelay 0 TestingClientMaxIntervalWithoutRequest 5 seconds TestingDirConnectionMaxStall 30 seconds TestingEnableConnBwEvent 1 TestingEnableCellStatsEvent 1
TestingAuthDirTimeToLearnReachability N seconds|minutes|hours
TestingAuthKeyLifetime N seconds|minutes|hours|days|weeks|months
TestingAuthKeySlop N seconds|minutes|hours
TestingBridgeBootstrapDownloadInitialDelay N
TestingBridgeDownloadInitialDelay N
TestingClientConsensusDownloadInitialDelay N
TestingClientDownloadInitialDelay N
TestingClientMaxIntervalWithoutRequest N seconds|minutes
TestingDirAuthVoteExit node,node,...
برای این که این گزینه تأثیری داشته باشد، TestingTorNetwork باید تنظیم شده باشد. برای اطلاعات بیشتر در مورد نحوه مشخص کردن گرهها به ExcludeNodes مراجعه کنید.
TestingDirAuthVoteExitIsStrict 0|1
برای این که این گزینه تأثیری داشته باشد، TestingTorNetwork باید تنظیم شده باشد.
TestingDirAuthVoteGuard node,node,...
برای این که این گزینه تأثیری داشته باشد، TestingTorNetwork باید تنظیم شده باشد.
TestingDirAuthVoteGuardIsStrict 0|1
برای این که این گزینه تأثیری داشته باشد، TestingTorNetwork باید تنظیم شده باشد.
TestingDirAuthVoteHSDir node,node,...
برای این که این گزینه تأثیری داشته باشد، TestingTorNetwork باید تنظیم شده باشد.
TestingDirAuthVoteHSDirIsStrict 0|1
برای این که این گزینه تأثیری داشته باشد، TestingTorNetwork باید تنظیم شده باشد.
TestingDirConnectionMaxStall N seconds|minutes
TestingEnableCellStatsEvent 0|1
TestingLinkCertLifetime N seconds|minutes|hours|days|weeks|months
TestingLinkKeySlop N seconds|minutes|hours
TestingMinExitFlagThreshold N KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
TestingMinFastFlagThreshold N bytes|KBytes|MBytes|GBytes|TBytes|KBits|MBits|GBits|TBits
TestingMinTimeToReportBandwidth N seconds|minutes|hours
TestingServerConsensusDownloadInitialDelay N
TestingServerDownloadInitialDelay N
TestingSigningKeySlop N seconds|minutes|hours
TestingV3AuthInitialDistDelay N seconds|minutes|hours
TestingV3AuthInitialVoteDelay N seconds|minutes|hours
TestingV3AuthInitialVotingInterval N seconds|minutes|hours
TestingV3AuthVotingStartOffset N seconds|minutes|hours
گزینههای ناپایدار (NON-PERSISTENT OPTIONS)
این گزینهها توسط دستور کنترلی "SAVECONF" در فایل torrc ذخیره نمیشوند. سایر گزینههای اینچنینی در control-spec.txt، بخش 5.4 مستند شدهاند. کاربران نهایی عمدتاً باید آنها را نادیده بگیرند.
__ControlPort, __DirPort, __DNSPort, __ExtORPort, __NATDPort, __ORPort, __SocksPort, __TransPort
Tor سیگنالهای زیر را مدیریت میکند:
SIGTERM
SIGINT
SIGHUP
SIGUSR1
SIGUSR2
SIGCHLD
SIGPIPE
SIGXFSZ
فایلها (FILES)
/etc/tor/torrc
$HOME/.torrc
/var/lib/tor/
CacheDirectory/cached-certs
CacheDirectory/cached-consensus و/یا cached-microdesc-consensus
CacheDirectory/cached-descriptors و cached-descriptors.new
CacheDirectory/cached-extrainfo و cached-extrainfo.new
CacheDirectory/cached-microdescs و cached-microdescs.new
DataDirectory/state
DataDirectory/sr-state
CacheDirectory/diff-cache
DataDirectory/bw_accounting
DataDirectory/control_auth_cookie
DataDirectory/lock
KeyDirectory/authority_identity_key
KeyDirectory/authority_certificate
KeyDirectory/authority_signing_key
KeyDirectory/legacy_certificate
KeyDirectory/legacy_signing_key
KeyDirectory/secret_id_key
KeyDirectory/ed25519_master_id_public_key
KeyDirectory/ed25519_master_id_secret_key
KeyDirectory/ed25519_signing_secret_key
KeyDirectory/ed25519_signing_cert
KeyDirectory/secret_onion_key و secret_onion_key.old
KeyDirectory/secret_onion_key_ntor و secret_onion_key_ntor.old
KeyDirectory/keyname.secret_family_key
DataDirectory/fingerprint
DataDirectory/fingerprint-ed25519
DataDirectory/hashed-fingerprint
DataDirectory/bridgelines
DataDirectory/approved-routers
DataDirectory/v3-status-votes
CacheDirectory/unverified-consensus
CacheDirectory/unverified-microdesc-consensus
DataDirectory/unparseable-desc
DataDirectory/router-stability
DataDirectory/stats/dirreq-stats
DataDirectory/stats/entry-stats
DataDirectory/stats/bridge-stats
DataDirectory/stats/exit-stats
DataDirectory/stats/buffer-stats
DataDirectory/stats/conn-stats
DataDirectory/stats/hidserv-stats
HiddenServiceDirectory/hostname
نکته
کلاینتها هرگونه زیردامنه اضافی که به ابتدای نام میزبان سرویس مخفی اضافه شود را نادیده خواهند گرفت. با فرض اینکه "xyz.onion" نام میزبان شما باشد، میتوانید از کلاینتهای خود بخواهید برای اهداف میزبانی مجازی (virtual-hosting) به "www.xyz.onion" یا "irc.xyz.onion" متصل شوند.
HiddenServiceDirectory/private_key
HiddenServiceDirectory/client_keys
HiddenServiceDirectory/onion_service_non_anonymous
همچنین ببینید (SEE ALSO)
برای اطلاعات بیشتر، به وبسایت پروژه Tor در https://www.torproject.org و مشخصات فنی Tor در https://spec.torproject.org مراجعه کنید. همچنین torsocks(1) و torify(1) را ببینید.
گزارش باگها (BUGS)
از آنجا که Tor هنوز در حال توسعه است، ممکن است اشکالات زیادی وجود داشته باشد. لطفاً آنها را در https://bugs.torproject.org گزارش دهید.
| 06/25/2026 | Tor |