SOCKS v5请求发送当前用户而不是用户

时间:2018-01-24 15:17:35

标签: java docker proxy socks dante

我的问题:

1)如何在没有身份验证的情况下将dante用作SOCKS v5代理,以便在docker-compose网络中将amqp消息从生产者发送到RabbitMQ?

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

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

  1. 代理服务器(Dante)
  2. RabbitMQ服务器。
  3. 消息制作人。
  4. 我想通过Dante将我的消息代理到rabbitMQ。

    为了达到这个目的,我使用以下选项启动了我的制作人: -DsocksProxyHost=dante

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

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

        app_1     | Connecting to proxy host: dante
        app_1     | User: socksuser with password: sockspass
        app_1     |
        dante_1   | Jan 24 15:01:41 (1516806101.263639) sockd[7]: info: pass(1): 
                      tcp/accept [: 172.19.0.4.40910 172.19.0.3.1080
        dante_1   | Jan 24 15:01:41 (1516806101.265226) sockd[7]: info: block(1): 
                      tcp/accept ]: 172.19.0.4.40910 172.19.0.3.1080: 
                      error after reading 11 bytes in 0 seconds: 
                      system password authentication 
                      failed for user "root"
    
        app_1     | java.net.SocketException: SOCKS : authentication failed
        app_1     |     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:473)
    

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

1 个答案:

答案 0 :(得分:0)

在实际身份验证之前,SOCKS5客户端与SOCKS5服务器之间的协商同意用于SOCKS5身份验证的方法。

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