اپراتورهای رله

در هنگام ارتقا رله تور خود، یا جابجایی آن به یک کامپیوتر دیگر، نکته مهم نگه داشتن همان کلید های هویت (ذخیره شده در "keys/ed25519_master_id_secret_key" و "keys/secret_id_key" در DataDirectory خود می باشد). نگه داشتن پشتیبان از کلید های هویت برای اینکه بتوانید یک بازپخش را در آینده بازیابی کنید توصیه می شود تا اعتبار بازپخش از بین نرود.

این یعنی اگر شما در حال ارتقا رله تور خود هستید و همان torrc و همان DataDirectory را نگه می دارید، بنابراین ارتقا باید کار کند و رله شما از همان کلید استفاده خواهد کرد. اگر نیاز به انتخاب یک DataDirectory جدید دارید، اطمینان حاصل کنید که keys/ed25519_master_id_secret_key و keys/secret_id_key قبلی را کپی کرده اید.

If you are a bridge operator, also make sure to copy pt_state/. It contains data required for your bridge to keep working with the same bridge line.

توجه: در تور 0.2.7 ما از هویت های تولید کننده جدید برای رله های مبتنی بر رمزنگاری منحنی بیضوی ed25519 استفاده می کنیم. در نهایت آن ها جایگزین هویت های RSA می شوند، اما این در گذر زمان اتفاق خواهد افتاد، برای اینکه تطابق و سازگاری با نسخه های قدیمی تر تضمین شود. تا آن زمان، هر رله هم یک هویت ed25519 (فایل کلید هویت:keys/ed25519_master_id_secret_key) و یک هویت RSA (فایل کلید هویت: keys/secret_id_key) خواهد داشت. شما باید از دو آن ها کپی/پشتیبان گرفته تا بتوانید رله خود را بازیابی کنید، DataDirectory خود را تغییر دهید یا رله را روی یک کامپیوتر جدید ببرید.

ما قصد داریم تا برپا سازی یک بازپخش Tor را ساده و آسان کنیم:

  • اشکالی ندارد اگر بازپخش گاهی اوقات آفلاین شود. دایرکتوری ها به سرعت متوجه این می شوند و از تبلیغ بازپخش خودداری می کنند. فقط سعی کنید مطمئن شوید که اغلب اوقات اتفاق نمی افتد، از آنجایی که اتصال هایی که از بازپخش زمانی که قطع می شود استفاده می کنند خراب خواهند شد.
  • هر رله تور دارای یک سیاست خارجی می باشد که مشخص می کند چه اتصال های خروجی از آن رله مجاز هستند. اگر تمایلی به اجازه دادن به افراد برای خروج از بازپخش خود ندارید، می توانید آن را طوری تنظیم کنید که که فقط اتصال ها به دیگر بازپخش های Tor را مجاز بداند.
  • رله شما به صورت غیرفعال ظرفیت پهنای‌باند اخیر خود را محاسبه کرده و اعلان می کند، رله های با پهنای‌‌باند بالا تعداد کاربران بیشتری را نسبت به رله های با پهنای‌باند پایین جذب می کنند. بنابراین، داشتن رله های با پهنای‌باند پایین نیز مفید است.

بله، ناشناس بودن شما در برابر برخی حملات بیشتر خواهد بود.

ساده ترین نمونه یک مهاجم است که دارای تعداد کوچکی از بازپخش های Tor می باشد. آن ها یک اتصال از جانب شما می بینند، اما آن ها قادر نخواهند بود متوجه شوند که آیا شروع اتصال از کامپیوتر شما بوده یا از کامپیوتر شخص دیگری بازپخش شده است.

مورد هایی هستند که به نظر راهگشا نیست. اگر یک مهاجم بتواند تمام ترافیک ورودی و خروجی شما را ببیند، برای آن ها سخت نیست که بفهمند چه اتصالاتی بازپخش شده اند و چه اتصالی از سمت شما بوده اند. (در این مورد آن ها هنوز مقصد های شما را نمی دانند مگر اینکه آن ها را هم تحت نظر قرار داده باشند، اما از یک کلاینت عادی وضعیت شما بهتر می باشد.)

اجرا یک گره Tor دارای عیب هایی نیز می باشد. اولا، با وجود اینکه ما چند صد بازپخش داریم، اینکه شما در حال اجرا یکی می باشید می تواند یک نشانه و سیگنال برای مهاجم باشد که شما برای ناشناس بودن خود اهمیت زیادی قائل هستید. دوما، حملات مرموزی وجود دارد که به خوبی مورد فهم نیست یا آزمایش نشده است که نیاز به دانستن این است که شما در حال اجرا یک بازپخش هستید -- برای مثال، یک مهاجم ممکن است قادر باشد "ببیند" شما در حال ارسال ترافیک هستید حتی اگر نتواند ترافیک شما را ببیند و اینکار از طریق بازپخش ترافیک از بازپخش Tor شما و متوجه شدن تغییرات در زمان بندی ترافیک امکان پذیر است.

اینکه فواید آن از ریسک های آن بیشتر است یا نه یکی از سوالاتی است که هنوز پاسخ قطعی ندارد. بسیاری از آن بستگی به حملاتی که نگران آن هستید دارد. برای اکثر کاربران، ما فکر می کنیم که یک حرکت درست باشد.

چرا بار رله متفاوت است

Tor پهنای باند را در کل شبکه مدیریت می‌کند. برای اکثر رله‌ها عملکرد معقولی دارد. اما اهداف Tor با پروتکل‌هایی مانند بیت‌تورنت متفاوت است. Tor صفحات وب با تاخیر کم که به اتصال سریع با headroom نیاز دارند را می‌خواهد. بیت‌تورنت دانلود انبوه می‌خواهد که نیاز به استفاده از تمام پهنای‌باند را دارد.

ما روی یک اسکنر پهنای باند جدید کار می‌کنیم که درک و نگهداری آن آسان‌تر است. برای رله‌هایی که اندازه‌گیری نمی‌شوند و رله‌هایی که اندازه‌گیری کمی دارند، عیب‌یابی خواهد داشت.

چرا Tor به اسکنرهای پهنای‌باند نیاز دارد؟

اکثر ارائه دهندگان حداکثر سرعت اتصال محلی خود را به شما می‌گویند. اما Tor در سراسر جهان کاربران دارد و کاربران ما به صورت تصادفی به یک یا دو رله نگهبان متصل می‌شوند. بنابراین ما باید بدانیم که هر رله چقدر می‌تواند به کل جهان متصل شود.

بنابراین حتی اگر همه اپراتورهای رله پهنای باند تبلیغاتی خود را روی سرعت اتصال محلی خود تنظیم کنند، ما همچنان به مقامات پهنای باند برای متعادل کردن بار بین بخش‌های مختلف اینترنت نیاز داریم.

