在阿里云或其他 CentOS/RHEL 系统上安装和配置 Dante SOCKS5 代理服务
-
- 什么是SOCKS5?
- 前提条件
- [步骤 1:安装 Dante SOCKS5 服务](#步骤 1:安装 Dante SOCKS5 服务)
- [步骤 2:创建专用代理用户(推荐)](#步骤 2:创建专用代理用户(推荐))
- [步骤 3:配置 Dante 服务](#步骤 3:配置 Dante 服务)
- [步骤 4:设置日志文件权限](#步骤 4:设置日志文件权限)
- [步骤 5:配置 Systemd 服务文件](#步骤 5:配置 Systemd 服务文件)
- [步骤 6:重载 Systemd 并启动服务](#步骤 6:重载 Systemd 并启动服务)
- [步骤 7:配置防火墙](#步骤 7:配置防火墙)
- [步骤 8:测试 SOCKS5 代理](#步骤 8:测试 SOCKS5 代理)
- 总结
什么是SOCKS5?
SOCKS5 是一种网络协议,常用于客户端与服务器之间通过代理服务器进行通讯。它可以代理 TCP 和 UDP 流量,常用于绕过网络限制、保护隐私或用于特定应用的代理需求(例如 RustDesk)。本文将指导你在阿里云或其他基于 CentOS/RHEL 的 Linux 服务器上安装和配置 Dante SOCKS5 代理服务,并使用系统用户进行认证。
前提条件
- 一台运行 CentOS、RHEL、AlmaLinux 或 Rocky Linux 的服务器(例如阿里云 ECS)。
- 拥有服务器的 root 或 sudo 访问权限。
- 基本的 Linux 命令行操作知识。
步骤 1:安装 Dante SOCKS5 服务
我们使用 dante-server
软件包来提供 SOCKS5 服务。在 CentOS/RHEL 系列系统上,可以使用 yum
或 dnf
进行安装。
bash
sudo yum update -y
sudo yum install dante-server -y
步骤 2:创建专用代理用户(推荐)
为了安全和管理方便,建议创建一个专门用于 SOCKS5 认证的用户,而不是使用系统已有用户。
首先,创建一个新的系统用户(例如 proxyuser
):
bash
sudo useradd proxyuser
然后,为这个用户设置密码:
bash
sudo passwd proxyuser
按照提示输入并确认密码。记住这个用户名和密码,客户端连接代理时需要使用。
注意: 如果你不创建独立用户而选择使用现有系统用户,需要确保该用户存在并设置了密码。
步骤 3:配置 Dante 服务
Dante 的主配置文件位于 /etc/danted.conf
。我们需要编辑此文件来指定监听地址、端口、认证方式和规则。
使用你喜欢的文本编辑器打开配置文件(例如 vim
):
bash
sudo vim /etc/danted.conf
将文件内容修改为以下示例:
conf
# 日志输出路径(需确保 proxyuser 有写入权限,见步骤 4)
logoutput: /var/log/danted.log
# 监听地址和端口(0.0.0.0 表示允许所有 IP 连接,端口使用 1080)
internal: 0.0.0.0 port = 1080
# 对外网卡名称。根据你的服务器实际网卡名称修改(如 eth0, ens33, etc.)
# 可以使用 'ip a' 命令查看网卡名称
external: eth0
# 认证方式:启用系统用户认证,禁用匿名访问
method: username
# 特权用户(绑定端口需 root 权限)
user.privileged: root
# 实际运行用户(降权至专用用户 proxyuser)
user.unprivileged: proxyuser
# 客户端访问规则(允许所有客户端连接到代理服务本身)
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
}
重要:
- 将
external: eth0
中的eth0
替换为你服务器的实际对外网卡名称。你可以运行ip a
命令来查找。常见的名称还有ens33
、ens160
等。 - 确保
user.unprivileged
的值与你在步骤 2 中创建的用户名一致(例如proxyuser
)。
保存并关闭文件。
步骤 4:设置日志文件权限
Dante 服务以非特权用户(proxyuser
)运行时,需要有写入日志文件的权限。
首先创建日志文件(如果不存在):
bash
sudo touch /var/log/danted.log
然后,将日志文件的所有者和组改为 proxyuser
,并设置合适的权限:
bash
sudo chown proxyuser:proxyuser /var/log/danted.log
sudo chmod 644 /var/log/danted.log
步骤 5:配置 Systemd 服务文件
Dante 安装后通常会提供一个 systemd 服务文件,但有时需要根据配置进行微调,特别是指定配置文件路径。
检查 /etc/systemd/system/danted.service
文件。如果文件不存在,或者需要修改,可以手动创建或编辑它。
使用编辑器打开服务文件:
bash
sudo vim /etc/systemd/system/danted.service
确保文件内容类似如下:
service
[Unit]
Description=Dante SOCKS5 Proxy Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/sockd -f /etc/danted.conf # -f 指定配置文件路径
ExecReload=/bin/kill -HUP $MAINPID
User=root # Systemd 运行服务脚本时使用 root,但 Dante 进程会降权
Group=root
[Install]
WantedBy=multi-user.target
注意: ExecStart
中的 /usr/sbin/sockd
是 Dante 服务的可执行文件路径。你可以运行 which sockd
或 which danted
命令来确认实际路径,如果不同,请替换。不过 /usr/sbin/sockd
是常见的默认路径。确保 -f /etc/danted.conf
指定了正确的配置文件路径。
保存并关闭文件。
步骤 6:重载 Systemd 并启动服务
修改了 systemd 服务文件后,需要重载 systemd 配置:
bash
sudo systemctl daemon-reload
然后启动 Dante 服务并设置开机自启:
bash
sudo systemctl start danted
sudo systemctl enable danted
检查服务状态,确认服务已成功启动且没有报错:
bash
sudo systemctl status danted
如果服务启动失败,请检查 danted.conf
文件的语法、日志文件权限以及 systemd 服务文件中的可执行文件路径。
步骤 7:配置防火墙
如果你在服务器上使用了防火墙(强烈推荐,阿里云默认可能开启安全组,但系统内置防火墙也需要配置),需要放行 SOCKS5 服务使用的端口(默认为 1080)。
如果你使用 firewalld
(CentOS 7/8+ 默认):
bash
sudo firewall-cmd --permanent --zone=public --add-port=1080/tcp
sudo firewall-cmd --reload
如果你使用 iptables
:
bash
sudo iptables -A INPUT -p tcp --dport 1080 -j ACCEPT
sudo service iptables save # 或 iptables-save > /etc/sysconfig/iptables
sudo service iptables restart
请根据你的实际防火墙配置进行调整。同时,确保阿里云安全组也开放了 TCP 协议的 1080 端口。
步骤 8:测试 SOCKS5 代理
现在你可以从另一台机器上测试 SOCKS5 代理是否工作,特别是带有用户认证的情况。可以使用 curl
命令进行测试:
bash
curl --socks5 proxyuser:your_password@服务器IP:1080 [http://ifconfig.me](http://ifconfig.me)
将 proxyuser
替换为你创建的用户名,your_password
替换为对应的密码,服务器IP
替换为你的阿里云服务器公网 IP 地址。
如果命令成功执行并返回了你的服务器公网 IP 地址,说明 SOCKS5 代理已成功搭建,并且用户认证也正常工作。
如果返回错误,请检查:
- 用户名和密码是否正确。
- 服务器防火墙和阿里云安全组是否放行了 1080 端口。
- Dante 服务是否正在运行 (
sudo systemctl status danted
)。 danted.log
文件中是否有错误信息。
总结
通过以上步骤,你已经在阿里云或其他 CentOS/RHEL 服务器上成功安装并配置了使用系统用户认证的 Dante SOCKS5 代理服务。现在你可以在客户端应用程序(如浏览器、IM 客户端、RustDesk 等)中配置使用这个代理了,连接地址为你的服务器公网 IP,端口 1080,认证时输入你在步骤 2 中创建的用户名和密码。