Operator Relai

We aim to make setting up a Tor relay easy and convenient:

  • It's fine if the relay goes offline sometimes. The directories notice this quickly and stop advertising the relay. Just try to make sure it's not too often, since connections using the relay when it disconnects will break.
  • Each Tor relay has an exit policy that specifies what sort of outbound connections are allowed or refused from that relay. If you are uncomfortable allowing people to exit from your relay, you can set it up to only allow connections to other Tor relays.
  • Your relay will passively estimate and advertise its recent bandwidth capacity, so high-bandwidth relays will attract more users than low-bandwidth ones. Therefore, having low-bandwidth relays is useful too.

When an exit is misconfigured or malicious it's assigned the BadExit flag. This tells Tor to avoid exiting through that relay. In effect, relays with this flag become non-exits. If you got this flag then we either discovered a problem or suspicious activity when routing traffic through your exit and weren't able to contact you. Please reach out to the bad-relays team so we can sort out the issue.

Lihat portforward.com untuk arahan dalam bagaimana melakukan port forward dengan perangkat NAT/router Anda.

Jika relay Anda sedang berjalan pada jaringan internal, Anda harus mempersiapkan port forwarding Melakukan forward koneksi TCP bergantung terhadap sistem tetapi entri klien telah di firewall FAQ menawarkan beberapa contoh tentang bagaimana cara melakukan ini.

Lalu, berikut adalah contoh tentang bagaimana Anda akan melakukan hal ini pada GNU/Linux jika Anda menggunakan iptables:

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

Anda mungkin ingin mengganti "eth0" jika Anda memilliki antarmuka eksternal yang berbeda (yang tersambung dengan Internet). Kemungkinannya adalah Anda hanya memiliki satu (kecuali loopback) sehingga seharusnya hal ini tidak sulit untuk diketahui.

Why Relay Load Varies

Tor manages bandwidth across the entire network. It does a reasonable job for most relays. But Tor's goals are different to protocols like BitTorrent. Tor wants low-latency web pages, which requires fast connections with headroom. BitTorrent wants bulk downloads, which requires using all the bandwidth.

We're working on a new bandwidth scanner, which is easier to understand and maintain. It will have diagnostics for relays that don't get measured, and relays that have low measurements.

Why does Tor need bandwidth scanners?

Most providers tell you the maximum speed of your local connection. But Tor has users all over the world, and our users connect to one or two Guard relays at random. So we need to know how well each relay can connect to the entire world.

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.

What is a normal relay load?

It's normal for most relays to be loaded at 30%-80% of their capacity. This is good for clients: an overloaded relay has high latency. (We want enough relays to so that each relay is loaded at 10%. Then Tor would be almost as fast as the wider Internet).

Sometimes, a relay is slow because its processor is slow or its connections are limited. Other times, it is the network that is slow: the relay has bad peering to most other tor relays, or is a long distance away.

Finding Out what is Limiting a Relay

Lots of things can slow down a relay. Here's how to track them down.

Batasan Sistem

  • Check RAM, CPU, and socket/file descriptor usage on your relay

Tor logs some of these when it starts. Others can be viewed using top or similar tools.

Provider Limits

  • Check the Internet peering (bandwidth, latency) from your relay's provider to other relays. Relays transiting via Comcast have been slow at times. Relays outside North America and Western Europe are usually slower.

Tor Network Limits

Relay bandwidth can be limited by a relay's own observed bandwidth, or by the directory authorities' measured bandwidth. Here's how to find out which measurement is limiting your relay:

  • Check each of the votes for your relay on consensus-health (large page), and check the median. If your relay is not marked Running by some directory authorities:
    • Does it have the wrong IPv4 or IPv6 address?
    • Is its IPv4 or IPv6 address unreachable from some networks?
    • Are there more than 2 relays on its IPv4 address?

Otherwise, check your relay's observed bandwidth and bandwidth rate (limit). Look up your relay on Metrics. Then mouse over the bandwidth heading to see the observed bandwidth and relay bandwidth rate.

Here is some more detail and some examples: Drop in consensus weight and Rampup speed of Exit relay.

How to fix it