بار رله معمولی چیست؟

این طبیعی است که بیشتر رله‌ها در 30 تا 80 درصد ظرفیت خود بارگذاری شوند. این برای کلاینت‌ها خوب است: یک رله با بارگذاری بالا، تاخیر بالایی دارد. (ما به اندازه کافی رله می‌خواهیم تا هر رله ۱۰ درصد بارگذاری شود. سپس Tor تقریبا به سرعت اینترنت گسترده خواهد بود).

گاهی اوقات، یک رله کند است زیرا پردازنده آن کند است یا اتصالات آن محدود است. در مواقع دیگر، این شبکه است که کند است: رله با بیشتر رله‌های Tor دیگر همخوانی بد یا فاصله زیادی دارد.

پیدا کردن محدودیت رله

چیزهای زیادی می‌توانند سرعت رله را کاهش دهند. در اینجا نحوه ردیابی آن‌ها آورده شده است.

محدودیت‌های سیستم

  • میزان استفاده از RAM، CPU و سوکت/فایل را در رله خود بررسی کنید

Tor هنگام شروع برخی از این موارد را ثبت می‌کند. سایر موارد را می‌توان با استفاده از ابزارهای بالا یا مشابه مشاهده کرد.

محدودیت‌های ارائه‌دهنده

  • همتاسازی اینترنت (پهنای‌باند، تاخیر) از ارائه‌دهنده رله خود به رله‌های دیگر را بررسی کنید. انتقال رله‌ها از طریق Comcast گاهی کند بوده. رله‌های خارج از آمریکای شمالی و اروپای غربی معمولا کندتر هستند.

محدودیت‌های شبکه Tor

پهنای‌باند رله را می‌توان با پهنای‌باند مشاهده شده یا پهنای‌باند اندازه‌گیری شده توسط مقامات دایرکتوری محدود کرد. در اینجا نحوه فهمیدن اینکه کدام اندازه‌گیری رله شما را محدود می‌کند آورده شده:

  • هر یک از آرا را برای رله خود در مورد اجماع سلامت (صفحه بزرگ) بررسی کنید و میانه را بررسی کنید. اگر رله شما توسط برخی از مقامات دایرکتوری در حال اجرا علامت‌گذاری نشده است:
    • آیا آدرس IPv4 یا IPv6 اشتباه دارد؟
    • آیا آدرس IPv4 یا IPv6 از برخی شبکه‌ها غیرقابل دسترسی است؟
    • آیا بیش از ۲ رله در آدرس IPv4 وجود دارد؟

در غیر این صورت، پهنای‌باند مشاهده شده رله و نرخ پهنای باند (محدود) را بررسی کنید. رله خود را در Metrics جستجو کنید. سپس ماوس را روی عنوان پهنای‌باند قرار دهید تا پهنای‌باند مشاهده شده و نرخ پهنای‌باند رله را مشاهده کنید.

در اینجا چند جزئیات بیشتر و چند مثال آورده شده است: کاهش وزن اجماع و افزایش سرعت رله پایانی.

چطور باید حل کرد

کوچکترین این فرم محدود کردن پهنای‌باند تخصیص‌یافته به رله است.

  • اگر نرخ پهنای‌باند است، BandwidthRate/Burst یا RelayBandwidthRate/Burst را در torrc خود افزایش دهید.
  • اگر پهنای‌باند مشاهده شده باشد، رله شما پهنای‌باند بیشتری درخواست نخواهد کرد تا زمانی که خود را سریعتر ببیند. باید متوجه شوید که چرا کند است.
  • اگر پهنای‌باند اندازه‌گیری شده متوسط باشد، رله شما از نظر اکثر مقامات پهنای‌باند کند به نظر می‌رسد. باید متوجه شوید که چرا آهسته اندازه‌گیری می‌کنند.

اندازه‌گیری رله خود را انجام دهید

اگر رله شما یا مقامات پهنای‌باند فکر می‌کنند که کند است، می‌توانید خودتان پهنای‌باند را آزمایش کنید:

  • آزمایشی را با استفاده از Tor انجام دهید تا ببینید Tor با چه سرعتی می‌تواند روی شبکه/CPU شما وارد شود.
  • آزمایشی را با استفاده از Tor و chutney انجام دهید تا بفهمید Tor با چه سرعتی می‌تواند روی CPU شما قرار بگیرد. به افزایش حجم داده‌ها ادامه دهید تا زمانی که افزایش پهنای‌باند متوقف شود.

Tor از IPv6 پشتیبانی جزئی دارد و ما هر اپراتور رله را تشویق می‌کنیم تا در صورت در دسترس بودن اتصال IPv6، عملکرد IPv6 را در فایل‌های پیکربندی torrc خود فعال کنند. تا اطلاع ثانوی Tor به نشانی های IPv4 روی بازپخش ها نیاز دارد، شما نمی توانید یک بازپخش Tor را روی یک میزبان فقط با آدرس های IPv6 اجرا کنید.

اگر اتصال های خروجی را مجاز بکنید، برخی سرویس هایی که افراد از رله شما به آن وصل می شوند به صورت مجدد به رله وصل می شوند تا اطلاعات بیشتری درباره شما جمع آوری کنند. برای مثال، برخی سرور های آی‌آرسی به درگاه identd مجدد وصل می شوند تا ببینند کدام کاربر عملیات اتصال را انجام داده است. (این برای آن ها کاری از پیش نمی برد، چون تور از این اطلاعات چیزی نمی داند، ولی آن ها به هر حال تلاش خود را انجام می دهند.) همچنین، کاربرانی که از رله شما خارج می شوند ممکن است توجه سایر کاربران روی سایت، سرور IRC، غیره را که مایلند درباره میزبانی که از آن بازپخش می شوند بیشتر بدانند به خود جلب کنند.

یک دلیل دیگر این است که گروه هایی که برای پروکسی های باز روی اینترنت پویش می کنند یاد گرفته اند که گاهی اوقات بازپخش های تور درگاه ساکس آن ها را به همه آشکار می کنند. ما توصیه می کنیم که شما درگاه ساکس خود را تنها به شبکه های محلی مقید کنید.

به هر حال، شما باید امنیت خود را به روز نگه دارید.این مقاله را روی امنیت برای رله های تور به منظور توصیه های بیشتر ببینید.

گزینه های محاسبه در فایل torrc به شما اجازه می دهد تا مقدار بیشینه بایت هایی که بازپخش شما برای یک زمان مشخص استفاده می کند را مشخص کنید.

    AccountingStart day week month [day] HH:MM

