dante Socks5服务器
Dante是一个功能齐全的Socks5服务端程序,Socks5协议可以用于对TCP和UDP流量进行代理,通常用于内部网络访问等场景,这篇笔记我们简单介绍Dante的搭建和使用。
Ubuntu下安装Dante服务端程序
我们直接从APT源安装即可。
apt install dante-server
配置Dante服务
安装完成后还无法启动,我们需要编辑/etc/danted.conf配置文件,以下是一个参考例子。
logoutput: syslog
internal: 0.0.0.0 port = 10808
external: ens33
clientmethod: none
socksmethod: none
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
log: error connect
}
配置中,logoutput指定日志的输出位置,我们这里将日志写入syslog,这里也可以指定一个日志文件路径。internal配置了Socks5服务器监听的地址和TCP端口,这里我们配置为0.0.0.0表示在本机所有地址上监听,external配置代理出口的网络接口名。socksmethod配置Socks5服务器的认证方式,我们这里将其设置为none表示不开启认证,任何人都可以连接。最后的client pass和socks pass是允许的客户端地址和目标地址,我们这里将其配置为允许任何地址连接,其中的log字段指定记录哪些日志,error connect表示记录错误日志和Socks5协议的CONNECT指令日志。
注意:Dante这个软件比较古老,它的配置文件必须使用Unix换行符\n,否则将无法启动!
启动Dante服务
配置完成后,我们就可以启动Dante服务了,Ubuntu下可以执行以下命令使用Systemd启动服务。
systemctl restart danted
我们可以用以下命令查看Dante服务的状态。
systemctl status danted
测试Socks5服务器
我们可以使用curl工具测试我们的Socks5服务器是否好用,下面是一个例子。
curl -v -x socks5://192.168.1.130:10808 https://www.google.com
命令中,我们的Socks5服务端就部署在192.168.1.130:10808下,因此使用-x参数指定代理地址,然后正常访问任意一个网站即可。如果Dante代理服务器能够正常工作,我们可以看到返回的HTML页面代码。
配置用户名和密码
Dante作为Socks5服务器支持多种认证方式,不过最常用的还是用户名密码方式认证。我们将配置文件中的socksmethod改为username即可开启用户名和密码认证。
socksmethod: username
用户名和密码我们使用系统用户即可,这里我们的用户名和密码都是ubuntu。
curl -v -x socks5://ubuntu:ubuntu@192.168.1.130:10808 https://www.google.com
此外,我们也可以单独创建不能登录Shell的用户来专门用户Socks5的认证,这里就不多介绍了。
当然,Socks5协议设计的比较古早了,它的用户名密码认证方式都是通过TCP协议明文传输的,很容易被监听或发起中间人攻击,实际上Dante也支持其它的认证方式,具体可以参考官方文档。