- 在 Linux 上搭建一个代理服务器:让其他设备通过你的 Linux 机器上网。
- 配置 Linux 本身使用一个代理服务器:让你的 Linux 机器通过另一台代理服务器上网。
我会分别详细介绍这两种情况。

在 Linux 上搭建代理服务器
最常用、功能最强大的开源代理服务器是 Squid,它功能全面,性能稳定,支持 HTTP, HTTPS, FTP 等多种协议,这里我们以 Squid 为例进行讲解。
安装 Squid
大多数 Linux 发行版的软件源中都包含 Squid。
对于 Debian/Ubuntu:
sudo apt update sudo apt install squid
对于 CentOS/RHEL/Fedora:

sudo yum install squid # 或者对于较新版本 sudo dnf install squid
基本配置
Squid 的主配置文件是 /etc/squid/squid.conf,在修改之前,最好先备份一份。
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
我们使用 vim 或 nano 等编辑器来修改配置文件。
sudo nano /etc/squid/squid.conf
以下是一些核心配置项的解释:
-
http_port: 定义 Squid 监听的端口和地址,默认是3128。
(图片来源网络,侵删)# 默认配置,只监听本机的 3128 端口 http_port 3128 # 如果想让局域网内其他设备也能使用,可以改成监听所有接口 # http_port 0.0.0.0:3128
-
visible_hostname: 设置代理服务器的可见主机名,方便在日志中识别。visible_hostname MyProxyServer
-
cache_dir: 定义缓存目录和大小,如果只是作为简单的转发代理,可以禁用缓存以提升性能。# 默认是开启缓存的 # cache_dir ufs /var/spool/squid 100 16 256 # 如果不需要缓存,可以注释掉这行
-
acl(Access Control List) 和http_access: 这是 Squid 安全控制的核心。acl定义规则,http_access应用规则。示例:只允许特定 IP 或网段使用代理
# 定义一个名为 "localnet" 的规则,包含 192.168.1.0/24 网段 acl localnet src 192.168.1.0/24 # 默认拒绝所有连接 http_access deny all # 允许 "localnet" 网段的用户访问 http_access allow localnet
示例:设置用户名密码认证
-
安装
apache2-utils(它包含htpasswd工具):sudo apt install apache2-utils
-
创建密码文件:
# -c 表示创建新文件,user1 是用户名 sudo htpasswd -c /etc/squid/passwd user1 # 系统会提示你输入并确认密码 # 添加第二个用户时,不要用 -c,否则会覆盖原文件 sudo htpasswd /etc/squid/passwd user2
-
修改 Squid 配置: 在
squid.conf中添加以下配置:# 定义认证程序 auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd auth_param basic children 5 auth_param basic realm Squid Proxy Authentication auth_param basic credentialsttl 2 hours # 定义一个需要认证的 ACL acl auth_users proxy_auth REQUIRED # 应用认证规则:允许通过认证的用户访问 http_access allow auth_users # 确保在 deny all 之前 http_access deny all
-
启动并设置开机自启
配置完成后,启动 Squid 服务并设置为开机自启。
# 启动服务 sudo systemctl start squid # 设置开机自启 sudo systemctl enable squid # 检查服务状态 sudo systemctl status squid
如果遇到问题,可以查看日志:
# 实时查看日志 sudo tail -f /var/log/squid/access.log sudo tail -f /var/log/squid/cache.log
防火墙设置
如果你的服务器启用了防火墙(如 ufw 或 firewalld),需要开放 Squid 使用的端口(默认为 3128)。
使用 UFW (Ubuntu/Debian):
sudo ufw allow 3128/tcp
使用 Firewalld (CentOS/RHEL/Fedora):
sudo firewall-cmd --permanent --add-port=3128/tcp sudo firewall-cmd --reload
你的代理服务器就搭建完成了!你可以在浏览器或其他应用中设置代理服务器地址为你的 Linux 机器的 IP,端口为 3128,如果配置了认证,还需要输入用户名和密码。
配置 Linux 本身使用代理服务器
当你需要让 Linux 系统的所有网络流量(包括 apt, yum, curl, wget 等)都通过一个代理服务器时,可以进行如下配置。
临时设置(仅对当前终端会话有效)
这种方式最简单,但关闭终端后失效。
设置 HTTP 和 HTTPS 代理:
export http_proxy="http://proxy_server_ip:port" export https_proxy="http://proxy_server_ip:port"
示例:
export http_proxy="http://192.168.1.100:3128" export https_proxy="http://192.168.1.100:3128"
如果代理需要用户名和密码:
export http_proxy="http://username:password@proxy_server_ip:port" export https_proxy="http://username:password@proxy_server_ip:port"
示例:
export http_proxy="http://user1:mypassword@192.168.1.100:3128" export https_proxy="http://user1:mypassword@192.168.1.100:3128"
取消临时代理:
unset http_proxy https_proxy
永久设置(推荐)
为了让配置对所有用户和所有程序都生效,可以修改系统的环境变量配置文件。
修改 /etc/environment (对所有用户生效)
使用 sudo 编辑 /etc/environment 文件,添加以下内容:
sudo nano /etc/environment
在文件中添加:
http_proxy="http://proxy_server_ip:port" https_proxy="http://proxy_server_ip:port" # 如果需要,也加上 ftp_proxy ftp_proxy="http://proxy_server_ip:port"
注意:这里的值不要用单引号,用双引号。
修改后,需要重启系统或重新登录才能使配置完全生效。
修改 ~/.bashrc 或 ~/.profile (仅对当前用户生效)
编辑你当前用户的主目录下的配置文件:
nano ~/.bashrc
在文件末尾添加:
export http_proxy="http://proxy_server_ip:port" export https_proxy="http://http://proxy_server_ip:port" export ftp_proxy="http://proxy_server_ip:port"
然后执行以下命令使配置立即生效(无需重启):
source ~/.bashrc
为特定程序设置代理
你可能只想让某个特定的程序使用代理,而不是整个系统。
-
对于
apt(Debian/Ubuntu): 创建或编辑/etc/apt/apt.conf.d/proxy.conf文件:sudo nano /etc/apt/apt.conf.d/proxy.conf
Acquire::http::Proxy "http://proxy_server_ip:port"; Acquire::https::Proxy "http://proxy_server_ip:port";
-
对于
yum或dnf(CentOS/RHEL/Fedora): 创建或编辑/etc/yum.conf文件,在[main]部分添加:sudo nano /etc/yum.conf
[main] ... proxy=http://proxy_server_ip:port proxy_username=user1 proxy_password=mypassword
-
对于
git: 在~/.gitconfig文件中添加:[http] proxy = http://proxy_server_ip:port [https] proxy = http://proxy_server_ip:port -
对于
wget: 在~/.wgetrc文件中添加:use_proxy = on http_proxy = http://proxy_server_ip:port https_proxy = http://proxy_server_ip:port
| 任务 | 推荐工具/方法 | 关键点 |
|---|---|---|
| 搭建代理服务器 | Squid | 配置 /etc/squid/squid.conf,使用 acl 和 http_access 控制访问,可用 htpasswd 实现认证。 |
| 临时使用代理 | export 命令 |
在终端中设置,仅对当前会话有效。 |
| 永久使用代理 | 修改 /etc/environment 或 ~/.bashrc |
/etc/environment 对所有用户生效,~/.bashrc 仅对当前用户生效。 |
| 为特定程序设置代理 | 修改该程序的配置文件 | 如 apt.conf, yum.conf, gitconfig, wgetrc 等。 |
希望这份详细的指南能帮助你顺利地在 Linux 上配置和使用代理服务器!
