如何在 Debian 11 上为专用连接设置 Dante 代理如何在 Debian 11 上为专用连接设置 Dante 代理如何在 Debian 11 上为专用连接设置 Dante 代理如何在 Debian 11 上为专用连接设置 Dante 代理
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Debian 11 上为专用连接设置 Dante 代理

介绍

代理服务器是一种服务器应用程序,充当最终用户和 Internet 资源之间的网关。通过代理服务器,最终用户能够出于各种目的控制和监控他们的 Web 流量,包括隐私、安全和缓存。例如,您可以使用代理服务器从不同于您自己的 IP 地址发出 Web 请求。您还可以使用代理服务器来研究网络在不同司法管辖区之间的服务方式有何不同,或者避免使用某些监视或网络流量限制方法。

Dante 是一个稳定、流行、开源的 SOCKS 代理。在本教程中,您将安装和配置 Dante 以在 Debian 11 服务器上提供 SOCKS 代理。

先决条件

要完成本指南,您需要:

  • Debian 11 服务器和具有 sudo 权限的非根用户。您可以在我们的 Debian 11 初始服务器设置指南中详细了解如何为用户设置这些权限。

您将在本教程中使用域名 your_domain,但您应该将其替换为您自己的域名或 IP 地址。

第 1 步 — 安装 Dante

Dante 是一个开源的 SOCKS 代理服务器。 SOCKS 是一种使用不太广泛的协议,但它对于某些点对点应用程序更有效,并且在某些类型的流量中优于 HTTP。首先以非根用户身份运行以下命令来更新您的软件包列表并安装 Dante:

  1. sudo apt update
  2. sudo apt install dante-server

Dante 安装后也会自动设置后台服务并启动。但是,它被设计为在第一次运行时优雅地退出并显示一条错误消息,因为它在出厂时禁用了所有功能。您可以使用 systemctl 命令验证这一点:

  1. systemctl status danted.service
Output
● danted.service - SOCKS (v4 and v5) proxy daemon (danted) Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Wed 2021-12-15 21:48:22 UTC; 1min 45s ago Docs: man:danted(8) man:danted.conf(5) Main PID: 14496 (code=exited, status=1/FAILURE) Dec 15 21:48:21 proxies systemd[1]: Starting SOCKS (v4 and v5) proxy daemon (danted)... Dec 15 21:48:22 proxies systemd[1]: Started SOCKS (v4 and v5) proxy daemon (danted). Dec 15 21:48:22 proxies danted[14496]: Dec 15 21:48:22 (1639604902.102601) danted[14496]: warning: checkconfig(): no socks authentication methods enabled. This means all socks requests will be blocked after negotiation. Perhaps this is not intended?

要成功启动 Dante 的服务,您需要在配置文件中启用它们。

默认情况下,在 /etc/danted.conf 中提供了 Dante 的配置文件。如果您使用 nano 或您最喜欢的文本编辑器打开此文件,您将看到一长串配置选项,所有选项均已禁用。您可以尝试浏览此文件并逐行启用一些选项,但实际上,删除此文件并从头开始替换它会更有效且更具可读性。不要担心这样做。如果需要,您始终可以通过导航到其软件包列表以重新获取库存配置文件来查看 Dante 的默认配置。与此同时,继续删除它:

  1. sudo rm /etc/danted.conf

现在你可以用更简洁的东西代替它。如果文件不存在,使用文本编辑器打开文件将自动创建该文件,因此通过使用 nano 或您最喜欢的文本编辑器,您现在应该得到一个空的配置文件:

  1. sudo nano /etc/danted.conf

添加以下内容:

logoutput: syslog
user.privileged: root
user.unprivileged: nobody

# The listening network interface or address.
internal: 0.0.0.0 port=1080

# The proxying network interface or address.
external: eth0

# socks-rules determine what is proxied through the external interface.
socksmethod: username

# client-rules determine who can connect to the internal interface.
clientmethod: none

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
}

您现在有一个可用的 SOCKS 服务器配置,在端口 1080 上运行,这是 SOCKS 的通用约定。您还可以逐行分解此配置文件的其余部分:

  • logoutput 是指 Dante 将如何记录连接,在本例中使用常规系统日志记录
  • user.privileged 允许dante拥有root权限,用于检查权限
  • user.unprivileged 不授予服务器任何以非特权用户身份运行的权限,因为在不授予更细粒度的权限时这是不必要的
  • internal 连接详细信息指定服务运行的端口以及可以连接的 IP 地址
  • external 连接详细信息指定用于出站连接的网络接口,在大多数服务器上默认为 eth0

