从 torify 启动的 python 脚本连接到本地主机 mongodb

Connect to localhost mongodb from python script started by torify

当我尝试从我的 python 脚本连接到 mongodb 时,我多次看到此警告并最终出现错误:

[Dec 13 11:58:56] WARNING torsocks[8133]: [connect] Connection to a local address are denied since it might be a TCP DNS query to a local DNS server. Rejecting it for safety reasons. (in tsocks_connect() at connect.c:177)

pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 1] Operation not permitted

我使用 torify 命令来启动我的命令 - torify python myscript.py。没有 torify 它有效。

我做错了什么?在另一台机器上也是一样的情况。

我找到了这个案例的解决方案。我必须先创建一个隐藏服务。为此,我必须将此行添加到我的 tor 配置文件 (/etc/tor/torrc):

HiddenServiceDir /tmp/tormongo
HiddenServicePort 27017 127.0.0.1:27017

之后我需要重新启动我的 tor 服务。如果一切正确,该文件夹必须出现在 /tmp 中。在此文件夹中将是新文件 hostname,其字符串类似于 sgwqrpepus3lwcke.onion。这是我可以在 mongodb 连接设置中代替 localhost 使用的主机。

或者我可以为此设置添加一个新的 ENV 变量,并使用如下命令在每个脚本启动时设置它:

export DB_HOST=$(cat /tmp/tormongo/hostname) && torify python /var/www/myproject/myscript.py