2

我的问题:

1) 如何在 docker-compose 网络中将 dante 用作 SOCKS v5 代理,无需身份验证即可将 amqp 消息从生产者发送到 RabbitMQ?

2)我以前从未使用过 SOCKS,所以我不知道我想做的是愚蠢还是不应该工作,是吗?

我目前正在尝试建立一个包含三个部分的网络:

  1. 代理服务器 (Dante)
  2. 一个 RabbitMQ 服务器。
  3. 消息生产者。

我想通过 Dante 将我的消息代理到 rabbitMQ。

为了实现这一点,我使用以下选项开始了我的制作人: -DsocksProxyHost=dante

我正在使用 docker compose 脚本运行应用程序,并且可以验证我的生产者是否连接到主机dante。但是,我的制作人总是尝试连接当前用户的凭据,即 root(如果我更改用户,则为 socksuser),忽略选项: -Djava.net.socks.username=socksuser -Djava.net.socks.password=sockspass

我可以验证是使用 docker compose 的以下输出设置的:

    app_1 | 连接代理主机:dante
    app_1 | 用户:socksuser 密码:sockspass
    app_1 |
    但丁_1 | 1 月 24 日 15:01:41 (1516806101.263639) sockd[7]: info: pass(1):
                  tcp/接受 [: 172.19.0.4.40910 172.19.0.3.1080
    但丁_1 | 1 月 24 日 15:01:41 (1516806101.265226) sockd[7]: info: block(1):
                  tcp/接受]: 172.19.0.4.40910 172.19.0.3.1080:
                  在 0 秒内读取 11 个字节后出错:
                  系统密码认证
                  用户“root”失败

    app_1 | java.net.SocketException:SOCKS:身份验证失败
    app_1 | 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:473)

我使用的 dante docker 镜像是wernight/dante,提供的默认配置表明每个人都可以使用代理。

4

1 回答 1

0

用于 SOCKS5 身份验证的方法由 SOCKS5 客户端和 SOCKS5 服务器在实际身份验证之前协商确定。

因此,如果客户端正在启动身份验证,这表明服务器需要它,我会检查 SOCKS5 服务器配置。

于 2018-01-26T07:53:09.280 回答