გადამცემის გაშვება

Tor-ს თავისუფლად შეუძლია ცვალებადი IP-მისამართების მქონე გადამცემთა გამოყენება. Just leave the "Address" line in your torrc blank, and Tor will guess.

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.

არა. თუ სამართალდამცავები დაინტერესდებიან თქვენი გამსვლელი წერტილიდან გამავალი მონაცემებით, შესაძლოა ჩამოგართვან კომპიუტერი. ამიტომ, კარგი იქნება, თუ გამსვლელ წერტილს არ გაუშვებთ თქვენს სახლში, ანუ თქვენი სახლის ქსელის გამოყენებით.

სანაცვლოდ, აჯობებს გამსვლელი წერტილი გაუშვათ ფასიანი მომსახურების საშუალებით, რომელშიც მხარდაჭერილი იქნება Tor. იქონიეთ ცალკე IP-მისამართი გამსვლელი წერტილისთვის და არ გაატაროთ თქვენი მონაცემები მისი საშუალებით. რასაკვირველია, არანაირი პირადი ან მნიშვნელოვანი მონაცემები არ უნდა დაიტანოთ იმ კომპიუტერზე, რომელსაც გამსვლელ წერტილად ამუშავებთ.

რატომ იტვირთება გადამცემები განსხვავებულად

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 აღრიცხავს მათ უმეტესობას გაშვებისას. დანარჩენის სანახავად, გამოდგება top ან მსგავსი ხელსაწყოები.

მომწოდებლების ზღვრები

  • შეამოწმეთ ინტერნეტკავშირი (გამტარუნარიანობა, დაყოვნება) თქვენი გადამცემის ინტერნეტმომწოდებლისგან, სხვა გადამცემებამდე. გადამცემები, რომლებიც იყენებს Comcast-ს, დროდადრო ნელდება ხოლმე. გადამცემები ჩრდილო ამერიკისა და დასავლეთ ევროპის მიღმა, უმეტესად, შედარებით ნელია.

Tor-ქსელის ზღვრები

გადამცემის გამტარუნარიანობა შეიძლება შეზღუდოს თავად გადაცემის მიერ დადგენილმა გამტარუნარიანობამ, ან უფლებამოსილი მხარეების მიერ გაზომილმა გამტარუნარიანობამ. გაეცანით, თუ როგორ უნდა გაარკვიოთ, რომელი სახის გაზომვები ზღუდავს თქვენს გადამცემს:

  • გადახედეთ თითოეულ შეფასებას თქვენი გადამცემის შესახებ, ერთიან ჩანაწერში (დიდი გვერდი) და ნახეთ საშუალო შეფასებაც. თუ თქვენი გადაცემი არაა აღნიშნული „მოქმედად“ ზოგიერთი უფლებამოსილი მხარის მიერ, შეამოწმეთ:
    • ხომ არ აქვს, არასწორი IPv4 ან IPv6-მისამართი?
    • ხომ არაა IPv4 ან IPv6-მისამართი მიუწვდომელი, ზოგიერთი ქსელიდან?
    • ხომ არაა 2-ზე მეტი გადამცემი, იმავე IPv4-მისამართზე?

გარდა ამისა, გადახედეთ თქვენი გადამცემის დადგენილ გამტარუნარიანობასა და მის სიხშირეს (ზღვარს). Look up your relay on Metrics. შემდეგ, გადაატარეთ თაგვის ისარი გამტარუნარიანობის ჩანაწერს, დადგენილი გამტარუნარიანობისა და გადამცემის გამტარუნარიანობის სიხშირის სანახავად.

იხილეთ დაწვრილებით, ამ მაგალითების მეშვეობით: დადგენილი სიჩქარის ვარდნა და გამსვლელი გადამცემის სიჩქარის გაუმჯობესება.

როგორ შეიძლება მოგვარდეს

მათ შორის უმცირესი რიცხვები, ზღუდავს გადამცემისთვის მინიჭებულ გამტარუნარიანობას.

  • ეს თუ გამტარუნარიანობის სიხშირეა, გაზარდეთ BandwidthRate/Burst ან RelayBandwidthRate/Burst ჩანაწერი თქვენს torrc-ფაილში.
  • თუ დადგენილი გამტარუნარიანობაა, თქვენი გადამცემი არ ითხოვს მეტ გამტარუნარიანობას, სანამ არ ნახავს, რომ სწრაფდება. უნდა გამოარკვიოთ, რატომ არის ნელი.
  • თუ საშუალოდ გაზომილი გამტარუნარიანობაა, ჩანს, თქვენი გადამცემი ნელია გამტარუნარიანობის შემმოწმებელი უფლებამოსილი მხარეების უმეტესობიდან. უნდა გამოარკვიოთ, რატომ დაადგინეს რომ ნელია.