این مشخص می کند که محاسبه چه زمانی باید مجددا تنظیم شود. برای مثال، برای تنظیم مقدار کلی بایت ها برای یک هفته (که هر هفته چهارشنبه ساعت 10:00 صبح مجددا تنظیم می شود) شما باید از این استفاده کنید:

    AccountingStart week 3 10:00
    AccountingMax 500 GBytes

این بیشینه اندازه داده ای که بازپخش در طول یک دوره پی‌گیری‌ ارسال می کند، و بیشینه اندازه داده ای که بازپخش شما در طول یک دوره حساب دریافت می کند را مشخص می کند. هنگامی که دوره حساب مجدداً تنظیم شود (از AccountingStart)، سپس شمارنده ها برای AccountingMax روی 0 بر می گردند.

نمونه: فرض کنیم شما می خواهید ترافیک 50 گیگابایت را هر روز در هر جهت مجاز کنید و محاسبه هر روز عصر باید مجددا تنظیم شود:

    AccountingStart day 12:00
    AccountingMax 50 GBytes

توجه داشته باشید که بازپخش شما دقیقا در شروع هر دوره محاسبه بیدار فعال نخواهد شد. پیگیری می کند که در آخرین دوره به چه سرعتی سهم خود را استفاده کرده، و یک نقطه تصادفی در فاصله جدید برای بیدار‌باش انتخاب می کند. به این شیوه ما جلوی صدها رلهٔ که در شروع هر ماه در حال کار هستند و در پایان آن هیچ کدام کار نمی کنند را می گیریم.

اگر فقط میزان کمی پهنای‌باند برای ارائه در مقایسه با سرعت اتصال خود دارید، توصیه می کنیم تا از حساب روزانه استفاده کنید، به این شکل کل سهم ماهانه خود را در روز اول را مصرف نمی کنید. فقط کافی است حساب ماهانه خود را تقسیم بر 30 کنید. شاید بخواهید محدودیت نرخ را نیز برای گسترش سودمندی در طول روز اعمال کنید: اگر می خواهید در هر جهت X گیگابایت ارائه کنید، می توانید RelayBandwidthRate را روی 20*X KBytes تنظیم کنید. برای نمونه، اگر 50 گیگابایت برای ارائه دارید، شاید بخواهید RelayBandwidthRate را روی 1000 کیلوبایت تنظیم کنید: در این صورت رله شما حداقل برای نیمی از هر روز مفید خواهد بود.

    AccountingStart day 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurst 5000 KBytes # جهش های بیشتر را مجاز می کند ولی میانگین را نگه می دارد

خیلی خوب. به خاطر همین ما سایت های خروج را پیاده سازی کردیم.

هر بازپخش Tor دارای یک سیاست خروج است که مشخص می کند چه اتصال های خروجی پذیرفته می شوند و یا از آن بازپخش رد می شوند. سیاست های پایانی به کلاینت های Tor از طریق دایرکتوری پخش می شوند، بنابراین کلاینت ها به صورت خودکار بازپخش های پایانی که به مقصد دلبخواه آن ها پایان نمی یابد را رد می کنند. بدین شکل هر بازپخش می تواند درباره سرویس ها، میزبان ها و شبکه هایی که می خواهد اتصال به آن ها را مجاز بداند مبتنی بر پتانسیل سو استفاده و وضعیت خود تصمیم گیری کند. در صورت استفاده از سیاست خروج پیش‌فرض، مدخل پشتیبانی را در مورد مسائلی که ممکن است با آن مواجه شوید را بخوانید و سپس نکات مایک پری را برای اجرای یک گره خروج با کمترین دردسر را بخوانید.

سیاست خروج پیش فرض به بسیاری از سرویس های محبوب اجازه دسترسی می دهد (مانند گردش وب)، ولی برخی را به خاطر پتانسیل سو استفاده (مانند ایمیل) و برخی که شبکه‌ی تور نمی تواند بار آن ها را کنترل کند (مانند درگاه های پیش فرض اشتراک گذاری فایل) را ممنوع می کند. شما می توانید سیاست خروج خود را با ویرایش فایل torrc تغییر دهید. اگر می‌خواهید از بیشتر سوءاستفاده‌های احتمالی جلوگیری کنید، آن را روی "reject *:*" تنظیم کنید. این تنظیم به معنای این است که بازپخش شما برای بازپخش ترافیک داخل شبکه Tor مورد استفاده قرار خواهد گرفت اما نه برای اتصال به سایت های خارجی یا دیگر سرویس ها.

اگر اتصال های خروجی را مجاز قرار می دهید، مطمئن شوید که تفکیک پذیری نام به خوبی کار می کند (یعنی کامپیوتر شما می تواند آدرس های اینترنتی را به درستی حل کند). اگر منابعی وجود دارند که کامپیوتر شما نمی تواند به آن ها دسترسی داشته باشد (برای نمونه، شما پشت یک دیوار آتشین یا فیلتر محتوا هستید)، لطفا به صورت صریح در سیاست خروج جلوی آن ها را بگیرید در غیر اینصورت کاربران تور نیز تحت تاثیر قرار می گیرند.

اگر رله‌ی شما جدید است به آن کمی زمان بدهید. تور تصمیم می گیرد از کدام رله ها به صورت هیوریستیک مبتنی بر گزارش هایی که از مراجع پهنای‌باند دریافت می کند استفاده کند. این مراجع از ظرفیت رله شما اندازه گیری می کنند و، در گذر زمان، ترافیک بیشتری را به آن منتقل می کند تا زمانی که به بار مطلوب برسد. چرخه حیات یک بازپخش جدید به صورت مفصل در این پست وبلاگ توضیح داده شده است. اگر مدتی است یک بازپخش را اجرا می کنید و همچنان مشکل دارید می توانید روی فهرست بازپخش های Tor سوال بپرسید.

عالی. اگر می خواهید چندین بازپخش را برای کمک به شبکه اجرا کنید، ما بسیار از این موضوع خرسندیم. اما لطفا بیشتر از چندتا روی یک شبکه اجرا نکنید از آنجایی که بخشی از هدف شبکه Tor پراکندگی و تنوع می باشد.

اگر قصد دارید بیشتر از یک بازپخش را اجرا کنید، لطفا گزینه کانفیگ "MyFamily" را در torrc هر بازپخش تنظیم کنید و تمام بازپخش هایی که (جدا شده توسط کاما) تحت کنترل شما هستند را لیست کنید:

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

هر اثرانگشت یک اثرانگشت هویت دارای 40 کاراکتر می باشد (بدون فاصله).

