Власники ретрансляторів

Ми прагнемо зробити налаштування ретранслятора Tor легким і зручним:

  • Нічого страшного, якщо ретранслятор іноді вимикається. Керівні сервери швидко помічають цю проблему та перестають використовувати ваш ретранслятор. Тільки постарайтеся, щоб це відбувалось не дуже часто, оскільки з'єднання, за використання ретрансляторів, під час відключення останнього, виводитиметься з ладу.
  • Кожен ретранслятор Tor має політику виходу, яка визначає, які вихідні з'єднання дозволені або заборонені з цього ретранслятора. Якщо вам незручно дозволяти людям використовувати ваш ретранслятор як вихідний, ви можете налаштувати його так, щоб дозволяти підключення лише до інших ретрансляторів Tor.
  • Ваш вузол пасивно оцінюватиме і рекламуватиме свою недавню пропускну спроможність, тому ретранслятори з високою пропускною спроможністю залучатимуть більше користувачів, ніж такі з низькою пропускною спроможністю. Тому наявність ретрансляторів з низькою пропускною спроможністю також є корисною.

Якщо вихідний ретранслятор неправильно налаштований або є шкідливим, йому призначається прапор BadExit. Це повідомляє Tor уникати виходу через цей ретранслятор. Фактично, вузол з цим прапором стають недійсними для виходу. Якщо ви отримали цей прапорець, ми виявили проблему або підозрілу активність під час маршрутизації трафіку через ваш вихідний ретранслятор та не змогли зв’язатися з вами. Будь ласка, зв’яжіться з командою bad-relays, щоб ми могли розв'язати цю проблему.

Дивіться portforward.com, щоб отримати вказівки щодо переадресації порту за допомогою пристрою NAT / маршрутизатора.

Якщо ваш вузол працює у внутрішній мережі, вам потрібно налаштувати переадресацію портів. Пересилання TCP-з'єднань залежить від системи, але в розділі Брандмауер клієнти. Найчастіші запитання наведено кілька прикладів, як це зробити.

Крім того, ось приклад того, як ви це робите в GNU/Linux, якщо ви використовуєте iptables:

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

Можливо, вам доведеться змінити «eth0», якщо у вас інший зовнішній інтерфейс (підключений до інтернету). Швидше за все, у вас є лише один інтерфейс (за виключенням интерфейсу loopback), тому це не повинно бути надто важко зрозуміти.

Чому змінюється навантаження на ретранслятор

Tor керує пропускною спроможністю у всій мережі. Для більшості вузлів він працює добре. Але цілі Tor відрізняються від таких протоколів, як BitTorrent. Tor потребує вебсторінок з малою затримкою, що вимагає швидкого з'єднання з запасом. BitTorrent виконує масивні завантаження, що вимагає використання всієї пропускної здатності.

Ми працюємо над новим сканером пропускної здатності, який легший для розуміння та обслуговування. У ньому буде діагностика ретрансляторів, які не вимірюються, та ретрансляторів з низьким рівнем вимірювань.

Чому Tor потрібні сканери пропускної здатності?

Більшість провайдерів повідомляють вам максимальну швидкість вашого локального з’єднання. Але Tor має користувачів по всьому світу, і наші користувачі підключаються до одного або двох вхідних ретрансляторів випадковим чином. Тому нам потрібно знати, наскільки добре кожен ретранслятор може з’єднатися з усім світом.

So even if all relay operators set their advertised bandwidth to their local connection speed, we would still need bandwidth authorities to balance the load between different parts of the Internet.

Що таке нормальне навантаження ретранслятора?

Для більшості ретрансляторів нормальним є навантаження на 30-80% їхньої потужності. Це добре для клієнтів: перевантажений ретранслятор має високу затримку. (Ми хочемо мати достатньо ретрансляторів, щоб кожен було завантажено на 10%. Тоді Tor буде майже таким самим швидким, як і звичайний інтернет).

Іноді ретранслятор працює повільно, тому що в нього повільний процесор або з'єднання обмежено. В інших випадках справа в повільній роботі мережі: ретранслятор має поганий зв'язок з більшістю інших ретрансляторів, або знаходиться на великій відстані від них.

З'ясування причин обмеження ретранслятора