საკუთარი გაზომვების ჩატარება გადამცემზე

თუ თქვენი გადამცემი მიიჩნევს რომ ნელია ან გამტარუნარიანობის უფლებამოსილი მხარეები მიიჩნევს რომ ნელია, შეგიძლიათ თავად შეამოწმოთ კავშირები:

  • 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.

დიახ, ვინაობის გამჟღავნებისგან დაცვა გაიზრდება, ზოგიერთი სახის შეტევისას.

მარტივი მაგალითია შემტევი, რომელიც ფლობს მცირე ოდენობის Tor-გადამცემებს. ისინი იხილავენ კავშირს მომავალს თქვენგან, მაგრამ არ შეეძლებათ დაადგინონ, ეს კავშირი თქვენი წამოწყებულია, თუ თქვენი კომპიუტერი სხვის მონაცემებს გადასცემს.

არის შემთხვევები, რომელიც შეიძლება არ დაგეხმაროთ: თუ შემტევი, თვალს ადევნებს თქვენს შემავალ და გამავალ მონაცემებს, მაშინ მარტივად გაარკვევს, რომელი კავშირი გატარებულია და რომელი თქვენი წამოწყებული. (ამ შემთხვევაში მათ მაინც არ ეცოდინებათ საბოლოო დანიშნულების წერტილები, თუ მათაც არ ადევნებენ თვალს, მაგრამ არც უკეთესი პირობები არ გექნებათ, ვიდრე ჩვეულებრივ კლიენტს).

ასევე რამდენიმე უარყოფითი მხარეც აქვს Tor-გადამცემის გაშვებას. პირველი, ვინაიდან მხოლოდ რამდენიმე ასეული გადამცემი გვაქვს, ის გარემოება, რომ თქვენ ერთ-ერთს წარმოადგენთ, შემტევს აცნობებს, რომ დიდ მნიშვნელობას ანიჭებთ თქვენი ვინაობის გაუმხელობას. მეორე, არსებობს ცალკეული იშვიათი სახის შეტევები, რომლებიც არაა კარგად შესწავლილი და გამოცდილი, იმ ცნობის გამოყენებით, რომ თქვენ გაშვებული გაქვთ გადამცემი -- მაგალითად, შემტევს შეუძლია „გამოიკვლიოს“ აგზავნით თუ არა მონაცემებს, იმ შემთხვევაშიც კი, თუ იგი პირდაპირ თვალს არ ადევნებს თქვენს ქსელს, კავშირის თქვენი Tor-გადამცემით გატარებითა და მონაცემთა მიმოცვლისას დაყოვნების ცვლილებებზე დაკვირვებით.

ეს ღია საკვლევი საკითხია, უპირატესობები გადაწონის თუ არა საფრთხეებს. ყველაფერი დამოკიდებულია, მოსალოდნელი შეტევის სახეებზე. ვფიქრობთ, მომხმარებელთა უმეტესობისთვის ჭკვიანური სვლაა.

თუ დაშვებული გაქვთ გამავალი კავშირები, ზოგიერთი მომსახურება, რომელთაც ხალხი თქვენი გადამცემით უკავშირდება, ცდილობს უკუკავშირს თქვენთან მონაცემების შესაგროვებლად. მაგალითად, IRC-სერვერების ნაწილი შეიძლება გიკავშირდებათ პორტების დასადგენად და იმის აღსარიცხად, თუ რომელმა მომხმარებელმა შექმნა კავშირი. (ეს სინამდვილეში არ გამოადგებათ, ვინაიდან Tor არ ფლობს ამ მონაცემებს, მაგრამ მაინც ცდიან). ამასთანავე, მომხმარებლები რომლებიც თქვენი გადამცემით გადიან, შესაძლოა განსაკუთრებულ ყურადღებას იპყრობდნენ სხვა მომხმარებლების IRC-სერვერზე, საიტზე და ა.შ. რომელთაც შეიძლება სურდეთ მეტი შეიტყონ მომავალ კავშირზე.

კიდევ ერთი მიზეზია ჯგუფები, რომლებიც ცდილობენ ღია პროქსების მოძიებას ინტერნეტში, რომელთაც იციან რომ ზოგჯერ Tor-გადამცემები აზიარებს თავის socks-პორტს ღიად. გირჩევთ, რომ თქვენი socks-პორტი მხოლოდ შიდა ქსელს დაუკავშიროთ.