The smallest of these figures is limiting the bandwidth allocated to the relay.

  • If it's the bandwidth rate, increase the BandwidthRate/Burst or RelayBandwidthRate/Burst in your torrc.
  • If it's the observed bandwidth, your relay won't ask for more bandwidth until it sees itself getting faster. You need to work out why it is slow.
  • If it's the median measured bandwidth, your relay looks slow from a majority of bandwidth authorities. You need to work out why they measure it slow.

Doing Your Own Relay Measurements

If your relay thinks it is slow, or the bandwidth authorities think it is slow, you can test the bandwidth yourself:

  • Run a test using tor to see how fast tor can get on your network

    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.

Ada dua pilihan yang dapat Anda tambahkan ke berkas torrc Anda:

BandWidthRate adalah bandwidth maksimum yang diperbolehkan dalam jangka panjang (byte per detik). Sebagai contoh, Anda mungkin ingin memilih "BandwidthRate 10 MBytes" untuk 10 megabyte per detik (koneksi yang cepat), atau "BandwidthRate 500 KBytes" untuk 500 kilobyte per detik (koneksi kabel yang baik). Setelan minimum BandwidthRate adalah 75 kilobyte per detik.

BandwidthBurst adalah kumpulan byte yang digunakan untuk memenuhi permintaan selama periode lalu lintas yang singkat di atas BandwidthRate namun tetap menjaga rata-rata dalam periode yang lama ke BandwidthRate. Rate rendah namun diikuti dengan Burst tinggi memberlakukan rata-rata jangka panjang sambil tetap memungkinkan lebih banyak lalu lintas selama waktu puncak jika rata-rata belum tercapai akhir-akhir ini. Sebagai contoh, jika Anda memilih "BandwidthBurst 500 KByte" dan juga menggunakan hal tersebut untuk BandwidthRate Anda, maka Anda tidak akan pernah menggunakan lebih dari 500 kilobyte per detik; namun jika Anda memilih BandwidthBurst yang lebih tinggi (seperti 5 MByte), hal ini akan memungkinkan lebih banyak byte lewat sampai kumpulannya habis.

Jika Anda memiliki koneksi yang asimetris (unggah lebih kecil dari unduh) seperti modem kabel, Anda sebaiknya memasang BandwidthRate lebih kecil dari bandwidth terkecil Anda (Biasanya hal tersebut adalah bandwidth unggah). Sebaliknya, Anda dapat menjatuhkan banyak paket selama periode penggunaan maksimum bandwidth - Anda mungkin ingin bereksperimen dengan nilai mana yang membuat koneksi Anda nyaman. Lalu pasang BandwidthBurst sehingga sama dengan BandwidthRate.

Nodus Tor berbasis Linux memiliki opsi lain yang dapat mereka pilih: mereka dapat memprioritaskan lalu lintas Tor di bawah lalu lintas lainnya di mesin mereka, jadi lalu lintas personal mereka tidak terpengaruh beban Tor. Sebuah script untuk melakukan ini bisa ditemukan di dalam direktori contrib sumber distrbusi Tor.

Sebagai tambahan, ada opsi hibernasi di mana Anda bisa memberitahu Tor untuk hanya menyediakan bandwidth dengan jumlah tertentu per periode waktu (seperti 100 GB per bulan). Ini dibahas di dalam entry hibernasi.

Perhatikan bahwa BandwidthRate dan BandwidthBurst berada dalam satuan Byte, bukan Bit.

Di dalam kalimat yang simple, hal tersebut bekerja seperti ini:

  • Ada file kunci rahasia utama ed25519 yang bernama "ed25519_master_id_secret_key". Inilah yang paling penting, jadi pastikan Anda menyimpan cadangan di tempat yang aman - filenya sensitif dan sebaiknya dilindungi. Tor bisa mengenkripsikannya untuk Anda jika Anda menambahkannya secara manual dan memasukkan password saat diminta.
  • Sebuah kunci penandatanganan jangka menengah bernama "ed25519_signing_secret_key" dihasilkan oleh Tor untuk digunakan. Serta juga, sebuah sertifikat dihasilkan bernama "ed25519_signing_cert" yang ditandatangani oleh identitas utama kunci rahasia dan mengkonfirmasi bahwa kunci penandatanganan jangka menengah itu valid untuk beberapa jangka waktu. Validitas default-nya adalah 30 hari, namun hal ini bisa diatur dengan aturan "SigningKeyLifetime N days|week|months" di dalam torrc.
  • Ada juga kunci publik utama bernama "ed25519_master_id_public_key", yang merupakan identitas sebenarnya dari relay yang diiklankan di dalam jaringan. Ini tidak sensitif dan bisa dengan mudah dikomputasi dari "ed5519_master_id_secret_key".

