跳转到内容
Guides 3 分钟阅读 976 次浏览

Dante

在 Linux 上搭建 Dante SOCKS5 代理服务器的详细指南,涵盖安装、配置与测试,实现安全的网络访问。

SOCKS5
Dante

在 Linux 上使用 Dante 搭建 SOCKS5 代理服务器,需要安装 dante-server 软件包,配置 /etc/danted.conf 来定义网络接口、认证方式和访问规则,然后启动 danted 服务。Dante 作为 SOCKS 服务器运行,在客户端与目标地址之间转发网络流量,提升网络安全性并实现对受限资源的访问。

前置条件

开始之前,请确认以下几点:

  • 一台具备 root 或 sudo 权限的 Linux 服务器(例如 Debian、Ubuntu、CentOS、RHEL、Fedora)。
  • 对 Linux 命令行和网络概念有基本了解。
  • 一个供代理监听的网络接口(internal)和一个用于出站连接的接口(external)。二者可以是同一个。

安装

安装适用于您所用 Linux 发行版的 Dante 服务端软件包。

Debian/Ubuntu

sudo apt update
sudo apt install dante-server

RHEL/CentOS/Fedora

sudo dnf install dante-server # 适用于 Fedora/RHEL 8+
# 或者用于较旧的 CentOS/RHEL 7:
sudo yum install dante-server

配置

Dante 的主配置文件是 /etc/danted.conf。默认文件中可能包含示例配置;通常最好先备份原文件,再从一份精简、干净的配置开始。

sudo mv /etc/danted.conf /etc/danted.conf.bak
sudo nano /etc/danted.conf

基本配置结构

一份最小化的 danted.conf 需要定义监听接口(internal)、出站接口(external)以及基本访问规则。

logoutput: /var/log/danted.log
internal: 0.0.0.0 port=1080
external: eth0 # 将 eth0 替换为您服务器的外网网络接口

socksmethod: none
user.privileged: root
user.notprivileged: nobody

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error connect disconnect
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error connect disconnect
}

各指令说明:

  • logoutput:指定日志文件路径。
  • internal:定义 Dante 监听客户端入站连接的网络接口和端口。
    • 0.0.0.0 表示绑定到所有可用网络接口。
    • port=1080 是标准的 SOCKS 端口。
    • 您也可以指定具体的 IP 地址(例如 internal: 192.168.1.10 port=1080)。
  • external:定义 Dante 连接目标地址时使用的出站网络接口。请将 eth0 替换为服务器实际的公网或出站接口(例如 ens3enp0s3)。
  • socksmethod:指定 SOCKS 客户端可用的认证方式。none 表示不认证。
  • user.privileged:Dante 执行特权操作(例如绑定低位端口)时使用的用户。
  • user.notprivileged:初始化完成后,Dante 执行非特权操作时切换到的用户。
  • client pass 规则:控制哪些客户端可以连接到 Dante 服务器。
    • from: 0.0.0.0/0 允许来自任意 IP 地址的连接。出于安全考虑请加以限制。
    • to: 0.0.0.0/0 指定客户端连接的目标(在此语境下始终是代理自身)。
  • socks pass 规则:控制 SOCKS 客户端可以通过代理访问哪些目标。
    • from: 0.0.0.0/0 指已成功认证或通过客户端规则的客户端。
    • to: 0.0.0.0/0 允许连接到任意目标。出于安全考虑请加以限制。
    • log: error connect disconnect 启用连接事件日志。

认证方式

Dante 支持多种认证方式。最常见的是 none(不认证)和 username(用户名/密码)。

1. 无认证(匿名)

该方式适用于可信的内部网络,即所有客户端都已知且被授权无需凭据即可使用代理。不建议用于面向公网的代理。

# ...(基本配置的其余部分)
socksmethod: none

client pass {
    from: 192.168.1.0/24 to: 0.0.0.0/0 # 限制为指定子网
    log: error connect disconnect
}

socks pass {
    from: 192.168.1.0/24 to: 0.0.0.0/0 # 该子网的客户端可访问任意目标
    log: error connect disconnect
}
2. 用户名/密码认证

这是 SOCKS5 代理最常见也最推荐的方式,尤其是在客户端来自外部或不可信时。Dante 使用系统用户进行认证。