ნებისმიერ შემთხვევაში, საჭიროა დაიცვათ უსაფრთხოების წესები. იხილეთ სტატია Tor-გადამცემების დაცვა, მეტი რჩევებისთვის.

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.

ჩვენ ვეძებთ ხალხს, რომელთაც აქვთ მეტად სანდო ინტერნეტკავშირი, სულ მცირე 10 მბიტ/წმ (Mbps) ხელმისაწვდომი გამტარუნარიანობით თითოეული მიმართულებით. თუ ასეთი ხართ, გთხოვთ სცადოთ Tor-გადამცემის გაშვება.

იმ შემთხვევაშიც კი, თუ არ გაქვთ სულ მცირე 10 მბიტ/წმ ხელმისაწვდომი გამტარუნარიანობა, შეგიძლიათ დაეხმაროთ Tor-ქსელს და გაუშვათ Tor-გადამცემი ხიდი obfs4-ის მარდაჭერით. ამ შემთხვევაში, გამოსადეგია სულ მცირე 1 მბიტ/წმ ხელმისაწვდომი გამტარუნარიანობაც.

მარტივად რომ ვთქვათ, მუშაობს შემდეგნაირად:

  • არის მთავარი 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-გადამცემების ჯგუფში.

You can run a relay in Windows following this tutorials:

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.

  • გამსვლელი გადამცემი მეტად საჭიროა, თუმცა აგრეთვე ახლავს სამართლებრივი დაბრკოლებები და სხვა საფრთხეები (და არავითარ შემთხვევაში არ უნდა გაუშვათ სახლის ქსელით).
  • თუ გაინტერესებთ, რომელი გადამცემი ითხოვს ნაკლებ ძალისხმევას, სწრაფი მცველი არის აგრეთვე, მეტად გამოსადეგი
  • მათ მოსდევს გადამცემი ხიდები.

ყველა გამსვლელი კავშირი დაშვებული უნდა იყოს, რომ თითოეულმა გადამცემმა შეძლოს მონაცემთა გაცვლა სხვა გადამცემებთან.

სამართლებრივად, ხშირ შემთხვევაში, Tor-ის გადამცემის ზედამხედველები დაცულნი არიან იმავე კანონებით, რაც იცავს ინტერნეტის მომწოდებლებს პასუხისმგებლობის აღებისგან, მათ ქსელში გატარებულ მონაცემებზე. გამსვლელი კვანძები, რომლებიც ფილტრავს მონაცემებს, ჩვეულებრივ გამონაკლისია.

Tor მხარს უჭერს ქსელთან თავისუფალ წვდომას, ჩარევების გარეშე. გამსვლელი კვანძები არ უნდა ფილტრავდნენ მონაცემებს, რომლებიც მათი გავლით გადის ინტერნეტში. ფილტრის მქონე გამსვლელი კვანძები აღმოჩენისთანავე მიიღებს BadExit-ნიშანს.

ვინაიდან ახლა მცველია, კლიენტები ნაკლებად იყენებენ სხვა დანიშნულებით, თუმცა ბევრ მათგანს ჯერ არ ჩაუნაცვლებია მისით თავიანთ არსებული მცველები. ვრცლად იხილეთ ეს სვეტი ან მცველების შეცვლა: შემავალი მცველის შერჩევის სქემა 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-ქსელის არის გაფანტვა და დანაწილება.

თუ გადაწყვეტთ ერთზე მეტი გადამცემის გაშვებას, გთხოვთ მიუთითოთ „MyFamily“ კონფიგურაციის პარამეტრი თითოეული გადამცემის torrc ფაილში, ჩამონათვალით ყველა გადამცემის (მძიმით გამოყოფილის), რომელიც თქვენი განკარგულების ქვეშაა:

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

სადაც თითოეული fingerprint არის 40-სიმბოლოიანი ამომცნობი ანაბეჭდი (გამოტოვების გარეშე).

შედეგად, Tor-კლიენტები აირიდებს ერთსა და იმავე წრედში, ერთზე მეტი თქვენი გადამცემის გამოყენებას. უნდა მიუთითოთ MyFamily იმ შემთხვევაშიც კი, თუ თქვენი ზედამხედველობის ქვეშაა ეს კომპიუტერები ან მათი ქსელი, მიუხედავად იმისა, ყველა მათგანი ერთ გეოგრაფიულ სივრცეშია თუ არა განთავსებული.