به این شکل، کلاینت های Tor بیشتر از یک بازپخش شما را در یک تک چرخه استفاده نخواهند کرد. اگر دارای کنترل مدیریتی روی کامپیوتر ها یا شبکه هستید، حتی اگر همه آن ها در یک موقعیت جغرافیایی نیستند، بهتر است MyFamily را تنظیم کنید.

حق با شماست، برای یک بایت که وارد بازپخش Tor شما شود یک بایت خارج می شود. اما چندین استثنا وجود دارد:

اگر DirPort خود را باز کنید، کلاینت های Tor از شما یک کپی از دایرکتوری را خواهند خواست. درخواستی که آنها می کنند (HTTP GET) تقریبا کوچک می باشد و پاسخ گاهی اوقات بزرگ می باشد. این احتمالاً تفاوت بین شمارنده بایت "نوشتن" و شمارنده بایت "خواندن" شما را نشان می دهد.

یک استثنا جزئی زمانی که شما به عنوان یک گره خروجی عمل می کنید نشان داده می شود، و شما چندین بایت از یک اتصال خروجی می خوانید (برای مثال، یک پیام رسان فوری یا اتصال ssh) و آن را در یک سلول 512 بایتی برای انتقال از داخل شبکه‌ی تور بسته بندی می کنید.

پورت‌های باز پیش‌فرض در زیر فهرست شده‌اند، اما به خاطر داشته باشید که هر پورتی می‌تواند توسط اپراتور رله با پیکربندی آن در torrc یا تغییر کد منبع باز شود. پیش‌فرض مطابق با src/or/policies.c (خط 85 و خط 1901) از نسخه کد منبع release-0.4.6:

reject 0.0.0.0/8
reject 169.254.0.0/16
reject 127.0.0.0/8
reject 192.168.0.0/16
reject 10.0.0.0/8
reject 172.16.0.0/12

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 *:*

تور نشانی IP را با پرسش از کامپیوتر برای نام میزبان آن حدس می زند، سپس نام میزبان را ترجمه می کند. اغلب افراد ورودی های قدیمی در فایل /etc/hosts دارند که به نشانی های IP قدیمی اشاره دارد.

اگر مشکل حل نشد، شما باید از گزینه کانفیگ نشانی برای مشخص سازی آی پی که میخواهید انتخاب کنید استفاده کنید. اگر کامپیوتر شما پشت یک NAT قرار دارد و تنها دارای یک نشانی IP داخلی می باشد، ورودی پشتیبانی روی نشانی های IP پویا را ببینید.

همچنین، اگر دارای نشانی های زیادی می باشید، شاید بخواهید "OutboundBindAddress" را تنظیم کنید تا اتصال های خارجی از آی پی که می خواهید به بقیه عرضه کنید بیاید.

برای دستور العمل روی پورت فورواردینگ با دستگاه روتر/NAT خود portforward.com را ببینید.

اگر بازپخش شما در حال اجرا روی شبکه داخلی است، شما باید پورت فورواردینگ را برپا کنید. ارسال اتصالات TCP وابسته به سیستم است، اما سوالات متداول کلاینت‌های فایروال، نمونه‌هایی از نحوه انجام این کار را ارائه می‌دهد.

همچنین، این یک نمونه از نحوه کار روی گنو/لینوکس است اگر در حال استفاده از iptables می باشید:

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 9001 -j ACCEPT

شاید لازم باشد تا "eth0" را تغییر دهید اگر دارای یک رابط خارجی متفاوت هستید (آنکه به اینترنت وصل است). احتمالا شما فقط یک (به جز لوپ بک) را دارید بنابراین فهمیدن آن نباید خیلی سخت باشد.

ما به دنبال افرادی با اتصال اینترنتی به نسبت قابل اعتماد هستیم، که حداقل دارای پهنای‌باند 10 مگابایت در ثانیه (Mbps) از هر جهت می باشند. اگر شما از چنین ویژگی هایی برخوردار هستید، اجرا یک رله تور را در نظر داشته باشید.

حتی اگر شما 10 مگابیت در ثانیه پهنای‌باند موجود ندارید می توانید به شبکه‌ی تور با اجرای یک پل تور با پشتیبانی obfs4 کمک کنید. در این مورد شما باید حداقل 1 مگابیت در ثانیه پهنای‌باند موجود داشته باشید.

اگر بازپخش Tor شما از مقداری بیشتر از آنچه تمایل دارید از حافظه استفاده می کنید، اینها نکاتی برای کاهش جاگیری آن میباشد:

  • اگر روی لینوکس هستید، شاید با باگ های پارگی حافظه در پیاده سازی کتابخانه سی malloc روبرو باشید. این یعنی، زمانی که تور حافظه را دوباره به سیستم بر می گرداند، قطعاتی از حافظه دچار پارگی می شوند بنابراین استفاده مجدد از آن ها سخت خواهد بود. فایل تار تور همراه با پیاده سازی malloc سیستم OpenBSD می آید، که دارای باگ های پارگی زیادی نمی باشد (در عوض بار واحد پردازش مرکزی بیشتر می باشد). شما می توانید به تور بگویید تا از این پیاده سازی malloc در عوض استفاده کند: ./configure --enable-openbsd-malloc.
  • اگر در حال اجرا یک بازپخش سریع می باشید، به این معنا که اتصال های TLS زیادی را باز دارید، شما احتمالا در حال از دست دادن حافظه زیادی به بافر های داخلی OpenSSL (38KB+ در هر ساکت) می باشید. ما OpenSSL را برای انتشار حافظه بافر استفاده نشده به صورت پویا‌‌‌‌‌‌‌‌‌‌‌‌تر پچ کرده ایم. اگر به OpenSSL 1.0.0 یا جدید تر به روز رسانی کنید، فرآیند ساخت Tor به صورت خودکار این ویژگی را شناسایی کرده و از آن استفاده خواهد کرد.
  • اگر همچنان قادر به کنترل بار حافظه نیستید، می توانید مقدار پهنای باندی که بازپخش شما اعلان می کند را کاهش دهید. اعلان پهنای پاند کمتر به این معناست که شما کاربران کمتری را جذب خواهید کرد، بنابراین بازپخش شما نباید به آن اندازه بزرگ شود. گزینه MaxAdvertisedBandwidth در صفحه man را ببینید.

با وجود همه این ها، بازپخش های سریع Tor از مقدار زیادی ram استفاده می کنند. برای یک بازپخش خروجی سریع غیرعادی نیست که 500-1000 مگابایت حافظه استفاده کند.

BridgeDB implements six mechanisms to distribute bridges: HTTPS, Moat, Email, Telegram, Settings and Reserved. اپراتورهای پل می‌توانند در جستجوی رله بررسی کنند که پل آن‌ها از کدام مکانیسم استفاده می‌کند. <HASHED FINGERPRINT> پل را در فرم وارد کنید و روی "جستجو" کلیک کنید.

