凌峰创科服务平台

Ubuntu如何快速搭建代理服务器?

在Ubuntu系统中搭建代理服务器是企业或个人用户常用的网络管理方式,可用于访问控制、流量监控、安全防护等场景,本文以Squid代理服务器为例,详细介绍在Ubuntu 20.04/22.04系统中搭建HTTP代理的完整流程,包括环境准备、安装配置、用户认证及高级优化等内容。

Ubuntu如何快速搭建代理服务器?-图1
(图片来源网络,侵删)

环境准备

在开始搭建前,需确保满足以下基本条件:

  1. 系统要求:推荐使用Ubuntu 20.04 LTS或22.04 LTS服务器版,最小化安装即可(关闭防火墙或提前放行代理端口)。
  2. 网络配置:服务器需具备静态IP地址(如192.168.1.100),并确保客户端能访问该IP。
  3. 权限要求:使用root用户或通过sudo获取管理员权限。

关闭防火墙(临时)

若使用UFW防火墙,需放行代理默认端口(3128):

sudo ufw allow 3128/tcp
sudo ufw reload

安装Squid代理服务器

Squid是开源的代理缓存服务器,支持HTTP、HTTPS、FTP等多种协议。

更新系统并安装Squid

sudo apt update && sudo apt upgrade -y
sudo apt install squid -y

验证安装

安装完成后,检查Squid服务状态:

Ubuntu如何快速搭建代理服务器?-图2
(图片来源网络,侵删)
sudo systemctl status squid

若显示active (running),则表示服务已启动,默认情况下,Squid监听3128端口,仅允许本地访问。

配置Squid代理服务器

Squid的主配置文件位于/etc/squid/squid.conf,需根据实际需求修改关键参数。

备份原始配置

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

修改核心配置

使用vimnano编辑配置文件:

sudo vim /etc/squid/squid.conf

以下为关键参数说明及修改建议:

参数 默认值 修改建议 说明
http_port 3128 http_port 3128 监听端口,可修改为其他未被占用的端口(如8080)
visible_hostname visible_proxy.example.com 代理服务器主机名,客户端显示时使用
cache_dir /var/spool/squid cache_dir ufs /var/spool/squid 100 16 256 缓存目录设置(大小100MB,16个子目录,256级子目录)
acl localnet src 0.0.1/32 acl localnet src 192.168.1.0/24 允许访问的网段,根据实际局域网段修改
http_access deny all deny all http_access allow localnet 访问控制规则,默认拒绝所有,需添加允许规则
auth_param basic program auth_param basic /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords 启用基本认证(需提前创建密码文件)

启用用户认证(可选)

为提高安全性,可配置用户名密码认证:

  1. 安装apache2-utils工具(用于生成密码):
    sudo apt install apache2-utils -y
  2. 创建密码文件(如/etc/squid/passwords)并添加用户:
    sudo touch /etc/squid/passwords
    sudo htpasswd -c /etc/squid/passwords user1  # 首次创建使用-c,后续添加用户去掉-c
  3. 修改Squid配置,添加认证规则:
    http_access段前添加:
    acl auth_users proxy_auth REQUIRED
    http_access allow auth_users

优化配置

  • 禁用缓存(若仅需代理功能,无需缓存):
    cache_dir行前添加注释该行。
  • 设置超时时间
    在配置文件末尾添加:
    request_timeout 120  # 请求超时120秒
    read_timeout 300     # 读取超时300秒

启动并测试代理服务

重启Squid服务

sudo systemctl restart squid
sudo systemctl enable squid  # 设置开机自启

客户端配置测试

以Windows浏览器为例:

  1. 打开“Internet选项”→“连接”→“局域网设置”;
  2. 勾选“为LAN使用代理服务器”,输入服务器IP(192.168.1.100)和端口(3128);
  3. 若启用认证,需在浏览器中输入用户名密码。

命令行测试

使用curl命令验证代理是否生效:

curl -x http://user1:password@192.168.1.100:3128 http://www.example.com
```  则表示代理配置成功。
### 五、常见问题排查
1. **端口被占用**:  
   检查`netstat -tuln | grep 3128`,若被占用,修改`http_port`为其他端口。  
2. **权限错误**:  
   确保Squid用户(`squid`)对配置文件和密码文件有读写权限:  
   ```bash
   sudo chown -R squid:squid /etc/squid/passwords
   sudo chmod 600 /etc/squid/passwords

相关问答FAQs

Q1: 如何限制客户端只能访问特定网站?
A1: 可通过Squid的aclhttp_access规则实现,仅允许访问example.comtest.com

acl allowed_sites dstdomain .example.com .test.com
http_access allow allowed_sites
http_access deny all

修改后重启Squid服务即可生效。

Q2: Squid代理如何支持HTTPS流量?
A2: 默认情况下,Squid仅处理HTTP流量,若需支持HTTPS,需启用ssl_bump功能并配置证书:

  1. squid.conf中添加:
    ssl_bump stare all
    http_port 3128 ssl-bump generate-host-certificates=on cert=/etc/squid/ssl_cert/squid.crt
  2. 生成证书并重启服务,注意:HTTPS代理需要客户端安装根证书,且可能存在中间人攻击风险,建议仅在信任网络中使用。
分享:
扫描分享到社交APP
上一篇
下一篇