როცა გამსვლელი კვანძი გაუმართავია ან მავნეა, იღებს აღნიშვნას BadExit. ეს აუწყებს Tor-ს, რომ აირიდოს ამ გადამცემით გასვლა. საბოლოოდ, გადამცემები ამ აღნიშვნით აღარ გამოიყენება როგორც გამავალი. თუ თქვენ მიიღეთ ეს აღნიშვნა, ან რამე ხარვეზია აღმოჩენილი ან საეჭვო მოქმედება კავშირის თქვენი გადამცემით ინტერნეტში გასვლისას და ვერ მოვახერხეთ თქვენთან დაკავშირება. გთხოვთ შეეხმიანოთ bad-relays-გუნდს რომ შევძლოთ საკითხის გარკვევა.

თუ თქვენი Tor-გადამცემი მეტ მეხსიერებას იყენებს, ვიდრე ელოდით, აქაა მოცემული რამდენიმე რჩევა, დატვირთვის შესამცირებლად:

  • თუ გაქვთ Linux, შესაძლოა გადააწყდეთ მეხსიერების დანაწევრების ხარვეზებს, როცა გამოიყენება glibc-ის malloc. ეს ნიშნავს, რომ როცა Tor მეხსიერებას აბრუნებს სისტემისთვის, იგი მეტად დანაწევრებულია და შესაბამისად, რთულად გამოსაყენებელი ხდება. Tor tarball აღჭურვილია OpenBSD-ის malloc-შესაძლებლობით, რომელსაც ნაკლები ხარვეზები აქვს დანაწევრებასთან დაკავშირებით (მაგრამ სამაგიეროდ, პროცესორი იტვირთება მეტად). შეგიძლიათ მიუთითოთ Tor-ს სანაცვლოდ გამოიყენოს აღნიშნული malloc-შესაძლებლობა: ./configure --enable-openbsd-malloc.
  • თუ გაშვებული გაქვთ სწრაფი გადამცემი, რაც ნიშნავს რომ ბევრი TLS-კავშირებია ღია, შესაძლოა დიდი მოცულობის მეხსიერებას იკარგება OpenSSL-ის შიდა ბუფერისთვის (38KB+ თითოეული შეერთებისთვის). ჩვენ გავასწორეთ OpenSSL გამოუყენებელი მეხსიერების უფრო დაჟინებული მოცილებით. თუ განაახლებთ OpenSSL 1.0.0 ან ახალზე, Tor-ის ანაწყობი ამოიცნობს და გამოიყენებს ამ შესაძლებლობას.
  • თუ მაინც ვერ ახერხებთ მეხსიერების გადატვირთვის მოგვარებას, ჯობია შეამციროთ გამტარუნარიანობა, რომელიც გადამცემისთვის გაქვთ გამოყოფილი. ნაკლები გამტარუნარიანობის შეთავაზებით, ნაკლებ მომხმარებელს მიიზიდავთ, შედეგად თქვენი გადამცემი ნაკლებად დაიტვირთება. იხილეთ MaxAdvertisedBandwidth პარამეტრი მთავარ გვერდზე.

როგორც ითქვა, სწრაფი Tor-გადამცემები, მეტ მეხსიერებას იყენებს. უჩვეულო არაა, როცა ასეთი გადამცემი იყენებს 500-1000 MB ოპერატიულს.

აღრიცხვის პარამეტრები torrc ფაილში, საშუალებას გაძლევთ განსაზღვროთ დასაშვები ოდენობა ბაიტების, რომელსაც თქვენი გადამცემი გაატარებს დროის მონაკვეთში.

    AccountingStart day week month [day] HH:MM

ეს განსაზღვრავს, აღრიცხვა როდის განულდება. მაგალითად, სრული ოდენობის ბაიტების მისათითებლად კვირისთვის (განულდება ყოველ ოთხშაბათს 10:00am საათზე), უნდა გამოიყენოთ:

    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 GB მონაცემების მიმოცვლა ყოველდღიურად თითოეული მიმართულებით და აღრიცხვა უნდა განულდეს ხოლმე შუადღეს:

    AccountingStart day 12:00
    AccountingMax 50 GBytes