اپراتورها همچنین می‌توانند انتخاب کنند که پل آن‌ها از کدام روش توزیع استفاده کند. To change the method, modify the BridgeDistribution setting in the torrc file to one of these: https, moat, email, telegram, settings, none, any.

در راهنمای پس از نصب پل بیشتر بخوانید.

با رعایت این آموزش‌ها می‌توانید یک رله را در ویندوز اجرا کنید:

شما باید زمانی یک رله ویندوز را اجرا کنید که بتوانید آن را 24/7 اجرا کنید. اگر نمی‌توانید آن را تضمین کنید، Snowflake راه بهتری برای کمک کردن منابع خود به شبکه Tor است.

نه. اگر مجریان قانون به ترافیکی که از بازپخش خروجی شما خارج می شود علاقمند شوند، ممکن است ماموران کامپیوتر شما را ضبط کنند. به همین دلیل، بهتر است تا بازپخش خروجی را در خانه خود یا از طریق اتصال اینترنت خانگی خود اجرا نکنید.

در عوض، می توانید بازپخش خروجی خود را در یک مرکز تجاری که از Tor حمایت می کند اجرا کنید. یک نشانی IP جداگانه برای بازپخش پایانی خود داشته باشید و ترافیک خود را از آن رد نکنید. البته، شما باید از نگه داشتن هر اطلاعات خصوصی و حساس روی کامپیوتری که بازپخش پایانی شما را میزبانی می کند خودداری کنید.

در جستجوی رله، یک نقطه کهربایی در کنار نام مستعار رله در زمان بار بیش از حد، نشان می‌دهیم. این بدان معنیست که یک یا چند معیار بار زیر فعال شده است:

توجه داشته باشید که اگر یک رله به حالت اضافه بار برسد، آن را 72 ساعت پس از بازیابی رله نشان می‌دهیم.

اگر متوجه شدید که رله شما بیش از حد بارگذاری شده است لطفا:

  1. https://status.torproject.org/ را برای هر گونه مشکل شناخته شده در دسته "شبکه Tor" بررسی کنید.

  2. sysctl را برای سیستم خود برای بارگذاری شبکه، حافظه و CPU تنظیم کنید.

  3. فعال کردن MetricsPort را برای درک آنچه اتفاق می‌افتد در نظر بگیرید.

تنظیم sysctl برای بارگذاری شبکه، حافظه و CPU

کاهش پورت TCP

اگر در حال تجربه کاهش پورت TCP هستید، محدوده پورت محلی خود را گسترش دهید. شما می‌توانید این کار را به این صورت انجام دهید

# sysctl -w net.ipv4.ip_local_port_range="15000 64000"

يا

# echo 15000 64000 > /proc/sys/net/ipv4/ip_local_port_range

به خاطر داشته باشید که تنظیم sysctl همانطور که توضیح داده شد دائمی نیست و با راه اندازی مجدد از بین می‌رود. شما باید پیکربندی را به /etc/sysctl.conf یا به فایلی در /etc/sysctl.d/ اضافه کنید تا دائمی شود.

MetricsPort

برای درک وضعیت رله‌های Tor و شبکه Tor، ارائه و دسترسی به معیارهای رله ضروری است. اطلاعات اضافه بار رله از 0.4.6+ به توصیفگرهای رله اضافه شده است، اما تا قبل از Tor >= 0.4.7.1-alpha که یک رابط برای معیارهای رله اصلی در دسترس بود: Metrics port.

فعالسازی MetricsPort

Tor دسترسی به پورت متریک را از طریق یک گزینه پیکربندی torrc به نام MetricsPort فراهم می‌کند.

درک این نکته مهم است که نمایش عمومی Tor MetricsPort برای کاربران شبکه Tor خطرناک است، به همین دلیل است که آن پورت به طور پیش فرض فعال نیست و دسترسی آن باید توسط یک خط مشی دسترسی کنترل شود. لطفا هنگام باز کردن این پورت احتیاط و مراقبت بیشتری داشته باشید و پس از اتمام اشکال‌زدایی آن را ببندید.

بیایید فرض کنیم شما تنها کاربر روی سروری هستید که رله Tor را اجرا می‌کند. می‌توانید پورت متریک را فعال کنید و این را به فایل torrc خود اضافه کنید:

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

و سپس می‌توانید به راحتی متریک را با استفاده از موارد زیر دریافت کنید:

# curl http://127.0.0.1:9035/metrics

که به طور پیش فرض در قالب Prometheus هستند.

توجه: هر کاربر در آن سرور می‌تواند به معیارهای رله در مثال بالا دسترسی داشته باشد. به طور کلی، با MetricsPortPolicy یک خط مشی دسترسی بسیار دقیق تنظیم کرده و از ویژگی‌های فایروال سیستم عامل خود برای دفاع عمیق استفاده کنید.

برای توضیح بیشتر درباره MetricsPort و MetricsPortPolicy» به صفحه man Tor مراجعه کنید.

خروجی MetricsPort

Here is an example of what output enabling MetricsPort will produce (we omitted any congestion control related metrics as we still need to stabilize that interface):

