明确两种主要类型的代理:
1、正向代理 (Forward Proxy): 我们通常说的“代理服务器”就是指它,它位于客户端(如你的浏览器)和目标服务器之间,客户端将请求发送给代理,代理再转发给目标服务器,并返回结果。它代表客户端行事,对目标服务器隐藏了客户端的真实IP。
2、反向代理 (Reverse Proxy): 它位于一个或多个服务器之前,代表服务器处理请求,客户端直接访问反向代理,由反向代理将请求转发到后端的某个服务器,常用于负载均衡、SSL加密、缓存等。它代表服务器行事,对客户端隐藏了后端服务器的真实信息。
您想搭建的属于正向代理。
1、一台服务器: 你需要一台具有公网IP的服务器(VPS或独立服务器),推荐选择离你的目标用户或使用地点网络质量好的机房(如果用于访问海外资源,就选海外服务器)。
2、操作系统: 绝大多数服务器使用 Linux,本教程以Ubuntu 或CentOS 为例,它们是云服务器最常见的系统。
3、SSH 连接工具: 如 PuTTY (Windows) 或终端 (Mac/Linux),用于远程登录和管理服务器。
方法一:使用 Squid 搭建 HTTP/HTTPS 代理(最常用)
Squid 是一款功能强大、稳定的专业代理软件,支持 HTTP、HTTPS、FTP 等协议。
通过 SSH 连接到你的服务器。
ssh root@your_server_ip
更新软件包列表:
Ubuntu/Debian sudo apt update && sudo apt upgrade -y CentOS/RHEL sudo yum update -y
Ubuntu/Debian sudo apt install squid -y CentOS/RHEL sudo yum install squid -y
主要的配置文件是/etc/squid/squid.conf
,在修改前,强烈建议备份原文件。
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup sudo nano /etc/squid/squid.conf
基础配置(允许特定IP使用代理):
找到http_access deny all
这一行,并在它之前添加允许访问的规则,如果你想允许所有IP访问(非常不安全,仅用于测试),可以添加:
http_access allow all
但生产环境绝不能这样配置!
推荐的安全配置(设置认证或限制IP):
方法A限制IP访问(更简单)
只允许你的个人电脑或公司网络的IP使用代理。
acl my_network src your_local_ip_address/32 http_access allow my_network http_access deny all
将your_local_ip_address
替换为你本地网络的公网IP。
方法B设置用户名密码认证(更灵活)
1. 安装apache2-utils
(Ubuntu) 或httpd-tools
(CentOS) 来创建密码文件。
# Ubuntu/Debian sudo apt install apache2-utils -y # CentOS/RHEL sudo yum install httpd-tools -y
2. 创建密码文件并添加用户(例如用户名为proxyuser
):
sudo htpasswd -c /etc/squid/passwd proxyuser
系统会提示你输入并确认密码。
3. 在squid.conf
中配置认证:
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd auth_param basic realm proxy acl authenticated proxy_auth REQUIRED http_access allow authenticated http_access deny all
注意:basic_ncsa_auth
的路径可能因系统而异,可以使用find / -name basic_ncsa_auth
命令查找确切路径。
修改监听端口(可选):
默认端口是 3128,你可以修改它:
http_port 3128
步骤 4:启动 Squid 并设置开机自启
Ubuntu/Debian (使用 systemd) sudo systemctl start squid sudo systemctl enable squid # 开机自启 CentOS/RHEL 7+ (使用 systemd) sudo systemctl start squid sudo systemctl enable squid 检查运行状态 sudo systemctl status squid
如果服务器开启了防火墙(如ufw
或firewalld
),需要放行你设置的代理端口(如 3128)。
Ubuntu (使用 ufw) sudo ufw allow 3128/tcp CentOS (使用 firewalld) sudo firewall-cmd --permanent --add-port=3128/tcp sudo firewall-cmd --reload
在你的本地浏览器或应用程序中配置代理设置。
地址 (Address) 你的服务器公网IP
端口 (Port) 3128 (或你自定义的端口)
用户名/密码 (如果设置了) 你创建的用户名和密码
访问 [http://ipinfo.io/ip](http://ipinfo.io/ip) 或 [http://whatismyipaddress.com/](http://whatismyipaddress.com/),如果显示的IP是你的服务器IP,则说明代理搭建成功!
方法二:使用 Dante 搭建 SOCKS5 代理
SOCKS5 代理比 HTTP 代理更底层,可以代理所有类型的流量(包括 UDP),适用性更广。
Ubuntu/Debian sudo apt install dante-server -y CentOS/RHEL 需要先启用 EPEL 仓库 sudo yum install epel-release -y sudo yum install dante -y
配置文件通常是/etc/danted.conf
。
sudo nano /etc/danted.conf
写入以下基础配置(允许所有通过密码认证的用户访问):
logoutput: syslog user.privileged: root user.unprivileged: nobody internal: 0.0.0.0 port = 1080 external: eth0 method: username clientmethod: none client pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect disconnect error } pass { from: 0.0.0.0/0 to: 0.0.0.0/0 command: bind connect udpassociate log: connect disconnect error method: username }
internal: 0.0.0.0 port = 1080
: 监听所有网卡的1080端口。
external: eth0
: 服务器对外的网卡名称,通常为eth0
,可以用ip a
命令查看。
method: username
: 使用系统用户名密码认证。
Dante 使用系统的 PAM 认证,所以你需要为代理创建一个系统用户。
sudo useradd -r -s /bin/false proxyuser sudo passwd proxyuser # 为此用户设置一个密码
Ubuntu/Debian sudo systemctl start danted sudo systemctl enable danted CentOS/RHEL sudo systemctl start danted sudo systemctl enable danted 放行防火墙端口 1080 sudo ufw allow 1080/tcp # Ubuntu 或 sudo firewall-cmd --permanent --add-port=1080/tcp # CentOS sudo firewall-cmd --reload
在浏览器(如 Firefox 的代理设置)或支持 SOCKS5 的客户端(如 Telegram)中配置:
类型 SOCKS5
服务器 你的服务器IP
端口 1080
认证 用户名/密码 (刚才创建的proxyuser
和密码)
同样访问 IP 检查网站验证是否成功。
1、不要开放给所有人:http_access allow all
或 无认证的 SOCKS 代理会导致你的服务器被滥用,流量可能被耗尽,甚至可能因为他人进行的非法活动而牵连你。务必使用 IP 白名单或用户名密码认证。
2、使用高强度密码: 认证密码要足够复杂,防止被暴力破解。
3、考虑加密: 上述代理流量默认是明文的,对于更高安全性,可以在代理前套一层SSL加密(例如使用stunnel
)或者直接使用SSH Tunnel:
# 在你的本地机器上执行,建立一个本地SOCKS5代理 (端口1080),通过SSH隧道连接到服务器 ssh -D 1080 -q -C -N user@your_server_ip
4、监控流量: 定期检查服务器的流量和连接数使用情况,避免超支。
5、遵守法律和服务条款: 确保你使用代理的行为符合服务器所在国家的法律和云服务商(如 AWS, GCP, DigitalOcean)的条款。
希望这份详细的指南能帮助你成功架设自己的代理服务器!
文章摘自:https://idc.huochengrm.cn/fwq/15121.html
评论