გაითვალისწინეთ, რომ თქვენი გადამცემი არ გამოვა უქმი რეჟიმიდან ზუსტად აღრიცხვის შუალედის დაწყებამდე. იგი თვალს მიადევნებს, როგორ სწრაფად გაიხარჯება განსაზღვრული ოდენობა დროის წინა შუალედში და შეარჩევს შემთხვევით წერტილს ახალ შუალედში უქმი რეჟიმიდან გამოსასვლელად. ამ გზით, ჩვენ ავირიდებთ ასობით გადამცემის ამუშავებას ყოველი თვის დასაწყისში ისე, რომ თვის ბოლოს აღარცერთი არ იყოს ხელმისაწვდომი.

თუ მხოლოდ მცირე ნაწილი შეგიძლიათ გაიღოთ, თქვენი კავშირის სიჩქარიდან, გირჩევთ გამოიყენოთ ყოველდღიური აღრიცხვა, შედეგად მთლიანი თვისთვის განსაზღვრული ოდენობა არ გაგეხარჯებათ პირველივე დღეს. მხოლოდ დაყავით თქვენი თვიური ოდენობა 30-ად. აგრეთვე ჯობია, გამოიყენოთ გამტარუნარიანობის შეზღუდვა დღიური სარგებლიანობის გასაზრდელად: თუ გსურთ გაიღოთ X GB თითოეული მიმართულებით, შეგიძლიათ RelayBandwidthRate მიუთითოთ 20*X KBytes. მაგალითად, თუ აპირებთ გაიღოთ 50 გბაიტი ყოველდღიურად, თქვენი RelayBandwidthRate უნდა იყოს 1000 კბაიტი: ამ გზით, თქვენი გადამცემი ყოველთვის იქნება ხელმისაწვდომი სულ მცირე ნახევარი დღით მაინც.

    AccountingStart day 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurst 5000 KBytes # გაატარებს ერთბაშად მაღალს, მაგრამ შეინარჩუნებს საშუალოს

The default open ports are listed below but keep in mind that, any port or ports can be opened by the relay operator by configuring it in torrc or modifying the source code. The default according to src/or/policies.c (line 85 and line 1901) from the source code release 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 *:*

მართალი ხართ. Tor-გადამცემი უფრო მეტ ბაიტს აგზავნის, ვიდრე პირიქით. თუმცა არის გამონაკლისებიც:

თუ თქვენ გახსნით თქვენს DirPort-ს, მაშინ Tor-ის კლიენტები მოგთხოვენ ცნობარის ასლს. მათი მოთხოვნა (HTTP GET) მეტად მცირეა, თუმცა პასუხი ზოგჯერ საკმაოდ დიდია. უმეტესად ეს განსაზღვრავს განსხვავებას აღრიცხვაში „ჩაწერილ“ ბაიტების რაოდენობასა და „წაკითხული“ ბაიტების რაოდენობას შორის.

კიდევ ერთი მცირე გამონაკლისი ჩნდება, როცა მოქმედებთ როგორც გამშვები კვანძი და კითხულობთ ცოტაოდენ ბაიტებს გამავალი კავშირიდან (მაგალითად, მყისიერი შეტყობინებების ან ssh-კავშირის სახით) და აქცევთ სრულ 512 ბაიტიან დანაყოფად, Tor-ქსელში გადასაგზავნად.

იხილეთ portforward.com მითითებებისთვის, თუ როგორ უნდა გადამისამართდეს პორტები NAT/როუტერის გამოყენებისას.

თუ თქვენი გადამცემი ეშვება შიდა ქსელში, პორტის გადამისამართებაა საჭირო. Forwarding TCP connections is system dependent but the firewalled-clients FAQ entry offers some examples on how to do this.

აგრეთვე, აქ მოცემულია მაგალითი, როგორ გაკეთდება ეს ყველაფერი GNU/Linux-ზე, როცა გამოიყენება iptables:

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

შეიძლება დაგჭირდეთ, შეცვალოთ „eth0“ თუ განსხვავებული გარე მაკავშირებელი გაქვთ (რაც ინტერნეტს უერთდება). დიდი ალბათობით მხოლოდ ერთი იქნება (გარდა საკუთარ თავთან დამაკავშირებლისა) ასე რომ, მისი აღმოჩენა რთული არ იქნება.

On relay search we show an amber dot next to the relay nickname when it is overloaded. This means that one or many of the following load metrics have been triggered:

Note that if a relay reaches an overloaded state we show it for 72 hours after the relay has recovered.

If you notice that your relay is overloaded please:

  1. Check https://status.torproject.org/ for any known issues in the "Tor network" category.

  2. Consider tuning sysctl for your system for network, memory and CPU load.

  3. Consider enabling MetricsPort to understand what is happening.

Tuning sysctl for network, memory and CPU load

TCP port exhaustion

