Proxy 通过Dante socks5代理服务器进行的电报呼叫不工作
我把Ubuntu 16.04上的Dante 1.4误认为是电报的socks5代理 聊天功能正常,但语音通话功能不正常,无法“连接” 为了代理电报语音通信,我需要配置一些特殊的东西吗 我使用一个非特权(>1024)TCP/UDP端口+登录名+密码进行连接 谢谢 UPD:当我打电话给某人时,那是一块木头:Proxy 通过Dante socks5代理服务器进行的电报呼叫不工作,proxy,telegram,socks,dante,Proxy,Telegram,Socks,Dante,我把Ubuntu 16.04上的Dante 1.4误认为是电报的socks5代理 聊天功能正常,但语音通话功能不正常,无法“连接” 为了代理电报语音通信,我需要配置一些特殊的东西吗 我使用一个非特权(>1024)TCP/UDP端口+登录名+密码进行连接 谢谢 UPD:当我打电话给某人时,那是一块木头: Apr 15 23:05:38 (1523736338.510915) danted[22977]: info: pass(1): udp/udpassociate [: username%USE
Apr 15 23:05:38 (1523736338.510915) danted[22977]: info: pass(1): udp/udpassociate [: username%USER@0.0.0.0.0 192.168.1.30.36562
Apr 15 23:08:33 (1523736513.020190) danted[22989]: info: pass(1): udp/udpassociate [: username%USER@0.0.0.0.0 192.168.1.30.49065
我可以在目标设备上接听呼叫,但连接正在循环,30秒后出现错误。您应该在电报设置中启用代理呼叫。允许客户端的语音通信 袜子通行证{ 从:0.0.0.0/0到:0.0.0.0/0 命令:udpreply 日志:连接断开连接错误 socksmethod:username }
iptables-A INPUT-p udp-m多端口--dports 1024:65535-j ACCEPT我也遇到了同样的问题。找到了解决方案。 您必须向conf文件添加udpassociate bindpreply udpreply命令。这是我的conf文件,用于语音通话
logoutput: syslog /var/log/danted.log
internal: ip port = 1080
external: ip
socksmethod: username
user.privileged: root
user.unprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: bind connect udpassociate bindreply udpreply
log: error connect
}
用socks代理UDP比看起来要复杂一些,所以让我们从头开始 电报呼叫。Socks5定义了以下UDP中继顺序:
UDP关联
请求,其中包含客户端的源地址和端口,用于将UDP数据报发送到socks5服务器。它们可能是零(在电报中是)(第4节)UDP关联
响应,其中包含客户端应发送要中继的数据报的地址和端口(第6节)udpassociate
命令0/0
:
socks pass {
from: 0.0.0.0/0
to: 0.0.0.0/0
# udp.portrange: 40000-45000
command: udpassociate
log: error connect disconnect
}
udpreply
(这是实际的中继,上面的第4步)也应该允许每个人:
socks pass {
from: 0.0.0.0/0
to: 0.0.0.0/0
command: udpreply
log: error connect disconnect
}
40000-45000
),并将UDP.portrange:40000-45000
行添加到udpassociate
块中(参见第一点中注释掉的示例)。然后Dante将仅绑定该范围内的UDP端口UDP ASSOCIATE
请求时返回的目标地址将是本地IP,而不是外部IP。客户端不太可能访问本地IP,因此发送的数据报将被静默地丢弃
不幸的是,Dante使用TCP连接的目标地址作为客户端应向其发送UDP数据报的地址(请参阅)。NAT将该地址从外部地址更改为本地地址,因此Dante认为客户端可以使用该目标地址访问代理的假设被打破
一个可能的解决方案(不涉及修补Dante)是使用iptables将目标地址从本地更改为外部地址(假设已知且不变):
这个问题与编程有什么关系?我在谷歌上发现了一个被作者删除的问题。我在想他找到了解决办法。我在上注册,以便在私人信息中询问他,但发现没有PM。所以我问了同样但修改过的问题,仅此而已。我测试了其他socks5代理:V2ray和3proxy:everywhere调用不起作用。所以我想我可以在这里问低级网络开发人员,不要打我,你可以显示dante配置吗?你看到日志了吗?当然,我已经启用了它。但它阻碍了udp/udpassociate步骤。这里是它必须如何根据官方手册(最后一页)你的配置是不是为我工作。除了内部和外部接口之外,其他一切都是一样的。端口1080已打开。有什么想法吗?我也是。。。通话没有进展,只是打电话,交换钥匙,30秒超时后连接失败也许你们使用的是不同的版本?我的是1.4.1,我是从deb软件包安装的。
# 203.0.113.12 – the external IP
# 1080/tcp - Dante TCP port
# 40000:45000 – Dante UDP portrange
iptables -t nat -A PREROUTING -p tcp --dport 1080 -j DNAT --to-destination 203.0.113.12
iptables -t nat -A PREROUTING -p udp --dport 40000:45000 -j DNAT --to-destination 203.0.113.12
# If external address is not added to any network device on that
# machine, then add it to the loopback interface, so the kernel
# would know where to route the DNATed packets:
ip addr add 203.0.113.12/32 dev lo