剪藏#W不懂安全#剪藏

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

2025 年 10 月 22 日1 分钟
分享Twitter / XTelegram微博

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

文章面向技术读者,带原理解释、操作步骤、配置说明、常见问题与进阶方案。🔧🧠

本文防失联,移步知乎:

JAVASCRIPT
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

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

JAVASCRIPT
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

JAVASCRIPT
sudo apt update
sudo apt install dante-server -y

Dante 在 Debian/Ubuntu 的官方仓库中可直接安装,避免从源码编译导致依赖问题。若需要最新版,可考虑源码编译,但本文以仓库安装为主,侧重配置。

Notion image

主要文件位置:

  • 主配置: /etc/danted.conf

  • 日志:/var/log/danted.log

  • systemd 服务单元:/lib/systemd/system/danted.service

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

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

创建认证用户与安全设计🔐

创建专用认证用户:

JAVASCRIPT
sudo adduser --disabled-login --gecos "" proxyuser
# 或者更简单的:
# sudo useradd -m proxyuser
# sudo passwd proxyuser

--disabled-login 会创建用户但不允许交互式登录(如果需要可去掉),你依然可以为用户设置密码用于 S5 认证。

Notion image

用户名是:proxyuser,密码就是在设置完成之后,执行:passwd proxyuser后输出的两次密码,输入的密码不会显示,默认都是不显的,不要误以为没有输进去。

启动服务并验证运行状态 ▶️

启动服务:

JAVASCRIPT
sudo systemctl enable danted
sudo systemctl start danted
sudo systemctl status danted

正常情况下 systemctl status 会显示 active (running)。

如果状态是失败的。

Notion image

那就继续跟着继续操作👇

先把 danted.conf配置文件里的内容清空,然后将以下配置内容粘贴进去。(假设你的VPS网卡是 eth0,可以用 ip a 确认)

JAVASCRIPT
# /etc/danted.conf

# 监听的内部接口(即接收 socks5 请求的网卡)
internal: eth0 port = 1080

# 外部出口网卡(用于访问外网)
external: eth0

# SOCKS 版本
socksmethod: username # 需要用户名密码登录
user.notprivileged: nobody

# 客户端访问控制
clientmethod: none
client 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上执行:

JAVASCRIPT
curl -socks5://用户名:密码@你的VPS_IP:1080 https://ipinfo.io

能返回JSON格式的内容就是成功了。

Notion image

之后在本地电脑使用指纹浏览器,填写S5的配置信息,然后测试连接,能够连接成功证明没有问题。

Notion image

其他使用方法这里我就不演示了,不管是指纹浏览器,还是普通浏览器插件使用,又或者是其他用途,都是可以正常使用的。

Fail2Ban防爆破示例:

Dante 本身日志包含认证失败信息,我们可以写一个 Fail2Ban 过滤器来封禁暴力尝试 IP。

1.安装:

JAVASCRIPT
sudo apt install fail2ban -y

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

JAVASCRIPT
[Definition]
failregex = .*authentication from <HOST>.*failed.*
ignoreregex =

3.在 /etc/fail2ban/jail.local 添加:

JAVASCRIPT
[danted]
enabled = true
port = 1080
filter = danted
logpath = /var/log/danted.log
maxretry = 3
bantime = 3600

4.重启 fail2ban:

JAVASCRIPT
sudo systemctl restart fail2ban

后边还有进阶方案,使用Nginx stream将S5封装为TLS。

S5 原生不加密。可用 Nginx 的 stream 模块把流量做 TLS 封装,客户端需要使用 stunnel 或类似工具连接到 Nginx,再由 Nginx 转发到 Dante。

这里我就不演示进阶方案了,可自行问AI。

本期内容到此结束。

三连加关注,追文不迷路。

Notion image

Notion image

原文地址: https://mp.weixin.qq.com/s?__biz=MzkyNzYzNTQ2Nw==&mid=2247485429&idx=1&sn=c8c0ec6f8708fa65987c177ca029af2e&chksm=c33c54b532fdf93c1b667ac6330fe2f2084518cf021eae063eda8a0feaa6f646a9d18e4d690a&mpshare=1&scene=1&srcid=1022Kakqja476nlebgHXqvMQ&sharer_shareinfo=f7f5cde4aa8d78c17ca402db11b9a187&sharer_shareinfo_first=f7f5cde4aa8d78c17ca402db11b9a187#rd

相关文章