If you are experiencing TCP port exhaustion consider expanding your local port range. You can do that with

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

ან

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

Keep in mind that tuning sysctl as described is not permanent and will be lost upon restart. You need to add the configuration to /etc/sysctl.conf or to a file in /etc/sysctl.d/ to make it permanent.

MetricsPort

To understand the well-being of Tor relays and the Tor network it is vital to provide and have access to relay metrics. Relay overload information has been added to relay descriptors since 0.4.6+ but it was not until Tor >= 0.4.7.1-alpha that an interface to the underlying relay metrics was available: the metrics port.

Enabling MetricsPort

Tor provides access to the metrics port via a torrc configuration option called MetricsPort.

It's important to understand that exposing the tor MetricsPort publicly is dangerous for the Tor network users, which is why that port is not enabled by default and its access has to be governed by an access policy. Please take extra precaution and care when opening this port, and close it when you are done debugging.

Let's assume you are the only user on a server that runs a Tor relay. You can enable the metrics port adding this to your torrc file:

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

And then you will be able to easily retrieve the metrics with:

# curl http://127.0.0.1:9035/metrics

which are by default in a Prometheus format.

Note: every user on that server will be able to access those relay metrics in the example above. In general, set a very strict access policy with MetricsPortPolicy and consider using your operating systems firewall features for defense in depth.

For a more detailed explanation about MetricsPort and MetricsPortPolicy see tor's man page.

MetricsPort output

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

Let's find out what some of these lines actually mean:

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

When a relay starts seeing "dropped", it is a CPU/RAM problem usually.

Tor is sadly single threaded except for when the "onion skins" are processed. The "onion skins" are the cryptographic work that needs to be done on the famous "onion layers" in every circuits.

When tor processes the layers we use a thread pool and outsource all of that work to that pool. It can happen that this pool starts dropping work due to memory or CPU pressure and this will trigger an overload state.

If your server is running at capacity this will likely be triggered.

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. We therefore don't use them anymore for that purpose starting with 0.4.6.9 and 0.4.7.4-alpha. However, we still keep DNS metrics around to give the relay operator insight into what is going on with their relay.

DNS timeout issues and errors only apply to Exit nodes.

tor_relay_load_oom_bytes_total{...}

An Out-Of-Memory invocation indicates a RAM problem. The relay might need more RAM or it is leaking memory. If you noticed that the tor process is leaking memory, please report the issue either via Tor gitLab or sending an email to the tor-relays mailing list.

Tor has its own OOM handler and it is invoked when 75%, of the total memory tor thinks is available, is reached. Thus, let's say tor thinks it can use 2GB in total then at 1.5GB of memory usage, it will start freeing memory. That is considered an overload state.

To estimate the amount of memory it has available, when tor starts, it will use MaxMemInQueues or, if not set, will look at the total RAM available on the system and apply this algorithm:

    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)

To avoid an overloaded state we recommend to run a relay above 2GB of RAM on 64bit. 4GB is advised, although of course it doesn't hurt to add more RAM if you can. Note: If you are running a powerful server with lots of RAM then you might end up in an overloaded state due to the default queue size limit of 8GB even though you still have plenty of RAM unused. Add an appropriate MaxMemInQueues entry to your torrc configuration in that case.

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.

მშვენიერია. სწორედ ამიტომ დავნერგეთ გამსვლელი კვანძის დებულებები.

თითოეულ Tor-გადამცემს გააჩნია გამსვლელი კვანძის დებულება, რომელიც განსაზღვრავს, რა სახის გამავალი კავშირებია დაშვებული და შეზღუდული ამ გადამცემზე. გამსვლელი კვანძის დებულებები მიეწოდება Tor-ის მომხმარებლებს ცნობარის მეშვეობით, შედეგად მომხმარებლები აღარ გამოიყენებენ გადამცემებს, რომლებსაც უარი აქვს გაცხადებული, გამავალ კავშირებზე. ამ გზით, თითოეულ გადამცემს შეუძლია მიუთითოს, რა მომსახურებებთან, მისამართებსა და ქსელებთან ექნება დაშვებული კავშირები, მოსალოდნელი უსიამოვნებებისა და არსებული გარემოებების გათვალისწინებით. Read the Support entry on issues you might encounter if you use the default exit policy, and then read Mike Perry's tips for running an exit node with minimal harassment.

