介绍
代理服务器是作为终端用户和互联网资源之间的网关的服务器应用程序的一种类型。通过代理服务器,终端用户可以控制和监控他们的网络流量,包括隐私,安全和缓存,例如,您可以使用代理服务器从不同的IP地址进行网络请求。
Dante是一个稳定的,流行的,开源SOCKS代理程序. 在本教程中,您将安装和配置Dante在Debian 11服务器上提供SOCKS代理程序。
前提条件
要完成本指南,您将需要:
- Debian 11 服务器和具有 sudo 特权的非 root 用户. 您可以在我们的 Debian 11 初始服务器设置指南中了解有关如何设置具有这些特权的用户的更多信息。
你将在本教程中使用域名 your_domain,但你应该用自己的域名或IP地址来代替。
步骤 1 - 安装 Dante
Dante 是一个开源 SOCKS 代理服务器. SOCKS 是一个不那么广泛使用的协议,但它对于某些对等应用程序来说更有效,并且对于某些类型的流量更喜欢 HTTP。
1sudo apt update
2sudo apt install dante-server
Dante 还会自动设置背景服务,并在安装后启动。然而,它最初运行时旨在优雅地停止错误消息,因为它具有所有功能的禁用,您可以通过使用systemctl
命令来验证这一点:
1systemctl status danted.service
1[secondary_label Output]
2● danted.service - SOCKS (v4 and v5) proxy daemon (danted)
3 Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enabled)
4 Active: failed (Result: exit-code) since Wed 2021-12-15 21:48:22 UTC; 1min 45s ago
5 Docs: man:danted(8)
6 man:danted.conf(5)
7 Main PID: 14496 (code=exited, status=1/FAILURE)
8
9Dec 15 21:48:21 proxies systemd[1]: Starting SOCKS (v4 and v5) proxy daemon (danted)...
10Dec 15 21:48:22 proxies systemd[1]: Started SOCKS (v4 and v5) proxy daemon (danted).
11Dec 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的服务,您需要在配置文件中启用它们。
如果你使用nano或你最喜欢的文本编辑器打开这个文件,你会看到一个长的配置选项列表,所有这些都被禁用。你可以尝试浏览这个文件并启用一些选项,但在实践中,删除这个文件并从头开始取代它将更有效和更易读。不要担心这样做。你可以通过导航到其 在线手册来查看丹特的默认配置,甚至可以从Ubuntu的 包装列表手动下载包裹以重新获取库存配置文件,如果你愿意。在此期间,继续前进并删除它:
1sudo rm /etc/danted.conf
使用文本编辑器打开文件将自动创建文件,如果它不存在,所以使用nano
或您最喜欢的文本编辑器,您现在应该得到一个空的配置文件:
1sudo nano /etc/danted.conf
添加以下内容:
1[label /etc/danted.conf]
2logoutput: syslog
3user.privileged: root
4user.unprivileged: nobody
5
6# The listening network interface or address.
7internal: 0.0.0.0 port=1080
8
9# The proxying network interface or address.
10external: eth0
11
12# socks-rules determine what is proxied through the external interface.
13socksmethod: username
14
15# client-rules determine who can connect to the internal interface.
16clientmethod: none
17
18client pass {
19 from: 0.0.0.0/0 to: 0.0.0.0/0
20}
21
22socks pass {
23 from: 0.0.0.0/0 to: 0.0.0.0/0
24}
你现在有一个可用的SOCKS服务器配置,运行在端口1080上,这是SOCKS的常见惯例。
*「logoutput」指的是Dante将如何登录连接,在这种情况下,使用常规系统登录
*「user.privileged」允许Dante有root
权限来检查权限
*「user.unprivileged」不授予服务器任何权限作为非特权用户运行,因为这在不授予更多细节性权限时是不必要的
*内部
连接细节指定服务运行在哪个端口和哪个IP地址连接可以
*外部
连接细节指定用于外部连接的网络接口,eth0
默认在大多数服务器上
其余的配置细节涉及身份验证方法,这些方法在下一节讨论。如果您使用ufw
,请不要忘记在防火墙中打开端口1080:
1sudo ufw allow 1080
在这一点上,你可以重新启动Dante并连接到它,但你会有一个SOCKS服务器,向全世界开放,你可能不想要,所以你会先学习如何保护它。
步骤二:保护丹特
如果你一直遵循本教程,丹特将使用常规的Linux用户帐户进行身份验证,这很有帮助,但用于该连接的密码将通过简单的文本发送,所以创建一个没有其他登录权限的SOCKS用户很重要。
1sudo useradd -r -s /bin/false your_dante_user
2sudo passwd your_dante_user
您还希望避免通过不受保护的无线连接登录该帐户或过度共享服务器,否则恶意行为者可以并会反复尝试登录。
Dante 支持其他身份验证方法,但许多客户端(即应用程序)将连接到 SOCKS 代理只支持基本的用户名和密码身份验证,所以您可能希望将该部分留在原始状态下。 作为替代方法,您可以限制访问仅限于特定 IP 地址。 这不是最复杂的选择,但鉴于这里使用的技术的组合,这是一个合理的选择。 您可能已经从我们的先决条件教程中学习了如何限制访问特定 IP 地址的ufw
,但您也可以直接在 Dante 中进行。
1sudo nano /etc/danted.conf
1[label /etc/danted.conf]
2…
3client pass {
4 from: your_ip_address/0 to: 0.0.0.0/0
5}
为了支持多个 IP 地址,您可以使用 CIDR 标注,或者只需添加另一个 client pass {}
配置块:
1[label /etc/danted.conf]
2client pass {
3 from: your_ip_address/0 to: 0.0.0.0/0
4}
5
6client pass {
7 from: another_ip_address/0 to: 0.0.0.0/0
8}
之后,您最终可以重新启动 Dante 与您的配置更改。
1sudo systemctl restart danted.service
这一次,当你检查服务状态时,你应该看到它在没有任何错误的情况下运行:
1systemctl status danted.service
1[secondary_label Output]
2● danted.service - SOCKS (v4 and v5) proxy daemon (danted)
3 Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enable>
4 Active: active (running) since Thu 2021-12-16 18:06:26 UTC; 24h ago
在下一步中,您最终将连接到您的代理。
步骤 3 – 通过Dante连接
为了演示你的Dante服务器,你会使用一个命令行程序叫做curl
,它是流行的做不同类型的网页请求. 一般来说,如果你想验证一个特定的连接是否应该在一个浏览器在理想情况下工作,你应该总是先测试curl
。 你会使用你的 本地机器上使用 curl来做到这一点 – 它是默认安装在所有现代的Windows,Mac和Linux环境,所以你可以打开任何本地壳运行这个命令:
1curl -v -x socks5://your_dante_user:your_dante_password@your_server_ip:1080 http://www.google.com/
1[secondary_label Output]
2* Trying 68.183.159.74:1080...
3* SOCKS5 connect to IPv4 142.251.33.68:80 (locally resolved)
4* SOCKS5 request granted.
5* Connected to 68.183.159.74 (68.183.159.74) port 1080 (#0)
6> GET / HTTP/1.1
7> Host: www.google.com
8…
您用于弯曲
的凭证现在应该在您可能想要使用新的代理服务器的任何其他地方工作。
结论
在本教程中,你学会了如何部署一个流行的开源API终端,用于代理流量,几乎没有过剩。
接下来,您可能想学习如何部署 Squid,一个可以与Dante一起运行的HTTP代理,用于代理不同类型的网络流量。
由于代理服务器最常见的使用案例之一是向和从不同全球区域的代理流量,因此您可能需要查看如何使用 Ansible来自动化服务器部署,如果您想在其他数据中心中重复此配置。