Багато речей можуть сповільнити вузол. Ось як їх відстежити.

Системні обмеження

  • Перевірте використання оперативної пам’яті, процесора та дескриптора порту / файлу на вашому ретрансляторі

Tor реєструє деякі з них під час запуску. Інші можна переглянути за допомогою різноманітних інструментів.

Обмеження провайдера

  • Перевірте Інтернет з'єднання (пропускну здатність, затримку) від провайдера вашого ретранслятора до інших ретрансляторів. Ретрансляція через Comcast іноді відбувається повільно. Ретранслятори за межами Північної Америки та Західної Європи зазвичай повільніші.

Обмеження мережі Tor

Пропускна здатність ретранслятора може бути обмежена власною спостережуваною пропускною здатністю або виміряною пропускною здатністю керівного сервера. Ось як дізнатися, що саме обмежує ваш ретранслятор:

  • Перевірте кожен із відгуків про ваш вузол на consensus-health (довга сторінка) і перевірте середню вимірювану пропускну здатність. Якщо ваш ретранслятор не відмічено як Працює деяким керівними серверами:
    • У нього неправильна адреса IPv4 або IPv6?
    • Його адреса IPv4 або IPv6 недоступна з деяких мереж?
    • Чи є понад 2 ретранслятори на його IPv4-адресі?

В іншому випадку перевірте спостережувану пропускну здатність вашого ретранслятора і швидкість (межу) пропускної здатності. Look up your relay on Metrics. Потім наведіть курсор миші на заголовок пропускної здатності, щоб побачити спостережувану пропускну здатність і швидкість пропускної здатності вузла.

Ось деякі додаткові відомості та кілька прикладів: Коли падає швидкість та Збільшення швидкості вихідного ретранслятора.

Як це виправити

Найменший з цих показників обмежує смугу пропускання, виділену ретранслятору.

  • Якщо справа у пропускній здатності, збільште BandwidthRate/Burst або RelayBandwidthRate/Burst у вашому torrc.
  • Якщо це спостережувана пропускна здатність, то ваш ретранслятор не вимагатиме більше пропускної здатності, поки бачить, що швидкість росте. Вам потрібно зрозуміти, чому він повільний.
  • Якщо це середня вимірювана пропускна здатність, ваш ретранслятор виглядає повільно в порівнянні з більшістю керівних ретрансляторів стосовно пропускної здатності. Вам потрібно дізнатися, чому вони вважають його повільним.

Виконуйте власні вимірювання характеристик ретранслятора