გამსვლელი კვანძის ნაგულისხმევი დებულებით დაშვებულია წვდომა გავრცელებულ მომსახურებებთან (მაგ. ვებგვერდების მონახულება), მაგრამ შეზღუდულია ზოგიერთი საფრთხის შემცველი (მაგ. ფოსტა), აგრეთვე ისეთებიც, რომელთა დატვირთვასაც Tor-ქსელი შეიძლება ვერ გაუმკლავდეს (მაგ. ფაილების გაზიარების ნაგულისხმევი პორტები). თქვენი გამსვლელი კვანძის დებულების შეცვლა, შეგიძლიათ torrc ფაილის ჩასწორებით. თუ გსურთ შეზღუდოთ უმეტესი საფრთხის შემცველი კავშირები, მიუთითეთ „reject *:*“. ამ პარამეტრის დაყენებით, გადამცემი მონაცემებს მხოლოდ Tor-ქსელის შიგნით გაატარებს, მაგრამ არ დაუკავშირდება გარე საიტებს ან სხვა მომსახურებებს.

თუ დაუშვებთ გარე კავშირებს, დარწმუნდით რომ სახელების დამუშავება მოქმედია (ანუ თქვენ კომპიუტერს სწორად შეუძლია ინტერნეტმისამართების სწორად გამოყენება). თუ არის მისამართები, რომლებთან წვდომაც თქვენს კომპიუტერს არ შეუძლია (მაგალითად ქსელის ფარი ან ფილტრი ზღუდავს), გთხოვთ ნათლად გამორიცხოთ გამსვლელი კვანძის დებულებით თუ არადა Tor-მომხმარებლებსაც დააზარალებს.

Tor has partial support for IPv6 and we encourage every relay operator to enable IPv6 functionality in their torrc configuration files when IPv6 connectivity is available. ჯერჯერობით Tor საჭიროებს IPv4-მისამართებს გადამცემებზე, ასე რომ ამჟამად ვერ შეძლებთ გაუშვათ Tor-გადამცემი სისტემაზე, რომელსაც მხოლოდ IPv6-მისამართები გააჩნია.

ჩვენი მიზანია, Tor-გადამცემის გამართვა იყოს ადვილი და მოსახერხებელი:

  • არა უშავს, თუ თქვენი გადამცემი ზოგჯერ ხაზგარეთ იქნება. ცნობარები შეამჩნევს ამას მალევე და შეწყვეტს თქვენი გადამცემის მიწოდებას. მხოლოდ შეეცადეთ, რომ ამას ხშირი ხასიათი არ ჰქონდეს, ვინაიდან კავშირები, რომლებიც ამ გადამცემს იყენებს, მისი გათიშვისას გაწყდება.
  • თითოეულ Tor-გადამცემს გააჩნია გამსვლელი კვანძის დებულება, რომელიც განსაზღვრავს, რა სახის გამავალი კავშირებია დაშვებული და შეზღუდული ამ გადამცემზე. თუ არ გსურთ, ხალხი თქვენი გადამცემით გადიოდეს ინტერნეტში, შეგიძლიათ მიუთითოთ რომ მხოლოდ Tor-გადამცემეთან იყოს დაშვებული კავშირები.
  • თქვენი გადამცემი აკეთებს გამტარუნარიანობის შესაძლებლობების შეფასებას, შედეგად მაღალი გამტარუნარიანობის გადამცემები მეტ მომხმარებელს იზიდავს, ვიდრე დაბალი. მიუხედავად ამისა, დაბალი გამტარუნარიანობის გადამცემებიც დიდად გამოსადეგია.

BridgeDB implements six mechanisms to distribute bridges: HTTPS, Moat, Email, Telegram, Settings and Reserved. ხიდის გამშვებ პირებს შეუძლიათ იხილონ, რა საშუალებებს იყენებს მათი ხიდი, გადამცემთა საძიებლის მეშვეობით. Enter the bridge's <HASHED FINGERPRINT> in the form and click "Search".

Operators can also choose which distribution method their bridge uses. To change the method, modify the BridgeDistribution setting in the torrc file to one of these: https, moat, email, telegram, settings, lox, none, any. You can find a description of each distributor in the rdsys distributors documentation.

Read more on the Bridges post-install guide.

Tor ადგენს IP-მისამართს თქვენს კომპიუტერთან შეკითხვით და შემდეგ მისი ჰოსტის სახელის დამუშავებით. ხშირად, ბევრი ძველ მონაცემებს ინახავს თავის /etc/hosts ფაილში, რომელიც ძველ IP-მისამართზე მიუთითებს.

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.