Tor hanya akan membutuhkan akses ke kunci penandatanganan jangka menengah dan sertifikat selama kedua hal tersebut valid, jadi kunci rahasia identitas utama bisa disimpan di luar DataDirectory/keys, pada media penyimpanan atau komputer yang berbeda. Anda harus memperbaharui kunci penandatanganan jangka menengah dan sertifikat secara manual sebelum kadaluwarsa jika tidak proses Tor pada relay akan keluar pada masa kadaluwarsa.

Fitur ini opsional, Anda tidak perlu menggunakannya kecuali jika Anda ingin menggunakannya. Jika Anda ingin relay Anda untuk berjalan tanpa diawasi untuk waktu yang lebih lama tanpa harus memperbaharui kunci penandatanganan jangka menengah manual secara teratur, sebaiknya tinggalkan kunci rahasia identitas utama di dalam DataDirectory/keys, buat saja cadangan jika Anda ingin memasang ulang kunci tersebut. Jika Anda ingin menggunakan fitur ini, Anda bisa konsultasi dengan panduan detail kami pada topik yang bersangkutan.

If your relay is relatively new then give it time. Tor decides which relays it uses heuristically based on reports from Bandwidth Authorities. These authorities take measurements of your relay's capacity and, over time, directs more traffic there until it reaches an optimal load. The lifecycle of a new relay is explained in more depth in this blog post. If you've been running a relay for a while and still having issues then try asking on the tor-relays list.

  • Jangan gunakan paket di repositori Ubuntu. Mereka tidak dapat diperbarui secara andal. Jika Anda menggunakannya, Anda akan kehilangan perbaikan stabilitas dan keamanan yang penting.
  • Cari versi Ubuntu Anda dengan menjalankan perintah berikut:
     ‪$ lsb_release -c
    
  • Sebagai root, tambahkan baris berikut ke /etc/apt/sources.list, Ganti 'version' dengan versi yang Anda temukan di tahap sebelumnya:
     deb https://deb.torproject.org/torproject.org version main
     deb-src https://deb.torproject.org/torproject.org version main
    
  • Tambahkan kunci gpg untuk menandatangani paket dengan menjalankan perintah berikut:
     ‪$ curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
    
  • Jalankan perintah berikut untuk memasang tor dan memeriksa tanda tangannya:
     ‪$ sudo apt-get update
     ‪$ sudo apt-get install tor deb.torproject.org-keyring
    

Pada pencarian relay kami memperlihatkan titik merah di samping nama pendek relay saat memiliki muatan yang berlebihan. Ini berarti satu atau lebih metrik beban sudah terpicu:

Ingat jika sebuah relay mencapai keadaan kelebihan beban kami memperlihatkannya sampai 72 jam setelah relay pulih.

Jika Anda melihat relay Anda kelebihan bebas mohon untuk:

  1. Mengecek https://status.torproject.org/ untuk berbagai masalah yang telah diketahui dalam kategori "Jaringan Tor".

  2. Pertimbangkan tuning sysctl untuk sistem Anda untuk jaringan, memori dan beban CPU.

  3. Pertimbangkan mengaktifkan MetricsPort untuk mengetahui apa yang terjadi.

Penyetelan sysctl untuk jaringan, memori, dan beban CPU

Kelelahan port TCP

Jika Anda mengalami kelelahan port TCP pertimbangkan untuk mengekspansi range port lokal Anda. Anda bisa melakukan itu dengan

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

Atau

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

Ingat bahwa menyetel sysctl seperti yang dijelaskan tidak permanen dan akan hilang setelah pemulaian ulang. Anda perlu menambahkan konfigurasinya ke /etc/sysctl.conf atau ke sebuah file di dalam /etc/sysctl.d/ untuk membuatnya permanen.