# HELP tor_relay_connections Total number of opened connections
# TYPE tor_relay_connections gauge
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv6"} 0
# HELP tor_relay_connections_total Total number of created/rejected connections
# TYPE tor_relay_connections_total counter
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv6"} 0
# HELP tor_relay_flag Relay flags from consensus
# TYPE tor_relay_flag gauge
tor_relay_flag{type="Fast"} 0
tor_relay_flag{type="Exit"} 0
tor_relay_flag{type="Authority"} 0
tor_relay_flag{type="Stable"} 0
tor_relay_flag{type="HSDir"} 0
tor_relay_flag{type="Running"} 0
tor_relay_flag{type="V2Dir"} 0
tor_relay_flag{type="Sybil"} 0
tor_relay_flag{type="Guard"} 0
# HELP tor_relay_circuits_total Total number of circuits
# TYPE tor_relay_circuits_total gauge
tor_relay_circuits_total{state="opened"} 0
# HELP tor_relay_streams_total Total number of streams
# TYPE tor_relay_streams_total counter
tor_relay_streams_total{type="BEGIN"} 0
tor_relay_streams_total{type="BEGIN_DIR"} 0
tor_relay_streams_total{type="RESOLVE"} 0
# HELP tor_relay_traffic_bytes Traffic related counters
# TYPE tor_relay_traffic_bytes counter
tor_relay_traffic_bytes{direction="read"} 0
tor_relay_traffic_bytes{direction="written"} 0
# HELP tor_relay_dos_total Denial of Service defenses related counters
# TYPE tor_relay_dos_total counter
tor_relay_dos_total{type="circuit_rejected"} 0
tor_relay_dos_total{type="circuit_killed_max_cell"} 0
tor_relay_dos_total{type="circuit_killed_max_cell_outq"} 0
tor_relay_dos_total{type="marked_address"} 0
tor_relay_dos_total{type="marked_address_maxq"} 0
tor_relay_dos_total{type="conn_rejected"} 0
tor_relay_dos_total{type="concurrent_conn_rejected"} 0
tor_relay_dos_total{type="single_hop_refused"} 0
tor_relay_dos_total{type="introduce2_rejected"} 0
# HELP tor_relay_load_onionskins_total Total number of onionskins handled
# TYPE tor_relay_load_onionskins_total counter
tor_relay_load_onionskins_total{type="tap",action="processed"} 0
tor_relay_load_onionskins_total{type="tap",action="dropped"} 0
tor_relay_load_onionskins_total{type="fast",action="processed"} 0
tor_relay_load_onionskins_total{type="fast",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor_v3",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor_v3",action="dropped"} 0
# HELP tor_relay_exit_dns_query_total Total number of DNS queries done by this relay
# TYPE tor_relay_exit_dns_query_total counter
tor_relay_exit_dns_query_total 0
# HELP tor_relay_exit_dns_error_total Total number of DNS errors encountered by this relay
# TYPE tor_relay_exit_dns_error_total counter
tor_relay_exit_dns_error_total{reason="success"} 0
tor_relay_exit_dns_error_total{reason="format"} 0
tor_relay_exit_dns_error_total{reason="serverfailed"} 0
tor_relay_exit_dns_error_total{reason="notexist"} 0
tor_relay_exit_dns_error_total{reason="notimpl"} 0
tor_relay_exit_dns_error_total{reason="refused"} 0
tor_relay_exit_dns_error_total{reason="truncated"} 0
tor_relay_exit_dns_error_total{reason="unknown"} 0
tor_relay_exit_dns_error_total{reason="tor_timeout"} 0
tor_relay_exit_dns_error_total{reason="shutdown"} 0
tor_relay_exit_dns_error_total{reason="cancel"} 0
tor_relay_exit_dns_error_total{reason="nodata"} 0
# HELP tor_relay_load_oom_bytes_total Total number of bytes the OOM has freed by subsystem
# TYPE tor_relay_load_oom_bytes_total counter
tor_relay_load_oom_bytes_total{subsys="cell"} 0
tor_relay_load_oom_bytes_total{subsys="dns"} 0
tor_relay_load_oom_bytes_total{subsys="geoip"} 0
tor_relay_load_oom_bytes_total{subsys="hsdir"} 0
# HELP tor_relay_load_socket_total Total number of sockets
# TYPE tor_relay_load_socket_total gauge
tor_relay_load_socket_total{state="opened"} 0
tor_relay_load_socket_total 0
# HELP tor_relay_load_tcp_exhaustion_total Total number of times we ran out of TCP ports
# TYPE tor_relay_load_tcp_exhaustion_total counter
tor_relay_load_tcp_exhaustion_total 0
# HELP tor_relay_load_global_rate_limit_reached_total Total number of global connection bucket limit reached
# TYPE tor_relay_load_global_rate_limit_reached_total counter
tor_relay_load_global_rate_limit_reached_total{side="read"} 0
tor_relay_load_global_rate_limit_reached_total{side="write"} 0

بیایید ببینیم که برخی از این خطوط در واقع چه معنایی دارند:

tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0

هنگامی که رله شروع به "افت" می‌کند، معمولا مشکل از CPU/RAM است.

متاسفانه Tor تک رشته‌ای است به استثنای زمانی که "onion skins" پردازش می‌شود. "onion skins" کار رمزنگاری است که باید روی "لایه‌های پیازی" معروف در هر مدار انجام شود.

وقتی tor لایه‌ها را پردازش می‌کند، از یک Thread Pool استفاده می‌کنیم و همه آن کار را به آن Pool برون سپاری می‌کنیم. ممکن است این Pool به دلیل فشار حافظه یا CPU شروع به افت و اضافه‌بار ایجاد کند.

اگر سرور شما با تمام ظرفیت کار می‌کند، احتمالا این مورد رخ می‌دهد.

The ntor and ntor_v3 values will be the same at the moment which is a bug we need to fix.

tor_relay_exit_dns_error_total{...}

Any counter in the "*_dns_error_total" realm (apart from the one for successful queries) indicates a potential DNS related problem. با این حال، در طول چرخه انتشار 0.4.7 متوجه شدیم که خطاهای DNS بسیار پر سر و صدا هستند و حاوی مقادیر بسیار زیادی مثبت کاذب هستند که برای اهداف گزارش اضافه بار مفید هستند. بنابراین، از نسخه‌ی 0.4.6.9 و 0.4.7.4-alpha ما دیگر از آن‌ها برای این منظور استفاده نمی‌کنیم. با این حال، ما هنوز معیارهای DNS را نزدیک نگه می‌داریم تا به اپراتور رله بینشی در مورد آنچه در رله می‌گذرد، ارائه دهیم.

مشکلات و خطاهای DNS timeout فقط برای گره‌های خروجی رخ می‌دهد.

tor_relay_load_oom_bytes_total{...}

فراخوانی خارج از حافظه نشان دهنده مشکل RAM است. رله ممکن است به RAM بیشتری نیاز داشته باشد یا در حال نشتی حافظه است. اگر متوجه شدید که فرآیند Tor در حال نشت حافظه است، لطفا مشکل را از طریق Tor gitLab یا با ارسال ایمیل به لیست پستی tor-relays گزارش دهید.

Tor کنترل کننده OOM خود را دارد و زمانی فراخوانی می‌شود که 75٪ از کل حافظه tor فکر می‌کند در دسترس است، فراخوانی می‌شود. بنابراین، فرض کنید tor فکر می‌کند که می‌تواند در مجموع از ۲ گیگابایت استفاده کند، سپس در هنگام استفاده از ۱.۵ گیگابایت حافظه، شروع به آزاد کردن حافظه می‌کند. که این یک حالت اضافه بار در نظر گرفته می‌شود.

Tor وقتی شروع به کار می‌کند برای تخمین مقدار حافظه‌ای که در دسترس است، از MaxMemInQueues استفاده می‌کند یا در صورت تنظیم نشدن، کل RAM موجود در سیستم را بررسی می‌کند و این الگوریتم را اعمال می‌کند:

    if RAM >= 8GB {
      memory = RAM * 40%
    } else {
      memory = RAM * 75%
    }
    /* Capped. */
    memory = min(memory, 8GB) -> [8GB on 64bit and 2GB on 32bit)
    /* Minimum value. */
    memory = max(250MB, memory)

