Linux 系统配置 SOCKS5 代理命令行教程

为什么要折腾代理配置?

干我们这行的,谁还没遇到过需要配置代理的时候。可能是连不上 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 curlproxy 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 默认)

  1. 打开 设置网络
  2. 网络代理
  3. 手动
  4. 填代理信息(HTTP/HTTPS/SOCKS)
  5. 应用

KDE

  1. 系统设置网络代理
  2. 手动代理配置
  3. 填信息 → 应用

图形界面适合不太熟悉命令行的用户,不过灵活性差一些,服务器环境一般用不上。

场景推荐

说这么多,到底该用哪种?看场景:

场景推荐方案
日常开发环境变量 + 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

安全建议

几条老生常谈,但很重要:

  1. 别用免费代理——风险太高,可能记录你的流量
  2. 能用 SSH 就用 SSH——加密传输,安全可靠
  3. 定期换代理——别一个 IP 用到底
  4. 检查 DNS 泄露——定期测一下,别裸奔

性能优化

测测延迟

time curl -x socks5://代理地址:端口 https://google.com

配个代理池

需要频繁换 IP 的话,可以在 proxychains.conf 里配多个代理轮换。

调调超时

# ~/.curlrc
connect-timeout = 10
max-time = 60

最后

Linux 配代理就这么几种主流方法,各有各的用处。环境变量最简单,proxychains 最强大,SSH 隧道最安全,图形界面最直观。

开发者的话,环境变量和 proxychains 得掌握;运维的话,SSH 隧道是基本功。其实都不难,多练几次就熟了。

有问题欢迎评论区交流,或者你有更好的方法也欢迎分享!

滚动至顶部