MetricsPort

Untuk memahami kesehatan relay-relay Tor dan jaringan Tor, penting untuk menyediakan dan memiliki akses ke metrik-metrik relay. Informasi kelebihan beban relay telah ditambahkan ke deskriptor relay sejak 0.4.6+ namun tidak sampai Tor >= 0.4.7.1-alpha sebuah antar muka untuk metrik di bawahnya tersedia: port metrik.

Mengaktifkan MetricsPort

Tor memberikan akses ke port metrik melewati opsi konfigurasi yang disebut dengan MetricsPort.

Penting untuk memahami bahwa mengekspos MetricsPort tor secara publik itu berbahaya untuk pengguna jaringan Tor, itulah sebabnya port tersebut tidak diaktifkan secara default dan aksesnya perlu diatur dengan aturan akses. Mohon untuk mengambil kewaspadaan dan perhatian ekstra saat membuka port ini, dan tutup jika Anda telah selesai debugging.

Mari berasumsi bahwa Anda adalah satu satunya pengguna pada sebuah server yang menjalankan Tor relay. Anda dapat mengaktifkan port metrik dengan menambahkan ini ke file torrc Anda:

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

Dan Anda dapat dengan mudah mendapatkan metriknya dengan:

# curl http://127.0.0.1:9035/metrics

Yang secara default dalam format Prometheus.

Catatan: setiap pengguna pada server tersebut akan dapat mengakses metrik relay di dalam contoh di atas. Secara umum, pasang aturan akses yang sangat ketat dengan MEtricsPortPolicy dan pertimbangkan menggunakan fitur firewall sistem operasi Anda untuk pertahanan secara mendalam.

Untuk penjelasan lebih lanjut mengenai MetricsPort dan MetricsPortPolicy lihat laman tor man.

Output 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

Mari mencari tahu apa arti sebenarnya beberapa bari ini:

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

Ketika sebuah relay mulai melihat "dijatuhkan", ini biasanya adalah masalah CPU/RAM.

Tor is sadly single threaded except for when the "onion skins" are processed. "Onion skins" adalah kerja kriptografis yang perlu dilakukan pada "lapisan onion" yang terkenal di setiap sirkuit.

Saat tor memproses lapisan kami menggunakan thread pool dan melakukan outsource seluruh pekerjaan ke pool tersebut. Ini bisa terjadi bahwa pool ini mulai menjatuhkan pekerjaan karena tekanan memori atau CPU dan ini akan memicu keadaan kelebihan beban.

Jika server Anda sedang berjalan pada kapasitas ini kemungkinan besar akan terpicu.

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. However, we realized during the 0.4.7 release cycle that DNS errors are way too noisy and contain too many false positives to be useful for overload reporting purposes. Dengan demikian kami tidak lagi menggunakan DNS metrics untuk tujuan itu, dimulai dari 0.4.6.9 dan 0.4.7.4-alpha. Namun, kami masih menggunakan metrik DNS untuk memberikan wawasan bagi operator relai mengenai apa yang sedang terjadi dengan relai mereka.

Masalah batas waktu dan kegagalan DNS hanya berlaku pada node Exit.

tor_relay_load_oom_bytes_total{...}

Adanya invokasi Out-Of-Memory mengindikasikan gangguan RAM. Relai ini mungkin membutuhkan lebih banyak RAM atau terjadi kebocoran memori. Jika Anda menemukan kebocoran memori dalam proses tor, harap laporkan masalah ini baik melalui Tor gitLab atau kirimkan surel ke milis tor-relays.

Tor memiliki OOM handler sendiri dan diinvokasi saat mencapai 75% dari total memori yang dianggap tersedia. Jadi, katakanlah tor menganggap bisa menggunakan sejumlah 2GB, pada penggunaan memori 1,5GB, dia akan mulai mengosongkan memori. Kondisi tersebut dianggap kelebihan beban.

Untuk memperkirakan jumlah memori yang tersedia, ketika tor dimulai akan menggunakan MaxMemInQueues atau, jika tidak diatur, akan memeriksa jumlah RAM yang tersedia di sistem dan menerapkan algoritma ini:

    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)