برای جلوگیری از بارگذاری بیش از حد، توصیه می کنیم یک رله با رم بالای 2 گیگابایت روی 64 بیت اجرا کنید. 4 گیگابایت توصیه می‌شود، البته اضافه کردن رم بیشتر در صورت امکان ضرری ندارد.

ممکن است متوجه شوید که Tor می‌تواند توسط خود کنترل کننده OS OOM فراخوانی شود. از آنجایی که Tor کل حافظه سیستم را هنگام راه‌اندازی می‌گیرد، اگر سیستم در مجموع برنامه‌های زیادی را با استفاده از RAM در حال اجرا داشته باشد، حافظه بیش از حد مصرف می‌کند. در این مورد، سیستم عامل می‌تواند بدون اینکه حتی فشار حافظه را متوجه شود، OOM tor را انجام دهد.

tor_relay_load_socket_total

If the number of opened sockets is close to or the same as total sockets available then this indicates the relay is running out of sockets. راه حل این است که ulimit -n را برای فرآیند Tor افزایش دهید.

tor_relay_load_tcp_exhaustion_total

این خطوط نشان می‌دهد که پورت‌های TCP رله تمام شده است.

سعی کنید sysctl را همانطور که در بالا توضیح داده شد تنظیم کنید.

tor_relay_load_global_rate_limit_reached_total

اگر این شمارنده با مقداری قابل توجه در مدت زمان کوتاهی افزایش یابد، رله انباشته می‌شود. احتمالا به عنوان یک محافظ توسط یک سرویس پیازی بزرگ یا برای DDoS در حال انجام در شبکه استفاده می‌شود.

اگر رله شما هنوز اضافه بار است و دلیل آن را نمی دانید، لطفا با network-report@torproject.org تماس بگیرید. می‌توانید ایمیل خود را با استفاده از کلید OpenPGP گزارش شبکه رمزگذاری کنید.

به زبان ساده، به این شکل کار میکند:

  • یک فایل کلید خصوصی هویت اولیه ed25519 با نام "ed25519_master_id_secret_key" وجود دارد. این از همه بیشتر اهمیت دارد، بنابراین مطمئن شوید که یک پشتیبان از آن در یک جای امن دارید - فایل حساس می باشد و باید از آن محافظت شود. تور می تواند آن را برای شما رمزگذاری کند اگر آن را به صورت دستی تولید کنید و گذرواژه را هنگامی که خواسته شد وارد کنید.
  • یک کلید امضا به نام "ed25519_signing_secret_key" برای استفاده تور تولید می شود. همچنین یک گواهی به نام "ed25519_signing_cert" تولید می‌شود که توسط کلید خصوصی هویت اولیه امضا شده و تایید می‌کند که کلید امضای میان مدت برای مدت زمان معینی معتبر است. اعتبار پیش فرض 30 روز می باشد، اما این میتواند با سفارشی کردن تنظیم "SigningKeyLifetime N days|weeks|months" در torrc تغییر یابد.
  • همچنین یک کلید عمومی اولیه به نام "ed25519_master_id_public_key" وجود دارد که هویت واقعی رله اعلان شده در شبکه است. این یکی حساس نیست و می تواند به راحتی از "ed5519_master_id_secret_key" رایانش شود.

تور فقط نیازی به دسترسی به کلید امضا و گواهی تا زمانی دارد که آن‌ها معتبر باشند، بنابراین کلید خصوصی هویت اصلی می‌تواند خارج از DataDirectory/keys روی یک رایانه یا رسانه ذخیره دیگر نگه‌داشته شود. شما باید به صورت دستی کلید امضا و گواهی را پیش از اینکه آن ها انقضا یابند را تازه سازی کرده در غیر اینصورت فرآیند تور روی رله در هنگام انقضا خارج خواهد شد.

این ویژگی اختیاری است و شما می‌توانید اگر بخواهید از آن استفاده کنید. اگر می‌خواهید رله شما برای مدت طولانی‌تری بدون نظارت و بدون نیاز به تمدید کلید امضای میان‌مدت به صورت دستی کار کند، بهتر است کلید خصوصی هویت اصلی را در DataDirectory/keys بگذارید، در صورت احتمال نصب دوباره یک نسخه پشتیبان تهیه کنید. اگر می خواهید از این ویژگی استفاده کنید، می توانید راهنما مشروح ما را روی این موضوع ببینید.

هنگامی که یک رله خروج به درستی پیکربندی نشده یا بد می باشد به آن پرچم BadExit تخصیص داده می شود. این به تور می گوید تا برای خروج از آن رله استفاده نشود. بنابراین، رله هایی با این پرچم به صورت غیر-خروجی خواهند بود. اگر شما این پرچم را دارید احتمالاً ما یک مشکل یا فعالیت مشکوک را در هنگام مسیریابی ترافیک از رله خروج شما کشف کرده ایم و نتوانستیم با شما ارتباط برقرار کنیم. لطفاً با تیم رله های بد ارتباط برقرار کنید تا بتوانیم مشکل را حل کنیم.

تمام اتصال های خروجی باید مجاز باشند تا هر بازپخش بتواند با بازپخش های دیگر ارتباط داشته باشد.

در بسیاری حوزه های قضایی، گردانندگان رله تور به صورت قانونی به پشتیبانی از همان قوانینی که از ارائه دهندگان خدمات اینترنتی در برابر محتوا شخص ثالث که از شبکه آن ها عبور می کند محافظت می شوند. رلهٔ های پایانی که برخی ترافیک را فیلتر می کنند احتمالاً چنین محافظت هایی را از دست خواهند داد.

تور دسترسی آزاد شبکه بدون دخالت را ترویج می کند. بازپخش های خروج نباید ترافیکی که از آن ها به اینترنت عبور می کند را فیلتر کنند. رله های خروجی که ترافیک را فیلتر کنند هنگامی که شناسایی شوند پرچم BadExit را دریافت می کنند

اگر از دبیان یا اوبونتو استفاده می‌کنید، نصب Tor از مخزن پروژه Tor مزایای زیادی دارد.

  • ulimit -n شما روی 32768 تنظیم می شود که برای تور به اندازه کافی برای باز نگه داشتن تمام اتصال هایی که به آن ها نیاز دارد کافی است.
  • یک پروفایل کاربر فقط برای Tor ایجاد می شود، بنابراین نیازی نیست Tor به صورت root اجرا شود.
  • یک اسکریپت init قرار گرفته تا Tor در بوت اجرا شود.
  • تور با --verify-config اجرا می شود، بدین شکل بیشتر مشکلات فایل کانفیگ شما گرفته می شود.
  • تور می تواند به درگاه‌های سطح پایین متصل شود، سپس حق‌های ویژه خود را از دست دهد.