步骤:

  1. 为代理创建一个系统用户。出于安全考虑,不要创建家目录,也不要分配 shell。
    bash sudo useradd -r -s /bin/false proxyuser sudo passwd proxyuser # 输入并确认一个强密码
    如需更多用户,重复以上操作。

  2. 修改 danted.conf
    ```
    logoutput: /var/log/danted.log
    internal: 0.0.0.0 port=1080
    external: eth0

    socksmethod: username # 启用用户名/密码认证
    user.privileged: root
    user.notprivileged: nobody

    client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error connect disconnect
    }

    socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    socksmethod: username # SOCKS 连接需要用户名/密码
    log: error connect disconnect
    }
    ``socks pass规则中的socksmethod: username` 指令可确保只有通过认证的用户才能使用该代理。

3. 基于 IP 的认证

该方式允许特定 IP 地址或子网无需用户名/密码即可使用代理,并可与 username 认证组合使用。

# ...(配置的其余部分)
socksmethod: username # 允许使用用户名/密码作为可选方式

client pass {
    from: 192.168.1.0/24 to: 0.0.0.0/0 # 允许指定子网免认证
    log: error connect disconnect
}

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0 # 允许其他所有客户端,但要求认证
    socksmethod: username
    log: error connect disconnect
}

socks pass {
    from: 192.168.1.0/24 to: 0.0.0.0/0 # 该子网的客户端可访问任意目标(无需认证)
    log: error connect disconnect
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0 # 通过认证的客户端可访问任意目标
    socksmethod: username
    log: error connect disconnect
}

在这种配置下,来自 192.168.1.0/24 的客户端无需认证,而其他所有客户端都必须提供用户名和密码。

防火墙配置

配置好 Dante 之后,在系统防火墙中开放 SOCKS 端口(默认 1080),以允许入站连接。

Firewalld(CentOS/RHEL/Fedora)

sudo firewall-cmd --permanent --add-port=1080/tcp
sudo firewall-cmd --reload

UFW(Debian/Ubuntu)

sudo ufw allow 1080/tcp
sudo ufw enable # 如果 UFW 尚未启用

服务管理

完成配置和防火墙调整后,启动并设置开机自启 Dante 服务。

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

检查服务状态,确认其运行时没有报错。查看 /var/log/danted.log 排查配置问题。

测试代理

使用一台客户端机器测试 SOCKS5 代理。

使用 curl(不带认证)

curl -x socks5://YOUR_SERVER_IP:1080 http://ifconfig.me/ip

输出应为服务器的公网 IP 地址,说明流量已经过代理转发。

使用 curl(带用户名/密码认证)

curl -x socks5://proxyuser:your_password@YOUR_SERVER_IP:1080 http://ifconfig.me/ip

proxyuseryour_password 替换为先前配置的凭据。

使用 proxychains(Linux 客户端工具)

  1. 安装 proxychains
    bash sudo apt install proxychains4 # Debian/Ubuntu sudo dnf install proxychains-ng # RHEL/CentOS/Fedora

  2. 配置 proxychains.conf
    编辑 /etc/proxychains.conf~/.proxychains/proxychains.conf
    注释掉 strict_chain,取消注释 dynamic_chain
    在文件末尾添加您的代理服务器信息:

    ```

    ...(其他 proxychains 配置)

    dynamic_chain

    strict_chain

    random_chain

    round_robin_chain

    dynamic_chain # 使用动态链,灵活性更好

    [ProxyList]

    add proxy here ...

    socks5 127.0.0.1 9050

    socks5 YOUR_SERVER_IP 1080 proxyuser your_password # 带认证

    或者,不带认证:

    socks5 YOUR_SERVER_IP 1080

    ```

  3. proxychains 测试
    bash proxychains curl http://ifconfig.me/ip
    输出应显示您代理服务器的 IP 地址。

安全最佳实践

  • 限制访问: 使用 client pass 规则限定哪些客户端 IP 地址可以连接到您的代理。
  • 强密码: 使用用户名/密码认证时,确保所有代理用户都设置了强度高且唯一的密码。
  • 最小权限: 不要给 nobody 用户或代理用户授予不必要的权限。
  • 定期更新: 保持 Linux 操作系统和 Dante 软件包更新,及时修补安全漏洞。
  • 日志与监控: 定期查看 Dante 日志(/var/log/danted.log)以发现可疑活动。部署日志监控方案。
  • 防火墙规则: 将防火墙配置为仅允许来自可信 IP 段的连接访问 SOCKS 端口(1080)。
  • 专用用户: 使用专门的系统用户进行代理访问,而不是复用已有的用户账号。
  • 关闭未使用的方式: 只启用确有必要的 socksmethod 选项。
已更新: 04.03.2026
返回分类

试用我们的代理

遍布 100+ 国家的 20,000+ 代理

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.