Якщо ваш ретранслятор вважає, що він повільний, або керівні ретранслятори пропускні здатності вважають, що він повільний, ви можете перевірити пропускну здатність самостійно:

  • Виконайте тест за допомогою tor, щоб побачити, як швидко він може працювати у вашій мережі

    For this, you need to configure a tor client to use use your relay as entry. If your relay has only Guard flag, set EntryNodes with your relay fingerprint in torrc. If your relay doesn't have Guard flag or it has Guard and Exit flags, you can't set your relay as an entry node (see https://gitlab.torproject.org/tpo/core/tor/-/issues/22204), but you can set it as your bridge, even if it is not a bridge. To set your relay as a bridge, add to your torrc:

    Bridge <ip>:<port>
    UseBridge 1
    

    Then download a large file using your SocksPort as a socks proxy. For this, you can use curl, eg:

    curl https://target/path --proxy socks5h://<user>:<password>@127.0.0.1:<socks-port>
    

    Using different user/password guarantees different circuits. You can use $RANDOM.

    That will give you some idea of how much traffic your relay can sustain.

    Alternatively, you can run relay_bw to test your relay using 2 hops circuits, in a similar way as sbws does.

  • Run a test using tor and chutney to find out how fast tor can get on your CPU. Keep increasing the data volume until the bandwidth stops increasing.

Є дві опції, які можна додати до файлу torrc:

BandwidthRate – це максимальна довготривала дозволена пропускна здатність (байт на секунду). Наприклад, ви можете вибрати «BandwidthRate 10 MBytes» для 10 мегабайтів на секунду (швидке з’єднання) або «BandwidthRate 500 KBytes» для 500 кілобайтів на секунду (хороше кабельне з’єднання). Мінімальний параметр BandwidthRate становить 75 кілобайт на секунду.

BandwidthBurst — це пул байтів, який використовується для заповнення запитів протягом коротких періодів трафіку вище BandwidthRate, але все ще зберігає середнє значення протягом тривалого періоду до BandwidthRate. Низька швидкість, але високий Burst забезпечує середнє значення в довгостроковій перспективі, водночас дозволяючи більший трафік в години пік, в разі якщо середнє значення не було досягнуто на такий момент. Наприклад, якщо ви виберете «BandwidthBurst 500 KBytes», а також використовуєте його для вашої BandwidthRate, ви ніколи не використовуватимете понад 500 кілобайтів на секунду; але якщо ви виберете вищий BandwidthBurst (наприклад, 5 МБ), це дозволить пройти більше байтів, поки пул не буде порожнім.

Якщо у вас асиметричне з'єднання (завантаження менше ніж вивантаження), наприклад, кабельний модем, вам слід встановити BandwidthRate менше, ніж менша пропускна здатність (зазвичай це пропускна здатність завантаження). Інакше ви можете втратити багато пакетів у періоди максимального використання пропускної здатності — можливо вам доведеться поекспериментувати з тим, які значення забезпечать вам комфортне з’єднання. Потім встановіть для BandwidthBurst те саме, що й BandwidthRate.

Вузли Tor на базі Linux мають у своєму розпорядженні ще одну опцію: вони можуть надавати пріоритет трафіку Tor нижче іншого трафіку, щоб на їхній особистий трафік не впливало навантаження Tor. Скрипт для цього можна знайти в каталозі contrib вихідного дистрибутиву Tor.

Additionally, there are hibernation options where you can tell Tor to only serve a certain amount of bandwidth per time period (such as 100 GB per month). These are covered in the hibernation entry.

Зверніть увагу, що BandwidthRate і BandwidthBurst вказані в байтах, а не в бітах.

Простими словами, це працює так:

  • Існує основний файл секретного ключа ідентифікації ed25519 під назвою "ed25519_master_id_secret_key". Він важливий, а тому переконайтеся, що ви зберігаєте резервну копію в безпечному місці – файл конфіденційний і має бути захищений. Tor може зашифрувати його для вас, якщо ви згенеруєте його вручну та введете пароль, коли вас попросять.
  • Середньостроковий ключ підпису під назвою "ed25519_signing_secret_key" створюється для використання Tor. Крім того, створюється сертифікат під назвою "ed25519_signing_cert", який підписується основним секретним ключем ідентифікації та підтверджує, що середньостроковий ключ підпису дійсний протягом певного періоду. Термін дії за замовчуванням становить 30 днів, але це можна налаштувати, встановивши «SigningKeyLifetime N days|weeks|months» у torrc.
  • Існує також первинний відкритий ключ під назвою "ed25519_master_id_public_key", який є фактичним ідентифікатором ретранслятора, оголошеного в мережі. Цей параметр не є чутливим і його можна легко обчислити з "ed5519_master_id_secret_key".

Tor потрібен лише доступ до середньострокового ключа підпису та сертифіката, якщо вони дійсні, тому основний секретний ключ ідентифікації можна зберігати за межами DataDirectory/keys, на носії даних або іншому комп’ютері. Вам доведеться вручну поновити середньостроковий ключ підпису та сертифікат до закінчення терміну їх дії, інакше процес Tor на ретрансляторі завершиться після закінчення терміну дії.

Ця функція необов’язкова, вам не потрібно її використовувати, якщо ви цього не хочете. Якщо ви хочете, щоб ваш вузол працював без нагляду протягом тривалого часу без необхідності регулярного оновлення середньострокового ключа підписання вручну, найкраще залишити основний секретний ключ ідентифікації в DataDirectory/keys; просто зробіть резервну копію на випадок, якщо вам знадобиться перевстановити його. Якщо ви хочете скористатися цією функцією, ви можете ознайомитися з нашим докладним посібником на цю тему.

Якщо ваш ретранслятор відносно новий, зачекайте. Tor вирішує, які вузли використовувати евристично на основі звітів керівних ретрансляторів пропускної здатності. Керівні ретранслятори вимірюють місткість вашого ретранслятора і з часом спрямовують туди більше трафіку, допоки він не досягне оптимального навантаження. Життєвий цикл нового ретранслятора докладніше пояснюється в цій публікації в блозі. Якщо ви деякий час використовуєте ретранслятор, але все ще маєте проблеми, спробуйте запитати у списку tor-relays.

  • Не використовуйте пакети зі сховищ Ubuntu. Вони не надійно оновлюються. Якщо ви їх використовуєте, ви пропустите важливі виправлення стабільності та безпеки.
  • Визначте свою версію Ubuntu, виконавши таку команду:
     ‪$ lsb_release -c
    
  • Працюючи з правами суперкористувача додайте наступні рядки до /etc/apt/sources.list. Замініть «версію» версією з попереднього кроку:
     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 -
    
  • Виконайте такі команди, щоб встановити tor і перевірити його підписи:
     ‪$ sudo apt-get update
     ‪$ sudo apt-get install tor deb.torproject.org-keyring
    

Під час пошуку реле ми показуємо жовту крапку поруч із псевдонімом реле, коли воно перевантажене. Це означає, що було досягнуто один або кілька з наступних показників навантаження:

Зауважте, що якщо вузол досягає стану перевантаження, ми це показуємо ще протягом 72 годин після його відновлення.

Якщо ви помітили, що ваш вузол перевантажений, будь ласка:

  1. Перевірте https://status.torproject.org/ на наявність відомих проблем у категорії «Мережа Tor».

  2. Перевірте налаштування sysctl для вашої системи щодо навантаження на мережу, пам'ять і процесор.

  3. Увімкніть MetricsPort, щоб зрозуміти, що відбувається.

Налаштування sysctl по завантаженню мережі, пам'яті та ЦП

Виснаження порту 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 був доступний інтерфейс до базових метрик ретрансляції: порт метрики.

Дозволення 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 дивіться сторінку посібника 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

Коли ретранслятор починає «падати», це проблема з процесором / оперативною пам'яттю.

На жаль, Tor однопотоковий, крім випадків, коли обробляються «onion skins». "Onion skins" - це криптографічна робота, яка повинна бути виконана на знаменитих "onion шарах" у кожній схемі.

Коли tor обробляє шари, ми використовуємо пул потоків і передаємо всю цю роботу цьому пулу. Може статися, що цей пул починає скидати роботу через обмеження пам’яті або процесора, і це спричинить стан перевантаження.

Якщо ваш сервер працює на повну потужність, це, ймовірно, станеться.

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 стосуються лише вузлів виходу.

tor_relay_load_oom_bytes_total{...}

Виклик Out-Of-Memory вказує на проблему з оперативною пам’яттю. Можливо, ретранслятор потребує більше оперативної пам’яті, або стався витік пам'яті. Якщо ви помітили, що в процесі tor закінчується пам’ять, повідомте про проблему через Tor gitLab або надіславши електронний лист до списку розсилки tor-relays.

Tor має власний обробник OOM, який викликається по досягненню 75% загальної пам’яті, яку tor вважає доступною. Отже, tor вважає, що може використовувати 2 ГБ загалом, тоді при використанні 1,5 ГБ пам’яті він почне звільняти пам’ять. Це вважається станом перевантаження.

Щоб оцінити обсяг доступної пам’яті, коли tor запускається, він використовуватиме MaxMemInQueueue або, якщо не задано, перегляне загальну оперативну пам’ять, доступну в системі, та застосує цей алгоритм:

    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 може бути викликаний самим обробником ОС OOM. Оскільки tor під час запуску займає загальну пам’ять у системі, за умови великої кількості інших програм, що працюють з ОЗП, він з’їдає занадто багато пам’яті. У цьому випадку ОС застосувала 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

Якщо цей лічильник збільшується на якесь помітне значення за короткий проміжок часу, вузол перевантажується. Ймовірно, він використовується як вхідний вузол великим сервісом onion або для поточних DDoS у мережі.

Якщо ваш ретранслятор все ще перевантажений, і ви не знаєте чому, зв’яжіться з network-report@torproject.org. Ви можете зашифрувати свою електронну пошту за допомогою ключ OpenPGP Network-report.

Чудово. Якщо ви хочете запустити кілька ретрансляторів для більшого внеску у мережу, ми раді цьому. Але, будь ласка, не запускайте більше кількох десятків в одній мережі, оскільки частиною мети мережі Tor є розподілення та різноманітність.

Якщо ви вирішили запустити більше одного вузла, будь ласка, встановіть параметр конфігурації «MyFamily» у torrc кожного вузла, перерахувавши всі вузли (розділені комами), які знаходяться під вашим контролем:

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

де кожен відбиток — це 40-символьний відбиток ідентифікатора (без пробілів).

Таким чином, клієнти Tor уникатимуть використання більше ніж одного з ваших вузлів в одній схемі. Вам слід налаштувати MyFamily, якщо у вас є адміністративний контроль над комп’ютерами або їх мережею, навіть якщо не всі вони знаходяться в одному географічному місці.

Tor має часткову підтримку IPv6, і ми рекомендуємо кожному, хто керує ретранслятором увімкнути функціональність IPv6 у своїх конфігураційних файлах torrc, коли доступне підключення IPv6. Зараз Tor вимагає присутність адреси IPv4 на ретрансляторах, тому ви не можете запускати ретранслятор Tor на хості лише з адресами IPv6.

Так, ви отримуєте кращу анонімність проти деяких атак.

Найпростіший приклад — зловмисник, який має доступ до певної кількості ретрансляторів Tor. Вони побачать ваше з’єднання, але не зможуть дізнатися, чи з’єднання виникло з вашого комп’ютера чи було передане від когось іншого.

Існують випадки, коли це може не допомогти: якщо зловмисник може спостерігати за всім вашим вхідним і вихідним трафіком, йому легко дізнатися, які дані були просто передані, а які передавали ви. (У цьому випадку вони все одно не знають про те, куди ви переходите, якщо тільки вони не стежать за цими сайтами також, але це так само, якби ви були звичайним клієнтом.)

У підтримуванні роботи ретранслятора Tor є певні труднощі. По-перше, у нас лише кілька сотень вузлів, отже той факт, що ви використовуєте один з них, може стати для зловмисника сигналом того, що ви надаєте великого значення своїй анонімності. По-друге, є ще деякі рідкі атаки, які не настільки добре зрозумілі чи перевірені, та які передбачають використання знання про те, що ви керуєте ретранслятором – наприклад, зловмисник може «спостерігати», чи надсилаєте ви трафік, навіть якщо вони насправді не можуть спостерігати за вашою мережею, перенаправляючи трафік через ваш ретранслятор Tor і помічаючи зміни в часі трафіку.

Це відкрите дослідницьке питання, чи переваги переважають ризики. Багато що залежить від типів атак, які вас найбільше хвилюють. Для більшості користувачів ми вважаємо, що це розумний крок.

Tor розпізнає IP-адресу, запитуючи у комп'ютера ім'я хоста, а потім інтерпретує це ім'я хоста. Часто люди мають старі записи у файлі /etc/hosts, які вказують на старі IP-адреси.

Якщо це не розв'яже проблему, скористайтеся параметром конфігурації «Address», щоб вказати IP-адресу, яку ви хочете вибрати. Якщо ваш комп’ютер знаходиться за NAT і має лише внутрішню IP-адресу, перегляньте наступну статтю підтримки щодо динамічних IP-адрес.

Крім того, якщо у вас багато адрес, ви також можете встановити "OutboundBindAddress", щоб зовнішні з'єднання надходили з IP-адреси, яку ви плануєте показувати всьому світу.

Параметри обліку у файлі torrc дозволяють вказати максимальну кількість байтів, які використовує ваш ретранслятор протягом певного проміжку часу.

    AccountingStart day week month [day] HH:MM

Це вказує, коли підрахунок має бути обнулятися. Наприклад, щоб встановити загальну кількість байтів за тиждень (яка скидається щосереди о 10:00 ранку), ви можете використовувати:

    AccountingStart week 3 10:00
    AccountingMax 500 GBytes

This specifies the maximum amount of data your relay will send during an accounting period, and the maximum amount of data your relay will receive during an accounting period. Коли обліковий період скидається (з AccountingStart), лічильники для AccountingMax скидаються до 0.

Приклад. Припустимо, ви хочете дозволити 50 ГБ трафіку щодня в кожному напрямку, і облік повинен обнулятися опівдні щодня:

    AccountingStart day 12:00
    AccountingMax 50 GBytes

Зверніть увагу, що ретранслятор не прокидатиметься на початку кожного облікового періоду. Він відстежуватиме, як швидко використано квоту за останній період, і вибиратиме випадкову точку в новому інтервалі, щоб прокинутися. Таким чином ми уникаємо сотень ретрансляторів, що працюють на початку кожного місяця, та жодного, який би працював наприкінці цього місяця.

Якщо у вас є лише невеликий обсяг пропускної спроможності для виділення трафіку у порівнянні зі швидкістю з’єднання, ми рекомендуємо використовувати щоденний облік, щоб ви не використали всю місячну квоту в перший день. Просто поділіть місячну суму на 30. Ви також можете розглянути обмеження швидкості, щоб поширити свою корисність на більшу частину дня: якщо ви хочете запропонувати X ГБ в кожному напрямку, ви можете встановити RelayBandwidthRate на 20*X Кбайт. Наприклад, якщо у вас є 50 ГБ, які можете запропонувати, ви можете встановити RelayBandwidthRate на 1000 Кбайт: таким чином ваш вузол завжди буде корисним принаймні половину кожного дня.

    AccountingStart day 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurst 5000 KBytes # дозволяє вищі сплески, але підтримує середнє значення

  • Вихідний ретранслятор є найбільш необхідним типом ретрансляторів, але він також має найвищий юридичний ризик, крім звичайних ризиків (і ви НЕ повинні запускати його із дому).
  • Якщо ви хочете запустити ретранслятор з мінімальними зусиллями, швидкі вхідні ретранслятори також дуже корисні
  • як і мости.

Усі вихідні з’єднання мають бути дозволені, щоб кожний ретранслятор міг спілкуватися з кожним іншим ретранслятором.

У багатьох юрисдикціях ті, хто керує ретрансляторами Tor юридично захищені тими ж загальними правилами керманичів, які запобігають притягненню постачальників інтернет-послуг за сторонній контент, який проходить через їхню мережу. Вихідні ретранслятори, які фільтрують деякий трафік, імовірно, не підпадають під такий захист.

Tor сприяє вільному доступу до мережі без перешкод. Вихідні ретранслятори не повинні фільтрувати трафік, який проходить через них в інтернет. Вихідні ретранслятори, які фільтрують трафік, отримують позначку BadExit.

Ви праві, здебільшого байт на вхід до ретранслятора Tor дорівнює байту на вихід та навпаки. Але є кілька винятків:

Якщо ви відкриєте свій DirPort, клієнти Tor попросять у вас копію каталогу. Запит, який вони роблять (HTTP GET), досить малий, а відповідь іноді досить велика. Це, ймовірно, пояснює у більшості випадків різницю між числом «прочитаних» байтів та числом «записаних» байтів.

Інший незначний виняток з'являється, коли ви працюєте як вихідний вузол, і ви зчитуєте небагато байтів із вихідного з'єднання (наприклад, з'єднання миттєвих повідомлень або ssh) і упаковуєте його в цілий пакет розміром 512 байт для передачі через мережу Tor.

Ми шукаємо людей із досить надійним підключенням до інтернету, які мають доступну пропускну здатність принаймні 10 Мбіт/с (Мбнс) в кожну сторону. Якщо це ви, будь ласка, подумайте про запуск ретранслятора Tor.

Навіть якщо у вас немає принаймні 10 Мбіт/с доступної пропускної здатності, ви все одно можете допомогти мережі Tor, запустивши міст Tor з підтримкою obfs4. У цьому випадку вам необхідно мати принаймні 1 Мбіт/с доступної пропускної здатності.

Чудово. Саме тому ми впровадили політику вихідного трафіку.

Кожен ретранслятор Tor має політику виходу, яка визначає, які вихідні з’єднання дозволені чи заборонені для цього ретранслятора. Політики виходу поширюються на клієнтів Tor через каталог, тому клієнти автоматично уникатимуть вибору вихідних ретрансляторів, які відмовляться виходити до цільового призначення. Таким чином, кожен вузол може вирішувати, до яких послуг, хостів і мереж він хоче дозволити підключення, виходячи з потенціалу зловживання та власної ситуації. Прочитайте Статтю підтримки щодо проблем, з якими ви можете стикнутися, якщо ви використовуєте політику виходу за замовчуванням, а потім прочитайте поради Майка Перрі щодо запуску вихідного вузла з мінімальними переслідуваннями .

Політика виходу за замовчуванням дозволяє отримати доступ до багатьох популярних служб (наприклад, перегляд вебсторінок), але обмежує деякі служби через потенційні зловживання (наприклад, пошта), та інші через те, що мережа Tor не може впоратися з навантаженням (наприклад, порти обміну файлами за замовчуванням). Ви можете змінити політику вихідного трафіку, відредагувавши файл torrc. Якщо ви хочете уникнути більшості, якщо не всіх можливих зловживань, встановіть значення «reject *:*». Це налаштування означає, що ваш вузол використовуватиметься для передачі трафіку всередині мережі Tor, але не для підключення до зовнішніх вебсайтів або інших служб.

Якщо ви дозволили будь-які вихідні з’єднання, переконайтеся, що дозволи імен працюють (тобто ваш комп’ютер може правильно розпізнавати інтернет-адреси). Якщо є ресурси, до яких ваш комп'ютер не може звернутися (наприклад, ви знаходитесь за обмежувальним брандмауером або фільтром контенту), будь ласка, явно відмовтеся від них у політиці виходу, інакше користувачі Tor теж постраждають.

Під час оновлення свого ретранслятора Tor або його переміщення на інший комп’ютер, переконайтеся, що ви ті самі ключі ідентифікації (зберігаються в keys/ed25519_master_id_secret_key and keys/secret_id_key у каталозі даних DataDirectory).

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

For simplicity, just copying over the entire DataDirectory should work too.

You may wish to keep backups of these identity keys, plus pt_state for a bridge, so you can restore the relay if something goes wrong.

Ні. Якщо правоохоронці зацікавляться трафіком з вашого вихідного ретранслятора, цілком можливо, що поліціянти вилучать ваш комп'ютер. З цієї причини краще не запускати вихідний ретранслятор у себе вдома або через домашнє підключення до інтернету.

Натомість подумайте про запуск вихідного ретранслятора на комерційному об’єкті, який симпатизує Tor. Майте окрему IP-адресу для вихідного ретранслятора і не направляйте через нього власний трафік. Звичайно, вам слід уникати зберігання будь-якої конфіденційної чи особистої інформації на комп’ютері, на якому розміщено ваш вихідний ретранслятор.

If you're using Debian or Ubuntu especially, please use the Tor Project's repository, so you can easily receive updates. In addition, using the package provides other conveniences:

  • Your ulimit -n gets set to a high number, so Tor can keep open all the connections it needs.
  • The package creates and uses a separate user, so you don't need to run Tor as your own user.
  • The package includes an init script so Tor runs at boot.
  • Tor can bind to low-numbered ports, then drop privileges.

Якщо ви дозволите вихідні з'єднання, деякі сервіси, до яких люди підключаються з ретранслятора, надаватимуть запит на зворотне підключення для збору додаткової інформації про вас. Наприклад, деякі IRC-сервери підключаються до порту identd, щоб записати, який користувач встановив з'єднання. (Це не зовсім спрацює для них, тому що Tor не знає цієї інформації, але вони все одно намагаються). Крім того, користувачі, що виходять через ваш вихід, можуть привернути увагу інших користувачів IRC-сервера, вебсайту тощо, які захочуть дізнатися більше про хост, через який вони ретранслюються.

Інша причина полягає в тому, що групи, які шукають відкриті проксі в інтернеті, дізналися, що іноді ретранслятори Tor відкривають світові свої порти. Ми рекомендуємо прив’язати свій socksport лише до локальних мереж.

У будь-якому випадку, ви маєте слідувати усім оновленням для своєї безпеки. Перегляньте статтю про безпеку ретрансляторів Tor, щоб отримати додаткові пропозиції для розв'язання питання безпеки.

Відкриті порти за замовчуванням наведено нижче, але майте на увазі, що будь-який порт або порти можуть бути відкриті тим, хто керує ретранслятором, налаштувавши його в 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 *:*

BridgeDB реалізує чотири механізми для розподілу мостів: HTTPS, Moat, Email і Reserved. Ті, хто керує мостами, можуть перевірити, який механізм використовує їхній міст у Relay Search. Введіть міст <HASHED FINGERPRINT> у форму та натисніть «Пошук».

Ті, хто керує, також можуть вибрати, який метод розподілення використовуватиме їхній міст. Щоб змінити метод, змініть параметр BridgeDistribution у файлі torrc на один із таких: https, moat, email, telegram, settings, none, any.

Дізнайтеся більше в посібнику Bridges після встановлення.

Tor чудово справляється з ретрансляторами на динамічних IP-адресах. Просто залиште рядок «Адреса» у вашому torrc порожнім, і Tor здогадається.

Параметри, визначені в AccountingMax та BandwidthRate, відносяться як до клієнтської, так і ретрансляційної функції процесу Tor. Таким чином, ви можете виявити, що не можете переглядати вебсторінки, як ваш Tor переходить до сплячого режиму, на що вказує цей запис в журналі:

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

Рішення полягає в тому, щоб запустити два процеси Tor — один ретранслятор та один клієнт, кожен зі своєю конфігурацією. Один зі способів зробити це (якщо ви починаєте з налаштування робочого ретранслятора) полягає в наступному:

  • У файлі вузла Tor torrc просто встановіть для SocksPort значення 0.
  • Створіть новий клієнтський файл torrc з torrc.sample і переконайтеся, що він використовує інший файл журналу ретранслятора. Варіантом найменування може бути torrc.client і torrc.relay.
  • Змініть клієнт Tor і скрипти запуску ретранслятора, щоб включити -f /path/to/correct/torrc.
  • У Linux/BSD/Mac OS X зміною скриптів запуску на Tor.client та Tor.relay може спростити розділення конфігурацій.

Тепер ваш ретранслятор вхідний. В інших якостях його використовуватимуть менше. Але клієнти не поспішатимуть змінити свої поточні вхідні ретранслятори на ваш. Додаткову інформацію читайте в цій публікації в блозі або у Зміна вхідних вузлів: основа для розуміння та покращення вибору вхідних вузлів у Tor.

Ви можете запустити ретранслятор у Windows згідно з цими інструкціями:

Ви маєте запускати ретранслятор у Windows за умови підтримання його роботи 24/7. Якщо ви не можете гарантувати це, Snowflake — це кращий спосіб зробити свій внесок у мережу Tor.

Якщо ваш ретранслятор Tor використовує більше пам'яті, ніж вам хотілося б, ось кілька порад щодо зменшення її обсягу:

  • Якщо ви працюєте в Linux, ви можете зіткнутися з помилкою фрагментації пам'яті в реалізації malloc у glibc. Тобто, коли Tor звільняє пам’ять для системи, масиви пам’яті фрагментовані, і їх важко повторно використовувати. Tor tarball постачається з реалізацією malloc OpenBSD, яка не має такої кількості помилок фрагментації (але компроміс полягає в більшому завантаженні процесора). Ви можете вказати Tor використовувати цю реалізацію malloc замість: ./configure --enable-openbsd-malloc.
  • Якщо ви використовуєте швидкий вузол, тобто у вас багато відкритих TLS-з'єднань, ви можете втрачати багато пам'яті для внутрішніх буферів OpenSSL (38 кБ+ на сокет). Ми виправили OpenSSL для більш агресивного звільнення буферної пам'яті, що не використовується. Якщо ви оновите до OpenSSL 1.0.0 або новішої версії, процес Tor автоматично розпізнає та використовуватиме цю функцію.
  • Якщо ви все ще не можете впоратися із навантаженням на пам’ять, подумайте про зменшення пропускної здатності, оголошену для вашого ретранслятора. Оголошення меншої пропускної здатності означає, що ви залучите менше користувачів, тому ваш ретранслятор не буде великим. Перегляньте параметр MaxAdvertisedBandwidth на головній сторінці.

Все це говорить про те, що швидкісні ретранслятори Tor дійсно використовують багато оперативної пам’яті. Досить часто швидкий вихідний ретранслятор використовує 500-1000 МБ пам'яті.