×

VPS 手动搭建 Socks5 协议(Dante)—— 完整技术教程

hqy hqy 发表于2025-10-20 18:48:48 浏览6 评论0

抢沙发发表评论

在很多运维、开发和安全测试场景中,需要一个可控、支持用户名认证、日志审计的 S5。Dante 是成熟稳定的 Socks 实现,适合用于企业或个人的长期部署。本文不使用一键脚本,每一步都手工完成并解释原因,便于读者学会底层原理并能扩展。

文章面向技术读者,带原理解释、操作步骤、配置说明、常见问题与进阶方案。??
本文防失联,移步知乎:


VPS 手动搭建 Socks5 协议(Dante)—— 完整技术教程 - W不懂安全的文章 - 知乎https://zhuanlan.zhihu.com/p/1963650776472744216
适用场景举例:

  • 多用户dài lǐ服务(分配账号)
  • 测试网络连通性与透传(TCP/UDP)
  • 作为链路中的一段dài lǐ,结合其他dài lǐ实现链式跳转。

前置准备 ✅

  • VPS:Ubuntu 20.04 或 22.04
  • 推荐:1 vCPU / 1GB RAM 起步
  • 系统包索引已更新:sudo apt update

示例:检查系统并更新包索引



uname -a          # 查看内核与系统信息lsb_release -a     # 查看 Ubuntu 版本sudo apt update && sudo apt upgrade -y
S5协议要点?

  • 工作层次:S5 位于应用层,为客户端提供一个通用的dài lǐ隧道,支持 TCP/UDP。

  • 认证方式:可无认证或用户名/密码认证(Dante 支持多种方式)。

  • 握手流程(简化):客户端 -> dài lǐ 握手(协商认证方式) -> 验证 -> dài lǐ建立目标连接 -> 数据转发。

  • 与 HTTP dài lǐ差异:HTTP dài lǐ理解 HTTP 协议;S5 是通用的字节流转发,适合任意 TCP(甚至 UDP)流量。


VPS安装搭建Dante?️
安装Dante


sudo apt updatesudo apt install dante-server -y
Dante 在 Debian/Ubuntu 的官方仓库中可直接安装,避免从源码编译导致依赖问题。若需要最新版,可考虑源码编译,但本文以仓库安装为主,侧重配置。
图片
主要文件位置:

  • 主配置: /etc/danted.conf
  • 日志:/var/log/danted.log
  • systemd 服务单元:/lib/systemd/system/danted.service

配置详解(/etc/danted.conf)每一项解释?




























# /etc/danted.conf# 日志输出logoutput: /var/log/danted.log# 监听接口:internal 为 客户端连接的接口internal: 0.0.0.0 port = 1080# external 指对外连接出站使用的网络接口(替换为你的网卡名)external: eth0# 认证方法:username 表示使用操作系统用户作为认证来源method: username# 非特权进程运行用户(降低风险)user.notprivileged: nobodyuser.privileged: rootuser.libwrap: nobody# 客户端访问控制(允许来自任意 IP 的客户端)client pass {    from: 0.0.0.0/0 to: 0.0.0.0/0    log: connect disconnect error}# 允许 Socks 代理转发(connect 命令)socks pass {    from: 0.0.0.0/0 to: 0.0.0.0/0    command: connect    log: connect disconnect error}# 默认拒绝所有其他未匹配规则block {    log: connect error}
创建认证用户与安全设计?
创建专用认证用户:




sudo adduser --disabled-login --gecos "" proxyuser# 或者更简单的:# sudo useradd -m proxyuser# sudo passwd proxyuser
--disabled-login 会创建用户但不允许交互式登录(如果需要可去掉),你依然可以为用户设置密码用于 S5 认证。
图片
用户名是:proxyuser,密码就是在设置完成之后,执行:passwd proxyuser后输出的两次密码,输入的密码不会显示,默认都是不显的,不要误以为没有输进去。
启动服务并验证运行状态 ▶️
启动服务:



sudo systemctl enable dantedsudo systemctl start dantedsudo systemctl status danted
正常情况下 systemctl status 会显示 active (running)。
如果状态是失败的。
图片
那就继续跟着继续操作?
先把 danted.conf配置文件里的内容清空,然后将以下配置内容粘贴进去。(假设你的VPS网卡是 eth0,可以用 ip a 确认)
























# /etc/danted.conf
# 监听的内部接口(即接收 socks5 请求的网卡)internal: eth0 port = 1080
# 外部出口网卡(用于访问外网)external: eth0
# SOCKS 版本socksmethod: username # 需要用户名密码登录user.notprivileged: nobody
# 客户端访问控制clientmethod: noneclient pass {    from: 0.0.0.0/0 to: 0.0.0.0/0    log: connect disconnect error}
# 服务端访问控制socks pass {    from: 0.0.0.0/0 to: 0.0.0.0/0    log: connect disconnect error}
保存退出之后重启一下服务,然后检查一下服务状态是否是 active (running)
测试是否成功,在VPS上执行:

curl -x socks5://用户名:密码@你的VPS_IP:1080 https://ipinfo.io
能返回JSON格式的内容就是成功了。
图片
之后在本地电脑使用指纹浏览器,填写S5的配置信息,然后测试连接,能够连接成功证明没有问题。
图片
其他使用方法这里我就不演示了,不管是指纹浏览器,还是普通浏览器插件使用,又或者是其他用途,都是可以正常使用的。
Fail2Ban防爆破示例:
Dante 本身日志包含认证失败信息,我们可以写一个 Fail2Ban 过滤器来封禁暴力尝试 IP。
1.安装:

sudo apt install fail2ban -y
2.新建 filter 文件 /etc/fail2ban/filter.d/danted.conf,复制粘贴以下配置内容



[Definition]failregex = .*authentication from <HOST>.*failed.*ignoreregex =
3.在 /etc/fail2ban/jail.local 添加:







[danted]enabled = trueport = 1080filter = dantedlogpath = /var/log/danted.logmaxretry = 3bantime = 3600
4.重启 fail2ban:

sudo systemctl restart fail2ban
后边还有进阶方案,使用Nginx stream将S5封装为TLS。
S5 原生不加密。可用 Nginx 的 stream 模块把流量做 TLS 封装,客户端需要使用 stunnel 或类似工具连接到 Nginx,再由 Nginx 转发到 Dante。


打赏

本文链接:https://kinber.cn/post/5727.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客