Untuk menghindari kelebihan beban kami menyarankan untuk menjalankan relai di atas 2GB dari RAM pada 64bit. 4GB is advised, although of course it doesn't hurt to add more RAM if you can.

One might notice that tor could be called by the OS OOM handler itself. Because tor takes the total memory on the system when it starts, if the overall system has many other applications running using RAM, it ends up eating too much memory. In this case the OS could OOM tor, without tor even noticing memory pressure.

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. The solution is to increase ulimit -n for the tor process.

tor_relay_load_tcp_exhaustion_total

These lines indicate the relay is running out of TCP ports.

Try to tune sysctl as described above.

tor_relay_load_global_rate_limit_reached_total

If this counter is incremented by some noticeable value over a short period of time, the relay is congested. It is likely being used as a Guard by a big onion service or for an ongoing DDoS on the network.

If your relay is still overloaded and you don't know why, please get in touch with network-report@torproject.org. You can encrypt your email using network-report OpenPGP key.

Bagus. Jika Anda ingin menjalankan beberapa relay untuk mendonasikan lebih ke jaringan, kami senang dengan itu. Tapi mohon untuk tidak menjalankan lebih dari beberapa lusin pada jaringan yang sama, karena bagian dari tujuan jaringan Tor adalah penyebaran dan keberagaman.

Jika Anda memutuskan untuk menjalankan lebih dari satu relay, mohon untuk memasang opsi konfigurasi "MyFamily" di dalam torrc setiap relay, mendaftarkan setiap relay (dipisahkan koma) yang berada di dalam kontrol Anda:

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

Dimana setiap fingerprint adalah 40 karakter identitas fingerprint (tanpa space).

Dengan cara tersebut, klien Tor akan tahu untuk menghindari salah satu dari relay Anda di dalam satu sirkuit. Anda sebaiknya pasang MyFamily jika Anda memiliki kontrol administratif dari komputer atau jaringannya, bahkan jika kedua hal tadi tidak berada di dalam lokasi geografis yang sama.

Tor memiliki dukungan parsial untuk IPv6 dan kami mendorong semua operator relay untuk mengaktifkan fungsionalitas IPv6 di dalam torrc konfigurasi file mereka saat konektivitas IPv6 tersedia. Untuk saat ini Tor akan memerlukan alamat IPv4 pada relay, Anda tidak bisa menjalankan relay Tor pada host dengan hanya alamat IPv6.

Ya, Anda mendapatkan anonimitas yang lebih baik terhadap beberapa serangan.

Contoh yang paling simpel adalah jika seorang penyerang yang memiliki sejumlah kecil relay Tor. Mereka akan melihat koneksi dari Anda, namun mereka tidak akan dapat mengetahui apakah koneksi tersebut berasal dari komputer Anda atau diteruskan dari orang lain.

Ada beberapa kasus di mana hal ini terlihat tidak menolong sama sekali: jika seorang penyerang bisa melihat lalu lintas yang masuk dan keluar, lalu mudah untuk mereka mempelajari koneksi mana yang diteruskan dan mana yang dimulai dari Anda. (Dalam kasus ini mereka masih tidak tahu tujuan anda kecuali kalau mereka mengamati mereka juga, tapi hal ini tidak lebih baik jika Anda adalah klien biasa.)

Ada juga kekurangan dari menjalankan sebuah relay Tor. Pertama-tama, sementara kita hanya memiliki beberapa ratus relay, fakta jika Anda menjalankan sebuah relay mungkin akan memberikan sinyal ke sebuah penyerang bahwa Anda menaruh nilai yang tinggi dalam anonimitas Anda. Yang kedua, ada beberapa serangan esoterik yang tidak terlalu dimengerti atau diuji dengan baik yang melibatkan pengetahuan bahwa Anda menjalankan sebuah relay -- sebagai contoh, seorang penyerang mungkin dapat "mengobservasi" apakah Anda mengirim lalu lintas bahkan jika mereka sebenarnya tidak bisa mengamati jaringan Anda, dengan meneruskan lalu lintas melalui relay Anda dan memperhatikan perubahan dalam waktu lalu lintas.

