Systemd:service.tor 启动太快

Systemd:service.tor 启动太快

我正在为我的脚本使用 tor 服务,但出现此错误:

 The job identifier is 17084 and the job result is failed.
Şub 26 03:12:11 Ugroon systemd[1]: tor.service: Start request repeated too quickly.
Şub 26 03:12:11 Ugroon systemd[1]: tor.service: Failed with result 'start-limit-hit'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░ 
░░ The unit tor.service has entered the 'failed' state with result 'start-limit-hit'.
Şub 26 03:12:11 Ugroon systemd[1]: Failed to start Anonymizing overlay network for TCP (multi-instance-master).

我正在使用 50 个线程

皮顿代码:

#!/usr/bin/python3

from os import system
from sys import argv
from concurrent.futures import ThreadPoolExecutor


system("service tor start")

def times(p):
    if p%15 == 0:    
        system("service tor restart && ./test.sh " + str(p) + " " + str(argv[1]) + " " + str(argv[2]))

    else:
        system("./test.sh " + str(p) + " " + str(argv[1]) + " " + str(argv[2])) 


for i in range(1000, 10000, 1):
    ThreadPoolExecutor(50).submit(times, i)

重击代码:

curl https://www.apple.com/ --socks5-hostname 127.0.0.1:9050 -H "A: $1 $2$3"

我尝试找到 tor 服务的配置文件,但找不到。我查看了 /etc/tor/torrc 文件和 /etc/systemd/system/multi-user.target.wants/ 目录,但找不到速率限制配置。我想每 15 秒更改一次 IP 并使用此 IP 发送curl 请求,但如您所见,我收到了此错误。

另外,我在 /etc/systemd/system/multi-user.target.wants/ 中有此文件: binfmt-support.service cron.servicenetworking.service nfs-client.target rsync.service smartmontools.service virtualbox-guest-utils。服务 console-setup.service ModemManager.service NetworkManager.service remote-fs.target rsyslog.service stunnel.target

注意:我已经在堆栈安全性、askubuntu 和 stackoverflow 上询问过这个问题,但我无法得到答复

编辑:我的实例配置:

图1

图2

日志ctl-xeu[电子邮件受保护]输出:

在此输入图像描述

答案1

阅读完您的评论后,我认为这或多或少可以归结为您如何使用 Tor。 Tor 在其目前的实现中旨在用作多实例服务。当您正在运行时service tor restartservice tor start 从现在起,tor 似乎不再提供init.d脚本(这对我来说是新的),您实际上只是被重定向到 systemd 单元文件tor.service

该文件旨在作为实例的主文件,在本例中意味着它根本不执行任何操作。正如你可以看到的

ExecStart=/bin/true
ExecReload=/bin/true

它只是执行 /bin/true ,其目的只是以状态 0(在 shell 中为 true)退出。

您需要做的就是运行tor-instance-create <instance name> 这将创建一个新的 Tor 实例。

然后您可以通过以下方式与该服务实例交互

systemctl <stop|start|restart|reload> tor@<instance name>

为了解决你的问题的后半部分,即为什么您收到错误

如果不运行到服务启动限制,则无法重复重新启动 systemd 服务,这正是最初生成错误的原因。当您使用实例时,这不会改变。

如果尚未配置为这样做,则在创建实例后,您应该进行修改ExecReload以准确反映您尝试执行的操作(重新启动服务)。

我们这样做是因为与systemctl start tor@<instance name>and不同systemctl restart tor@<instance name>,执行systemctl reload tor@<instance name>对执行次数没有限制。

您可以通过执行来做到这一点systemctl edit tor@<instance name> --full。您的最终结果可能如下所示:

[Unit]
# ....some preconfigured stuff...

[Service]
# ...more preconfigured stuff...
ExecReload=/bin/kill -HUP ${MAINPID}
# ...preconfigured stuff...

[Install]
# ...final preconfigured stuff...

进行必要的更改(或者如果不需要则不进行)后,您应该修改脚本以利用此更改;

#!/usr/bin/python3

from os import system
from sys import argv
from concurrent.futures import ThreadPoolExecutor


system("systemctl start tor@<instance name>")

def times(p):
    if p%15 == 0:    
        system("systemctl reload tor@<instance name> && ./test.sh " + str(p) + " " + str(argv[1]) + " " + str(argv[2]))

    else:
        system("./test.sh " + str(p) + " " + str(argv[1]) + " " + str(argv[2])) 


for i in range(1000, 10000, 1):
    ThreadPoolExecutor(50).submit(times, i)

编辑:如果tor@<instance name>.service自行配置,Type=oneshot请在评论中告诉我,我将调整答案

相关内容