gpt4 book ai didi

docker - 无法连接到 dockerized tor 代理

转载 作者:行者123 更新时间:2023-12-04 18:18:32 26 4
gpt4 key购买 nike

在 Lubuntu 上,我可以通过安装它然后连接到它的 socks 代理来使用 tor,但在 docker 上使用 alpine 似乎并不那么容易。
由于我按原样离开了我的/etc/tor/torrc,它只包含被注释掉的行。所以对于 alpine,我只使用了 torrc.sample文件也只有被注释掉的行。

这是我的Dockerfile :

FROM alpine:latest
RUN apk update && apk upgrade && apk add tor curl && rm /var/cache/apk/* && cp /etc/tor/torrc.sample /etc/tor/torrc
EXPOSE 9050
USER tor
CMD /usr/bin/tor -f /etc/tor/torrc

然后我就跑了:
$ sudo docker build -t tor .
$ sudo docker run --name tor -p 9050:9050 tor
$ curl -x socks5://localhost:9050 -k https://23.128.64.134/ip
curl: (7) Unable to receive initial SOCKS5 response.
$ curl -x socks4://localhost:9050 -k https://23.128.64.134/ip
curl: (7) Failed to receive SOCKS4 connect request ack.

但如您所见,我无法连接。既不通过 socks4 也不通过 socks5。

我似乎无法弄清楚为什么这不起作用。我已经尝试过使用不同的端口和主机名(127.0.0.1 而不是 localhost),但没有任何效果。

我究竟做错了什么?

编辑:

有趣的是,这似乎可行:
$ sudo docker exec -ti tor curl -x socks5://localhost:9050 -k https://23.128.64.134/ip
185.220.101.69

(185.220.101.69 确实是一个 Tor 导出节点 IP 地址)

那么这里有什么问题呢?为什么我不能从外部访问它?偶 nmap报告它可以看到端口(在容器外运行时):
9050/tcp open  tor-socks

编辑2:
我添加了 -v - 标记 curl 并通过 echo "Log info stdout" > /etc/tor/torrc 启用更详细的 tor 登录.

当我从容器外部运行 curl 命令时,tor 日志根本没有改变。 curl 输出也没有显示任何有用的信息:
$ curl -v -x socks5://localhost:9050 -k https://23.128.64.134/ip
* Trying ::1:9050...
* TCP_NODELAY set
* SOCKS5 communication to 23.128.64.134:443
* Unable to receive initial SOCKS5 response.
* Closing connection 0
curl: (7) Unable to receive initial SOCKS5 response.

$ curl -v -x socks5://127.0.0.1:9050 -k https://23.128.64.134/ip
* Trying 127.0.0.1:9050...
* TCP_NODELAY set
* SOCKS5 communication to 23.128.64.134:443
* Unable to receive initial SOCKS5 response.
* Closing connection 0
curl: (7) Unable to receive initial SOCKS5 response.

最佳答案

我设法弄清楚了。问题是默认情况下 Tor 不会绑定(bind)到所有与 Docker 不兼容的接口(interface)(如 0.0.0.0 )。

这可以通过添加 SocksPort 0.0.0.0:9050 来解决。到/etc/tor/torrc .

所以解决方案是:

FROM alpine:latest
RUN apk update && apk upgrade && \
apk add tor curl && \
rm /var/cache/apk/* && \
cp /etc/tor/torrc.sample /etc/tor/torrc && \
echo "SocksPort 0.0.0.0:9050" > /etc/tor/torrc
EXPOSE 9050
USER tor
CMD /usr/bin/tor -f /etc/tor/torrc

然后一切都按预期工作:
$ sudo docker build -t tor .
$ sudo docker run --name tor -p 9050:9050 tor
$ curl -x socks5://localhost:9050 https://ifconfig.io/ip
190.216.2.136

关于docker - 无法连接到 dockerized tor 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57825953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com