其余配置细节涉及身份验证方法,将在下一节中讨论。如果您使用 ufw,请不要忘记在防火墙中打开端口 1080:

  1. sudo ufw allow 1080

此时,您可以重新启动 Dante 并连接到它,但是您将拥有一个对整个世界开放的 SOCKS 服务器,您可能不想要它,因此您将首先了解如何保护它。

第 2 步 — 保护 Dante

如果到目前为止您已经按照本教程进行操作,Dante 将使用常规 Linux 用户帐户进行身份验证。这很有用,但用于该连接的密码将通过纯文本发送,因此创建一个没有任何其他登录权限的专用 SOCKS 用户很重要。为此,您将使用带有标志的 useradd 不会为用户分配登录 shell,然后设置密码:

  1. sudo useradd -r -s /bin/false your_dante_user
  2. sudo passwd your_dante_user

您还需要避免通过不安全的无线连接登录此帐户或过于广泛地共享服务器。否则,恶意行为者可以并且将会反复尝试登录。

Dante 支持其他身份验证方法,但许多将连接到 SOCKS 代理的客户端(即应用程序)仅支持基本的用户名和密码身份验证,因此您可能希望保留该部分原样。您可以做的替代方法是限制对特定 IP 地址的访问。这不是最复杂的选择,但考虑到这里使用的技术组合,这是一个明智的选择。您可能已经从我们的先决条件教程中了解了如何使用 ufw 限制对特定 IP 地址的访问,但您也可以直接在 Dante 中执行此操作。编辑您的 /etc/danted.conf:

  1. sudo nano /etc/danted.conf
…
client pass {
    from: your_ip_address/0 to: 0.0.0.0/0
}

为了支持多个 IP 地址,您可以使用 CIDR 表示法,或者只添加另一个 client pass {} 配置块:

client pass {
    from: your_ip_address/0 to: 0.0.0.0/0
}

client pass {
    from: another_ip_address/0 to: 0.0.0.0/0
}

之后,您最终可以使用配置更改重新启动 Dante。

  1. sudo systemctl restart danted.service

这一次,当您检查服务状态时,您应该看到它正在运行且没有任何错误:

  1. systemctl status danted.service
Output
● danted.service - SOCKS (v4 and v5) proxy daemon (danted) Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enable> Active: active (running) since Thu 2021-12-16 18:06:26 UTC; 24h ago

在下一步中,您将最终连接到您的代理。

第 3 步 — 通过 Dante 连接

为了演示您的 Dante 服务器,您将使用一个名为 curl 的命令行程序,该程序常用于发出不同类型的 Web 请求。一般来说,如果您想验证给定连接是否应该在理想情况下在浏览器中正常工作,您应该始终首先使用 curl 进行测试。您将在本地计算机上使用 curl 来执行此操作——它默认安装在所有现代 Windows、Mac 和 Linux 环境中,因此您可以打开任何本地 shell 来运行此命令:

  1. curl -v -x socks5://your_dante_user:your_dante_password@your_server_ip:1080 http://www.google.com/
Output
* Trying 68.183.159.74:1080... * SOCKS5 connect to IPv4 142.251.33.68:80 (locally resolved) * SOCKS5 request granted. * Connected to 68.183.159.74 (68.183.159.74) port 1080 (#0) > GET / HTTP/1.1 > Host: www.google.com …

您用于 curl 的凭据现在应该可以在您可能想要使用新代理服务器的任何其他地方使用。

结论

在本教程中,您学习了如何部署一个流行的开源 API 端点来代理流量,几乎没有开销。许多应用程序都有内置的代理支持(通常在操作系统级别)可以追溯到几十年前,使这个代理堆栈高度可重用。

接下来,您可能想了解如何部署 Squid,这是一种 HTTP 代理,可以与 Dante 一起运行以代理不同类型的 Web 流量。

由于代理服务器最常见的用例之一是代理进出不同全球区域的流量,接下来您可能需要查看如何使用 Ansible 来自动化服务器部署,以防您发现自己想要在其他数据中心复制此配置.

©2015-2025 艾丽卡 support@alaica.com