ამასთან ერთად, თუ თქვენ ბევრი მისამართი გაქვთ, შესაძლოა გსურდეთ, მიუთითოთ „OutboundBindAddress“, რის შედეგადაც, გარე კავშირები წამოვა იმ IP-დან, რომლის საჩუქრად გაზიარებაც გაქვთ განზრახული სხვებისთვის.

  • არ გამოიყენოთ კრებულები Ubuntu-ს საცავიდან. არაა სათანადოდ განახლებული. მათი გამოყენების შემთხვევაში, არ იქნება უზრუნველყოფილი მდგრადობა და უსაფრთხოება.
  • დაადგინეთ თქვენი Ubuntu-ს ვერსია შემდეგი ბრძანების გაშვებით:
     ‪$ lsb_release -c
    
  • root-უფლებით, დაამატეთ შემდეგი სტრიქონები ფაილში /etc/apt/sources.list. შეცვალეთ „version“ იმ ვერსიით, რომელიც წინა საფეხურზე დაადგინეთ:
     deb https://deb.torproject.org/torproject.org version main
     deb-src https://deb.torproject.org/torproject.org version main
    
  • დაამატეთ gpg-გასაღები გამოყენებული კრებულების დამოწმებისთვის, შემდეგი ბრძანებებით:
     ‪$ curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
    
  • გაუშვით შემდეგი ბრძანებები ხელმოწერების დაყენებისა და შემოწმებისთვის:
     ‪$ sudo apt-get update
     ‪$ sudo apt-get install tor deb.torproject.org-keyring
    

ორი პარამეტრის დამატებაა შესაძლებელი torrc ფაილში:

BandwidthRate არის უმაღლესი დასაშვები გამტარუნარიანობა გრძელვადიანად (ბაიტი წამში). მაგალითად, შეგიძლიათ აირჩიოთ „BandwidthRate 10 MBytes“ წამში 10 მეგაბაიტი (სწრაფი კავშირისას) ან „BandwidthRate 500 KBytes“ წამში 500 კილობაიტი (მოკრძალებული სიჩქარისას). უმცირესი BandwidthRate პარამეტრად მითითებულია 75 კილობაიტი წამში.

BandwidthBurst არის ბაიტების მარაგი, როცა მოკლევადიან მონაკვეთებში მიმოცვლილი მონაცემები მეტია, ვიდრე BandwidthRate, თუმცა დროის გრძელვადიან მონაკვეთში ნარჩუნდება BandwidthRate. დაბალი სიხშირე და მაღალი ბიძგები უზრუნველყოფს საშუალო სიჩქარეს გრძელვადიანად, სამაგიეროდ, შესაძლებლობას იძლევა მეტი მონაცემების გატარებისა მაღალი დატვირთვის შემთხვევებისას, თუ დანარჩენ დროს მოთხოვნა საშუალოს არ აღწევს. მაგალითად, თუ აირჩევთ „BandwidthBurst 500 KBytes“ და იგივე იქნება თქვენი „BandwidthRate“, მაშინ არასდროს გადააჭარბებს 500 კილობაიტს წამში; მაგრამ, თუ არჩეული გექნებათ უფრო მაღალი BandwidthBurst (მაგალითად 5 მეგაბაიტი), გაატარებს მეტ ბაიტებს, სანამ მარაგი თავისუფალი ექნება.

თუ არათანაბარი კავშირი გაქვთ (ატვირთვა ნაკლებია ჩამოტვირთვაზე) როგორც კაბელის ინტერნეტზეა, BandwidthRate უნდა მიუთითოთ ნაკლები, უმცირეს გამტარუნარიანობაზე (ჩვეულებრივ, ატვირთვის გამტარუნარიანობაა მცირე). თუ არადა, მონაცემთა ბევრი ნაკრები დაიკარგება, მაღალი დატვირთვისას – კარგი იქნება თუ გამოცდით, რა მნიშვნელობებია მეტად მოსახერხებელი თქვენი კავშირისთვის. შემდეგ მიუთითებთ BandwidthBurst-ს იმავეს მნიშვნელობას რაც იქნება BandwidthRate.

Linux-ზე დაფუძნებულ Tor კვანძებს აქვთ კიდევ ერთი საშუალება: შესაძლებელია უპირატესობის მინიჭება სხვა კავშირისთვის, Tor-ით მიმოცვლილ მონაცემთა შედარებით, რის შედეგადაც Tor არ დააზარალებს მომხმარებლის პირად კავშირს. ამის გასაკეთებლად სკრიპტი განთავსებულია 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 მოცემულია ბაიტებში და არა ბიტებში.