Dante 是一个 SOCKS 代理服务器,支持 SOCKS4 和 SOCKS5 协议,常用于网络代理、穿透防火墙和访问受限资源。以下是详细的安装、配置和使用指南。
1. 安装 Dante
在 Ubuntu/Debian 上安装
sudo apt update
sudo apt install dante-server
在 CentOS/RHEL 上安装
CentOS 的默认仓库中可能没有 Dante,可以从源代码编译:
sudo yum groupinstall "Development Tools"
sudo yum install gcc make openssl-devel libpam-devel
wget https://www.inet.no/dante/files/dante-<version>.tar.gz
tar -xvzf dante-<version>.tar.gz
cd dante-<version>
./configure
make
sudo make install
2. 配置 Dante
Dante 的主配置文件一般位于 /etc/danted.conf
,如果从源代码编译安装,可能需要手动创建配置文件。
示例配置文件
# danted.conf
# 监听的地址和端口
logoutput: syslog /var/log/danted.log
internal: 0.0.0.0 port = 1080 # 内部网络接口
external: eth0 # 外部网络接口
# 认证方式
method: username none # 支持用户名密码认证和无认证
# 访问控制(客户端规则)
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect
}
# 代理控制(服务端规则)
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect
}
internal
: 指定代理服务监听的 IP 和端口。external
: 指定代理服务器的外部网络接口。method
: 指定认证方式,可选值包括none
(无认证)、username
(用户名/密码认证)。client pass
和socks pass
: 配置访问规则。
日志文件权限
确保日志文件具有正确权限:
sudo touch /var/log/danted.log
sudo chmod 644 /var/log/danted.log
3. 启动和管理 Dante
启动服务
Ubuntu/Debian 使用 systemd
:
sudo systemctl start danted
sudo systemctl enable danted
手动启动:
danted -f /etc/danted.conf
查看服务状态
sudo systemctl status danted
停止服务
sudo systemctl stop danted
4. 客户端连接使用
Dante 提供 SOCKS 代理功能,客户端可以通过以下方式连接:
Linux/Unix
设置环境变量:
export http_proxy=socks5://<代理IP>:1080
export https_proxy=socks5://<代理IP>:1080
浏览器
在浏览器中设置代理,填写 SOCKS5 代理的 IP 和端口(例如 127.0.0.1:1080)。
命令行工具
使用 curl
:
curl -x socks5h://<代理IP>:1080 http://example.com
使用 ssh
:
ssh -o ProxyCommand="nc -x <代理IP>:1080 %h %p" <目标主机>
5. 配置高级功能
启用用户名/密码认证
- 在配置文件中启用
method: username
。 - 创建系统用户,用于认证:
sudo useradd -m proxyuser sudo passwd proxyuser
限制特定 IP 的访问
修改 client pass
规则:
client block {
from: 192.168.1.0/24 to: 0.0.0.0/0
log: connect error
}
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect
}
绑定多网卡
支持多网卡时,可配置多个 internal
和 external
接口:
internal: 192.168.1.1 port = 1080
external: eth1
internal: 192.168.2.1 port = 1080
external: eth2
6. 常见问题排查
1. 无法连接代理
- 检查防火墙是否允许端口 1080:
sudo ufw allow 1080
2. 服务无法启动
- 查看日志文件
/var/log/danted.log
或journalctl -xe
。
3. 客户端连接失败
- 确认客户端配置了正确的 SOCKS 代理地址和端口。