Ini adalah sebuah pertanyaan riset terbuka apakah keuntungan lebih besar dari resikonya. Sebagian besar dari itu bergantung pada serangan yang paling Anda cemaskan. Untuk sebagian besar pengguna, kami pikir hal tersebut adalah langkah yang pintar.

Tor guesses its IP address by asking the computer for its hostname, and then resolving that hostname. Often people have old entries in their /etc/hosts file that point to old IP addresses.

If that doesn't fix it, you should use the "Address" config option to specify the IP address you want it to pick. If your computer is behind a NAT and it only has an internal IP address, see the following Support entry on dynamic IP addresses.

Also, if you have many addresses, you might also want to set "OutboundBindAddress" so external connections come from the IP you intend to present to the world.

Opsi akuntansi dalam file torrc memperbolehkan Anda untuk menspesifikasikan jumlah maksimum byte yang relay Anda gunakan dalam periode waktu tertentu.

    AccountingStart day week month [day] HH:MM

Hal ini menentukan kapan akuntansi harus diatur ulang. Misalnya, untuk setup jumlah total byte yang dilayani selama seminggu (yang diatur ulang setiap Rabu pada pukul 10:00am), Anda akan menggunakan:

    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. Saat periode akunting diatur ulang (dari AccountingStart), lalu counter untuk AccountingMax akan diatur ulang ke 0.

Sebagai contoh: Katakanlah Anda ingin memperbolehkan 50 GB dari lalu lintas setiap hari di setiap arah dan akunting harus diatur ulang saat siang setiap hari:

    AccountingStart day 12:00
    AccountingMax 50 GBytes

Catat bahwa relay Anda tidak akan bangun tepat pada awal setiap periode akunting. Ini akan terus melacak seberapa cepat relay menggunakan kuotanya di periode terakhir, dan memilih poin acak di dalam interval baru untuk bangun. Dengan cara ini kita menghindari memiliki ratusan relay bekerja saat awal bulan tetapi tidak ada yang aktif saat akhir bulan.

Jika Anda hanya memiliki sejumlah kecil bandwidth untuk di donasikan dibandingkan dengan kecepatan koneksi Anda, kami merekomendasikan Anda menggunakan akunting harian, sehingga Anda tidak menggunakan kuota bulanan Anda pada hari pertama. Bagi saja jumlah bulanan Anda dengan 30. Anda mungkin juga mempertimbangkan membatasi rate untuk menyebarkan kegunaan Anda sepanjang hari secara lebih: jika Anda ingin menawarkan X GB di setiap arah, Anda bisa pasang RelayBandwidthRate Anda ke 20*X KByte. Sebagai contoh, jika Anda memiliki 50 GB untuk ditawarkan pada setiap arah, Anda mungkin memasang RelayBandwidthRate ke 1000 KByte: dengan cara ini relay Anda akan selalu berguna setidaknya setengah dari setiap hari.

    AccountingStart day 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurts 5000 KBytee # memperbolehkan burst yang lebih tinggi namun tetap mempertahankan rata-rata

  • The exit relay is the most needed relay type but it also comes with the highest legal exposure and risk (and you should NOT run them from your home).
  • If you are looking to run a relay with minimal effort, fast guard relays are also very useful
  • Followed by bridges.

Seluruh koneksi keluar harus diperbolehkan, sehingga setiap relay dapat berkomunikasi dengan relay lain.

Di banyak jurisdiksi, operator Tor relay dilindungi secara resmi oleh regulasi operator umum yang sama yang mencegah penyedia layanan internet untuk bertanggung jawab atas konten pihak ketiga yang melewati jaringan mereka. Relay keluar yang memfilter beberapa lalu lintas kemungkinan besar akan kehilangan perlindungan tersebut.

Tor mempromosikan akses jaringan gratis tanpa gangguan. Relay keluar harus tidak memfilter lalu lintas yang melewati mereka ke internet. Relay keluar yang ditemukan memfilter lalu lintas akan mendapatkan flag BadExit ketika terdeteksi.

You're right, for the most part a byte into your Tor relay means a byte out, and vice versa. But there are a few exceptions:

If you open your DirPort, then Tor clients will ask you for a copy of the directory. The request they make (an HTTP GET) is quite small, and the response is sometimes quite large. This probably accounts for most of the difference between your "write" byte count and your "read" byte count.

Another minor exception shows up when you operate as an exit node, and you read a few bytes from an exit connection (for example, an instant messaging or ssh connection) and wrap it up into an entire 512 byte cell for transport through the Tor network.

We're looking for people with reasonably reliable Internet connections, that have at least 10 Mbit/s (Mbps) available bandwidth each way. If that's you, please consider running a Tor relay.

Even if you do not have at least 10 Mbit/s of available bandwidth you can still help the Tor network by running a Tor bridge with obfs4 support. In that case you should have at least 1 MBit/s of available bandwidth.

Bagus. Itulah mengapa kita mengimplementasikan kebijakan keluar.

Setiap Tor relay memiliki kebijakan keluar yang menentukan koneksi keluar macam apa yang diperbolehkan atau ditolah dari relay tersebut. Kebijakan keluar disebarkan ke klien Tor lewat direktori, jadi klien akan secara otomatis menghindari memilih relay keluar yang akan menolak untuk keluar ke tujuan yang diinginkan. Dengan cara ini setiap relay bisa memutuskan layanan, host, dan jaringan yang ingin diperbolehkan koneksinya, didasari pada potensial penyalahgunaan dan situasinya tersendiri. Baca Entry dukungan pada isu yang mungkin Anda temukan jika Anda mneggunakan kebijakan keluar default, dan lalu baca tips dari Mike Perry tips untuk menjalankan node keluar dengan gangguan minimal.

Kebijakan keluar default memperbolehkan akses ke banyak layanan populer (sebagai contoh menjelajahi web), tapi membatasi beberapa karena potensial penyalahgunaan (sebagai contoh surel) dan beberapa karena jaringan Tor tidak dapat mengatasi beban (sebagai contoh port default pembagian file). Anda bisa mengganti kebijakan keluar Anda dengan mengedit file torrc Anda. Jika Anda ingin menghindari sebagian besar potensi penyalahgunaan, setel ke "tolak *:*". Pengaturan ini berarti relay Anda akan digunakan untuk meneruskan lalu lintas ke dalam jaringan Tor, namun tidak untuk koneksi ke situs web eksternal atau layanan lain.

Jika Anda tidak memperbolehkan koneksi keluar apa pun, pastikan resolusi nama bekerja (yaitu, komputer Anda bisa menyelesaikan alamat Internet dengan benar). Jika ada sumber daya apa pun yang komputer Anda tidak dapat jangkau (seperti contoh, Anda di belakang firewall restriktif atau filter konten), mohon untuk secara eksplisit tolak mereka di dalam kebijakan keluar jika tidak pengguna Tor akan terpengaruh juga.