از آنجایی که اکنون یک گارد می باشد، کلاینت ها از آن در موقعیت های دیگر کمتر استفاده می کنند اما بسیاری کلاینت ها هنوز گارد های موجود خود تغییر نداده اند تا از به عنوان گارد استفاده کنند. جزییات بیشتر را در این پست وبلاگ یا تغییر گاردها: یک فریمورک برای فهم و ارتقا انتخاب گارد ورودی در Tor بخوانید.

پارامتر های تخصیص یافته در AccountingMax و BandwidthRate هم برای کلاینت و هم برای کار های رله فرآیند تور اعمال می شوند. بنابراین ممکن است زمانی که که Tor به خواب می رود شما متوجه شوید که قادر به گردش نیستید، سیگنال این وضعیت از طریق این ورودی در لاگ داده می شود:

Bandwidth soft limit reached; commencing hibernation.
No new connections will be accepted

راه حل این است که دو پردازش Tor را اجرا کنید - یک بازپخش و یک کلاینت، هر کدام با کانفیگ خود. یک راه برای انجام این کار (اگر در حال شروع از یک تنظیم بازپخش در حال کار) به این شکل است:

  • در فایل torrc بازپخش Tor، مقدار SocksPort را روی 0 قرار بدهید.
  • یک فایل torrc کلاینت جدید از torrc.sample ایجاد کرده و مطمئن شوید که یک فایل لاگ متفاوت از بازپخش را استفاده می کند. یک قرارداد نامگذاری می تواند torrc.client و torrc.relay باشد.
  • کلاینت Tor و اسکریپت های آغازین بازپخش را اصلاح کرده تا -f /path/to/correct/torrc را نیز شامل باشد.
  • در لینوکس/BSD/مک، تغییر اسکریپت های آغازین به Tor.client و Tor.relay ممکن است جدایی کانفیگ ها را آسانتر کند.

دو گزینه وجود دارد که میتوانید به فایل torrc اضافه کنید:

*BandwithRate** بیشینه پهنای باند طولانی مدت مجاز می باشد (بایت در ثانیه) برای نمونه، شما شاید بخواهید "BandwidthRate 10 MBytes" را برای 10 مگابایت در ثانیه (اتصال سریع)، یا "BandwidthRate 500 KBytes" برای 500 کیلوبایت در ثانیه (یک اتصال کابلی قابل قبول) انتخاب کنید. تنظیم کمینه BandwithRate روی 75 کیلوبایت بر ثانیه می باشد.

BandwidthBurst یک مجموعه از بایت های مورد استفاده برای عملی کردن درخواست ها در طول دوره های کوتاه ترافیک بالاتر از BandwidthRate می باشد که میانگین را در دوره بلند مدت روی BandwidthRate نگه می دارد. یک نرخ پایین ولی یک فراپاشی ناگهانی باعث یک حد وسط در بلند مدت خواهد بود که اجازه ترافیک بیشتر در طول اوج را اگر هنوز به حد وسط نرسیده می دهد. برای نمونه، اگر شما "BandwidthBurst 500 KBytes" را انتخاب کنید و ازآن برای BandwidthRate خود نیز استفاده کنید، بنابراین شما بیشتر از 500 کیلوبایت در ثانیه استفاده نخواهید کرد; ولی اگر شما یک BandwidthBurst بالاتر را انتخاب کنید (مانند 5 مگابایت)، به بایت های بیشتری اجازه عبور می دهد تا مجموعه خالی شود.

اگر اتصال نامتوازنی (یعنی آپلود کمتر از دانلود) دارید مثلا مودم شما سیمی است، باید میزان پهنای باند را پایین از از پهنای باند کوچکتر تنظیم کنید (معمولا پهنای باند آپلود کوچکتر است). در غیر اینصورت، ممکن است در طول دوره های بیشینه استفاده پهنای‌باند بسته های زیادی را بیاندازید - شاید لازم باشد تا با مقادیری که اتصال شما را در حالت ایده آل قرار می دهند آزمایش کنید. سپس BandwidthBurst را به همان اندازه BandwidthRate تنظیم کنید.

گره های Tor مبتنی بر لینوکس راه دیگری هم دارند. آن ها می توانند اولویت ترافیک Tor را کمتر از سایر ترافیک روی ماشین خود قرار بدهند و به این شکل ترافیک شخصی آنها تحت تاثیر بار Tor قرار نخواهد گرفت. یک اسکریپت برای انجام این کار را می‌توان در فهرست مشارکتی توزیع منبع Tor یافت.

علاوه بر این، گزینه‌های خواب زمستانی وجود دارد که می‌توانید به Tor بگویید فقط مقدار مشخصی از پهنای باند را در هر دوره زمانی (مانند 100 گیگابایت در ماه) ارائه دهد. این‌ها در مدخل خواب زمستانی پوشش داده شده‌اند.

توجه داشته باشید که BandwithRate و BandwithBurst در بایت می باشند نه بیت.

  • از بسته های در مخزن اوبونتو استفاده نکنید. آن ها به طرز قابل اعتمادی به روز رسانی نمی شوند. اگر از آن ها استفاده می کنید، از اصلاحات مهم امنیتی و پایداری بهره نخواهید برد.
  • نسخه اوبونتو خود را با اجرای فرمان زیر تعیین کنید:
     ‪$ lsb_release -c
    
  • به عنوان روت، خط های زیر را به /etc/apt/sources.list اضافه کنید. 'version' را با نسخه ای که در قدم قبلی پیدا کردید جایگزین کنید:
     deb https://deb.torproject.org/torproject.org version main
     deb-src https://deb.torproject.org/torproject.org version main
    
  • کلید gpg برای امضا بسته را با اجرا فرمان های زیر اضافه کنید:
     ‪$ curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
    
  • دستورات زیر را برای نصب تور اجرا کنید و امضا های آن را بررسی کنید:
     ‪$ sudo apt-get update
     ‪$ sudo apt-get install tor deb.torproject.org-keyring
    

  • رله خروج از بقیه انواع رله ها بیشتر مورد نیاز است ولی دارای بیشترین ریسک و مشکلات حقوقی نیز می باشد (و شما نباید آن ها را از خانه اجرا کنید).
  • اگر به دنبال اجرای یک رله بدون دردسر و تلاش زیاد هستید، رله های محافظ سریع هم بسیار مفید هستند
  • پل ها به دنبال آنها

تور می تواند بازپخش ها با نشانی های IP پویا را بدون هیچ مشکلی کنترل کند. فقط خط "آدرس" را در torrc خود خالی بگذارید تا Tor حدس بزند.