【在阿里云或其他 CentOS/RHEL 系统上安装和配置 Dante SOCKS5 代理服务】

在阿里云或其他 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 系列系统上,可以使用 yumdnf 进行安装。

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 命令来查找。常见的名称还有 ens33ens160 等。
  • 确保 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 sockdwhich 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 中创建的用户名和密码。

相关推荐
h7098383025 分钟前
18487.1-2015-解读笔记四-交流充电之故障监测
笔记
赵谨言5 小时前
基于单片机的按摩器控制系统设计
经验分享·毕业设计
佳腾_8 小时前
【web服务_负载均衡Nginx】二、Nginx 核心技术之负载均衡与反向代理
前端·nginx·云计算·负载均衡·web中间件
YY_pdd8 小时前
调教自己的电脑(护眼)
经验分享·电脑
Saggitarxm8 小时前
阿里云镜像加速仅支持阿里云产品了
阿里云·docker·云计算·镜像加速
刘婉晴9 小时前
【信息安全工程师备考笔记】第二章 网络信息安全概述
网络·笔记
江湖人称-杰10 小时前
电脑安装CentOS系统
linux·centos
东方芷兰10 小时前
Javase 基础入门 —— 02 基本数据类型
java·开发语言·笔记·spring·intellij-idea·idea
05091511 小时前
测试基础笔记第九天
数据库·笔记·oracle