💡最近有个服务代理的需求,就照例网上找找解决方案,这些还是挺方便的 有很多技术小伙伴无私的分享自己的一键脚本,但是很多脚本似乎因为时间原因已经不好使了 遂自己研究研究 在此分享一下自己的安装过程并说说自己的踩坑点
为什么选择 SOCKS5?🤔
相比 HTTP 代理,SOCKS5 有两个明显优势:
- 支持 TCP 和 UDP 协议(比如可以代理视频通话、游戏等)
- 转发效率更高,对应用层协议无限制(HTTP 代理只能转发 HTTP/HTTPS 流量)
而 Dante-server 是目前最流行的 SOCKS5 服务器实现之一,轻量、稳定、配置灵活,非常适合个人或小型团队使用。
一、 准备工作
开始之前,你需要:
- 一台 Linux 服务器(本文以 CentOS 为例,Ubuntu 操作类似)
- 服务器已安装
yum
包管理器 - 基本的 Linux 命令操作能力
二、安装过程
1. 安装Dante-server
Dante-server 在官方源中一般有收录,直接用 yum 安装即可:
bash
# 安装dante-server
sudo yum install dante-server -y
# 验证安装是否成功(查看版本)
sockd -v
如果出现-bash: sockd: 未找到命令
的错误,别慌!这是因为程序路径没加入环境变量:
bash
# 手动添加路径(临时生效)
export PATH=$PATH:/usr/sbin
# 永久生效(针对bash用户)
echo 'export PATH=$PATH:/usr/sbin' >> ~/.bashrc
source ~/.bashrc
再次执行sockd -v
,如果能看到版本信息,说明安装成功啦!✅
2. 创建新配置文件
bash
sudo vim /etc/sockd.conf # 用nano的话替换成sudo nano /etc/sockd.conf
粘贴以下内容(记得替换eth0
为你的服务器网卡,用ip addr
查看):
bash
# 日志输出(方便排查问题)
logoutput: /var/log/sockd.log
# 监听地址和端口(0.0.0.0表示监听所有网卡 这里的1080 可以替换成你想要监听端口)
internal: 0.0.0.0 port = 1080
# 出口网卡(服务器访问外网用的网卡)
external: eth0
# 不启用认证(测试用 **一般这里还是要设置认证的** 后面会讲)
socksmethod: none
clientmethod: none
# 运行用户
user.privileged: root
user.unprivileged: nobody
# 允许所有客户端连接
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
# 允许代理所有目标地址
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp udp
}
3. 启动服务并测试
bash
# 启动服务
sudo systemctl start sockd
# 设置开机自启
sudo systemctl enable sockd
# 检查服务状态(出现active(running)说明正常)
sudo systemctl status sockd
测试代理是否可用(替换服务器IP
为你的实际 IP 还有你配置的端口号):
shell
curl -x socks5://服务器IP:1080 https://www.baidu.com
如果返回百度的 HTML 内容,说明基础配置成功!🎉
4. 添加用户认证(安全加固) 🔒
无密码代理太危险了!必须加上用户认证,只允许知道账号密码的人使用。
创建专用系统用户
bash
# 创建用户(-s /sbin/nologin 禁止登录服务器,仅用于代理认证)
sudo useradd -s /sbin/nologin proxyuser
# 设置密码(按提示输入密码,比如abc@123!)
sudo passwd proxyuser
修改配置文件启用认证
sudo vim /etc/sockd.conf
替换认证相关配置:
bash
# 启用用户名密码认证
socksmethod: username
clientmethod: username
# 其他配置不变,保留之前的监听和规则设置
# 限制仅允许proxyuser使用(可选)
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp udp
user: proxyuser # 只允许这个用户访问
}
重启服务并测试
bash
sudo systemctl restart sockd
# 测试带认证的代理(密码中有特殊字符记得用单引号包裹)
curl -x 'socks5://proxyuser:你的密码@服务器IP:1080' <https://www.baidu.com>
三、踩坑记录🤡
💡如果你前面都顺顺利利执行下来了 就不用往下看了,😩因为下面都是我这个大冤种遇到的奇奇怪怪的问题
1. 服务器安全组没有开对应端口
这个其实算是比较常见的问题了 只是给大家提个醒 我自己可没犯这么基础的错误🤣
2. danted command not found
/dantd command not found
我真的会谢!搜攻略时看到有人写danted start
或dantd -v
,跟着敲全报错,😤 害得我怀疑自己 怀疑yum 就是没怀疑过写攻略的作者 特么😭 正确命令是sockd
!(重要的事情加粗:是sockd
不是 danted! )
3. 密码里有特殊字符导致curl
失败
这里其实是shell
的转义导致的 特殊字符加一个反斜杠\
或者像我上面加单引号就可以解决 不要像我笨笨的去怀疑是不是代理没装好又去查了一番
4. 配置项 method: none username
我其实理解分享者的意思 这里的method指用户认证方式 分别是 none(无认证) 和 username(用户名密码认证) 大家可以根据需求自选其一 但是你至少说清楚啊!!!, 对于不了解的人来说 我只会复制粘贴呀
如果觉得本文对你有帮助,欢迎点赞收藏~ 有任何问题可以在评论区留言,我会尽力解答!😘
#SOCKS5 #服务器配置 #代理服务器 #Linux 教程