为什么要折腾代理配置?
干我们这行的,谁还没遇到过需要配置代理的时候。可能是连不上 GitHub 下载依赖,可能是要测试不同地区的访问效果,也可能就是单纯想保护一下隐私。
Linux 跟 Windows、Mac 不太一样,图形界面能搞定的事儿不多,大部分时候还是得跟命令行打交道。不过好消息是,Linux 的代理配置其实挺灵活的,掌握几个核心方法,基本就能应对所有场景。
下面这几种方法,都是我平时用得比较多的,从临时测试到生产环境配置都有。
方法一:环境变量(最通用)
这招最简单,也最常用。大部分命令行工具都认这个。
临时用用(关掉终端就没了)
# HTTP 代理
export http_proxy="http://192.168.1.100:8080"
export https_proxy="http://192.168.1.100:8080"
# SOCKS5 代理(注意协议头)
export http_proxy="socks5://192.168.1.100:1080"
export https_proxy="socks5://192.168.1.100:1080"
# 需要账号密码的话
export http_proxy="socks5://username:password@192.168.1.100:1080"
export https_proxy="socks5://username:password@192.168.1.100:1080"
看看配没配好
# 瞅一眼环境变量
echo $http_proxy
echo $https_proxy
# 测试一下
curl ipinfo.io
要是返回的 IP 是代理服务器的,那就成了。
永久生效(重启也在)
临时配置关掉终端就没了,想长期用得写到配置文件里。
Bash 用户(大多数发行版):
nano ~/.bashrc
# 文件末尾加上
export http_proxy="socks5://192.168.1.100:1080"
export https_proxy="socks5://192.168.1.100:1080"
# 保存后执行
source ~/.bashrc
Zsh 用户:
nano ~/.zshrc
# 同样的环境变量加进去
source ~/.zshrc
想让所有用户都生效:
sudo nano /etc/environment
# 加完重启或者重新登录
小建议:生产环境尽量别用系统级配置,万一代理挂了,所有用户都受影响。
方法二:proxychains(强制应用走代理)
有些程序比较犟,不认环境变量,这时候就得请出 proxychains 了。它的原理是劫持应用的 network 调用,强制走代理。
安装
Ubuntu/Debian:
sudo apt update
sudo apt install proxychains
CentOS/RHEL:
sudo yum install epel-release
sudo yum install proxychains-ng
Arch:
sudo pacman -S proxychains-ng
配置
sudo nano /etc/proxychains.conf
找到这几行改一下:
# 用动态链(按顺序尝试)
dynamic_chain
# random_chain 记得注释掉
#random_chain
# 文件末尾添加你的代理
[ProxyList]
socks5 192.168.1.100 1080
要认证的话:
socks5 192.168.1.100 1080 username password
用起来
配置好后,在命令前面加 proxychains4 就行:
proxychains4 curl ipinfo.io
proxychains4 git clone https://github.com/user/repo.git
proxychains4 firefox
proxychains4 apt update
偷懒技巧
每次打 proxychains4 太麻烦,可以弄个别名:
nano ~/.bashrc
# 加上
alias proxy='proxychains4'
alias apt='proxychains4 apt'
alias git='proxychains4 git'
source ~/.bashrc
以后直接用 proxy curl、proxy git 就行,省事多了。
注意:
apt这种系统命令的别名要谨慎,有时候你可能不想让它走代理。
方法三:SSH 隧道(最稳妥)
要是你自己有台云服务器,用 SSH 隧道是最安全的选择。流量全程加密,还不怕被检测。
一条命令搞定
ssh -D 1080 -N -f user@your-server.com
参数解释:
-D 1080:本地 1080 端口开 SOCKS5 代理-N:不执行远程命令(纯隧道)-f:丢后台运行user@your-server.com:你的服务器
配合环境变量
隧道建好后,本地 1080 端口就是个代理了:
export http_proxy="socks5://127.0.0.1:1080"
export https_proxy="socks5://127.0.0.1:1080"
开机自启(systemd)
想让隧道开机自动连,可以弄个 systemd 服务:
sudo nano /etc/systemd/system/ssh-tunnel.service
[Unit]
Description=SSH SOCKS5 Tunnel
After=network.target
[Service]
Type=forking
User=your-username
ExecStart=/usr/bin/ssh -D 1080 -N -f user@your-server.com
ExecStop=/usr/bin/pkill -f "ssh -D 1080"
Restart=on-failure
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl daemon-reload
sudo systemctl enable ssh-tunnel
sudo systemctl start ssh-tunnel
systemctl status ssh-tunnel
这样服务器重启后隧道会自动恢复,比较省心。
方法四:图形界面(桌面用户)

要是用的是带桌面的 Linux(比如 Ubuntu Desktop),其实也可以用图形界面配。
GNOME(Ubuntu 默认)
- 打开 设置 → 网络
- 点 网络代理
- 选 手动
- 填代理信息(HTTP/HTTPS/SOCKS)
- 点 应用
KDE
- 系统设置 → 网络 → 代理
- 选 手动代理配置
- 填信息 → 应用
图形界面适合不太熟悉命令行的用户,不过灵活性差一些,服务器环境一般用不上。
场景推荐
说这么多,到底该用哪种?看场景:
| 场景 | 推荐方案 |
|---|---|
| 日常开发 | 环境变量 + proxychains |
| 生产服务器 | SSH 隧道 |
| 临时测试 | 临时环境变量 |
| 全部流量走代理 | 系统级配置 + proxychains |
开发环境我个人推荐这样配:
# ~/.bashrc 里
export http_proxy="socks5://127.0.0.1:1080"
export https_proxy="socks5://127.0.0.1:1080"
# 特定命令单独处理
alias git-proxy='proxychains4 git'
日常走环境变量,遇到不听话的程序再用 proxychains 强制。
服务器环境就别犹豫了,SSH 隧道最稳。自己搭的服务器,安全性和可控性都有保障。
常见问题
代理配了没反应?
按这个顺序查:
# 1. 环境变量有没有
echo $http_proxy
echo $https_proxy
# 2. 代理能不能连
curl -x socks5://192.168.1.100:1080 ipinfo.io
# 3. 端口通不通
nc -zv 192.168.1.100 1080
DNS 泄露怎么办?
访问 dnsleaktest.com 测一下。如果泄露,用 SOCKS5 代理(支持远程 DNS),或者手动配 /etc/resolv.conf。
有些程序就是不走代理?
用 proxychains 强制它走。有些程序有自己的代理设置,去里面单独配。
proxychains 报错?
ERROR: ld.so: object 'libproxychains.so.4' could not be loaded.
重装试试:
sudo apt remove proxychains-ng
sudo apt install proxychains-ng
安全建议
几条老生常谈,但很重要:
- 别用免费代理——风险太高,可能记录你的流量
- 能用 SSH 就用 SSH——加密传输,安全可靠
- 定期换代理——别一个 IP 用到底
- 检查 DNS 泄露——定期测一下,别裸奔
性能优化
测测延迟
time curl -x socks5://代理地址:端口 https://google.com
配个代理池
需要频繁换 IP 的话,可以在 proxychains.conf 里配多个代理轮换。
调调超时
# ~/.curlrc
connect-timeout = 10
max-time = 60
最后
Linux 配代理就这么几种主流方法,各有各的用处。环境变量最简单,proxychains 最强大,SSH 隧道最安全,图形界面最直观。
开发者的话,环境变量和 proxychains 得掌握;运维的话,SSH 隧道是基本功。其实都不难,多练几次就熟了。
有问题欢迎评论区交流,或者你有更好的方法也欢迎分享!