When upgrading your Tor relay, or moving it to a different computer, be sure to keep the same identity keys (stored in keys/ed25519_master_id_secret_key and keys/secret_id_key in your 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.

Tidak. Jika penegakan hukum menjadi tertarik pada lalu lintas dari relay keluar Anda, sangat mungkin bahwa petugas akan merebut komputer Anda. Untuk alasan itu, lebih baik tidak untuk menjalankan relay keluar di rumah Anda atau menggunakan koneksi internet rumah.

Sebaliknya, mempertimbangkan menjalankan relay keluar Anda dalam fasilitas komersial yang mendukung Tor. Miliki alamat IP terpisah untuk relay keluar Anda, dan jangan merutekan lintas Anda sendiri lalu melalui IP itu. Tentu saja, Anda harus menghindari menyimpan informasi sensitif atau pribadi apa pun pada komputer yang menghosting relay keluar Anda.

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.

If you allow exit connections, some services that people connect to from your relay will connect back to collect more information about you. For example, some IRC servers connect back to your identd port to record which user made the connection. (This doesn't really work for them, because Tor doesn't know this information, but they try anyway.) Also, users exiting from you might attract the attention of other users on the IRC server, website, etc. who want to know more about the host they're relaying through.

Another reason is that groups who scan for open proxies on the Internet have learned that sometimes Tor relays expose their socks port to the world. We recommend that you bind your socksport to local networks only.

In any case, you need to keep up to date with your security. See this article on security for Tor relays for more suggestions.

Port terbuka default terdaftar di bawah ini tetapi ingat, port mana pun bisa dibuka oleh operator relay dengan mengonfigurasikannya di dalam torrc atau memodifikasi kode sumber. opsi preseleksi menurut src/or/policies.c (baris 85 dan baris 1901) dari rilis kode sumber rilis-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 implements six mechanisms to distribute bridges: HTTPS, Moat, Email, Telegram, Settings and Reserved. Operator bridge bisa mengecek mekanisme mana yang bridge mereka gunakan, pada Pencarian Relay. Masukkan bridge <HASHED FINGERPRINT> di dalam form dan klik "Cari".

Operator dapat juga memilih metode distribusi mana digunakan bridge mereka. To change the method, modify the BridgeDistribution setting in the torrc file to one of these: https, moat, email, telegram, settings, none, any.

Baca lebih lanjut mengenai panduan Bridge pasca-install.

Tor bisa mengatasi relay dengan alamat IP dinamik dengan baik. Biarkan baris "Alamat" di dalam torrc Anda kosong, dan Tor akan menebaknya.

Parameter yang ditugaskan dalam AccountingMax dan BandwidthRate diterapkan untuk kedua klien dan fungsi relay dari proses Tor. Dengan demikian Anda mungkin menemukan bahwa Anda tidak bisa menjelajah segera setelah Tor Anda berhibernasi, yang ditandai dengan entri ini dalam log:

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

Solusinya adalah menjalankan dua proses Tor - satu relay dan satu klien, masing-masing dengan konfigurasinya sendiri. Salah satu hal untuk melakukan ini (jika Anda memulai dari setup relay yang bekerja) adalah sebagai berikut:

  • Di dalam file relay Tor torrc, pasang SocksPort ke 0.
  • Buat file klien torrc baru dari torrc.sample dan pastikan file tersebut menggunakan file log yang berbeda dari relay. Satu konvensi nama mungkin torrc.client dan torrc.relay.
  • Modifikasi script startup klien Tor dan relay untuk memuat -f /path/to/correct/torrc.
  • Di Linux/BSD/Mac OS X, mengubah script startup ke Tor.client dan Tor.relay mungkin akan membuat pemisahan konfigurasi lebih mudah.

Karena sekarang itu adalah sebuah guard, klien akan menggunakannya lebih jarang di posisi lain, tapi tidak banyak klien yang merotasi guard mereka yang telah ada untuk digunakannya sebagai guard. Baca lebih detail di dalam post blog ini atau di Pergantian Guard: Sebuah Framework untuk memahami dan Meningkatkan Seleksi Masuk Guard di Tor.

Anda dapat menjalankan relay di Windows dengan mengikuti tutorial-tutorial ini:

You should only run a Windows relay if you can run it 24/7. If you are unable to guarantee that, Snowflake is a better way to contribute your resources to the Tor network.

If your Tor relay is using more memory than you'd like, here are some tips for reducing its footprint:

  • If you're on Linux, you may be encountering memory fragmentation bugs in glibc's malloc implementation. That is, when Tor releases memory back to the system, the pieces of memory are fragmented so they're hard to reuse. The Tor tarball ships with OpenBSD's malloc implementation, which doesn't have as many fragmentation bugs (but the tradeoff is higher CPU load). You can tell Tor to use this malloc implementation instead: ./configure --enable-openbsd-malloc.
  • If you're running a fast relay, meaning you have many TLS connections open, you are probably losing a lot of memory to OpenSSL's internal buffers (38KB+ per socket). We've patched OpenSSL to release unused buffer memory more aggressively. If you update to OpenSSL 1.0.0 or newer, Tor's build process will automatically recognize and use this feature.
  • If you still can't handle the memory load, consider reducing the amount of bandwidth your relay advertises. Advertising less bandwidth means you will attract fewer users, so your relay shouldn't grow as large. See the MaxAdvertisedBandwidth option in the man page.

All of this said, fast Tor relays do use a lot of ram. It is not unusual for a fast exit relay to use 500-1000 MB of memory.