系统代理设置教程

Linux系统级代理配置

简介

Linux 系统代理设置教程,涵盖命令行代理、桌面环境代理、以及各种应用的代理配置方法。

系统级代理设置

环境变量方式

临时设置(当前终端)

# HTTP/HTTPS代理
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"

# SOCKS5代理
export all_proxy="socks5://127.0.0.1:7891"

# 不代理的地址
export no_proxy="localhost,127.0.0.1,::1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12"

永久设置(用户级)

编辑 ~/.bashrc~/.zshrc:

nano ~/.bashrc

添加以下内容:

# 代理设置
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export all_proxy="socks5://127.0.0.1:7891"
export no_proxy="localhost,127.0.0.1,::1,192.168.0.0/16,10.0.0.0/8"

使配置生效:

source ~/.bashrc

系统级设置

编辑 /etc/environment:

sudo nano /etc/environment

添加:

http_proxy="http://127.0.0.1:7890"
https_proxy="http://127.0.0.1:7890"
no_proxy="localhost,127.0.0.1,::1"

代理切换脚本

创建快速切换脚本 ~/proxy.sh:

#!/bin/bash

function proxy_on() {
    export http_proxy="http://127.0.0.1:7890"
    export https_proxy="http://127.0.0.1:7890"
    export all_proxy="socks5://127.0.0.1:7891"
    export no_proxy="localhost,127.0.0.1,::1"
    echo -e "代理已开启"
}

function proxy_off() {
    unset http_proxy
    unset https_proxy
    unset all_proxy
    echo -e "代理已关闭"
}

function proxy_status() {
    if [ -n "$http_proxy" ]; then
        echo "代理状态: 开启"
        echo "HTTP代理: $http_proxy"
        echo "HTTPS代理: $https_proxy"
        echo "SOCKS代理: $all_proxy"
    else
        echo "代理状态: 关闭"
    fi
}

case $1 in
    on)
        proxy_on
        ;;
    off)
        proxy_off
        ;;
    status)
        proxy_status
        ;;
    *)
        echo "用法: source proxy.sh {on|off|status}"
        ;;
esac

使用方法:

chmod +x ~/proxy.sh
source ~/proxy.sh on      # 开启代理
source ~/proxy.sh off     # 关闭代理
source ~/proxy.sh status  # 查看状态

桌面环境代理

GNOME/Ubuntu

使用GUI设置

  1. 打开 设置网络
  2. 点击 网络代理
  3. 选择 手动 模式
  4. 配置代理服务器:
    • HTTP代理:127.0.0.1, 端口:7890
    • HTTPS代理:127.0.0.1, 端口:7890
    • SOCKS代理:127.0.0.1, 端口:7891

使用命令行设置

# 设置为手动模式
gsettings set org.gnome.system.proxy mode 'manual'

# HTTP代理
gsettings set org.gnome.system.proxy.http host '127.0.0.1'
gsettings set org.gnome.system.proxy.http port 7890

# HTTPS代理
gsettings set org.gnome.system.proxy.https host '127.0.0.1'
gsettings set org.gnome.system.proxy.https port 7890

# SOCKS代理
gsettings set org.gnome.system.proxy.socks host '127.0.0.1'
gsettings set org.gnome.system.proxy.socks port 7891

# 忽略的主机
gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '127.0.0.0/8', '::1']"

关闭代理:

gsettings set org.gnome.system.proxy mode 'none'

KDE Plasma

  1. 打开 系统设置网络设置代理
  2. 选择 手动指定代理服务器
  3. 配置代理信息:
    • HTTP代理:http://127.0.0.1:7890
    • HTTPS代理:http://127.0.0.1:7890
    • SOCKS代理:socks://127.0.0.1:7891

XFCE

  1. 打开 设置管理器
  2. 选择 会话和启动应用程序自启动
  3. 添加环境变量到启动脚本

应用程序代理配置

APT/APT-GET

创建配置文件:

sudo nano /etc/apt/apt.conf.d/proxy.conf

添加:

Acquire::http::Proxy "http://127.0.0.1:7890";
Acquire::https::Proxy "http://127.0.0.1:7890";

临时使用:

sudo apt-get -o Acquire::http::proxy="http://127.0.0.1:7890" update

Git

# HTTP/HTTPS代理
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

# SOCKS5代理
git config --global http.proxy socks5://127.0.0.1:7891
git config --global https.proxy socks5://127.0.0.1:7891

# 只对GitHub使用代理
git config --global http.https://github.com.proxy http://127.0.0.1:7890

# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

Wget

临时使用:

wget -e use_proxy=yes -e http_proxy=127.0.0.1:7890 URL

永久配置,编辑 ~/.wgetrc:

use_proxy = on
http_proxy = 127.0.0.1:7890
https_proxy = 127.0.0.1:7890
no_proxy = localhost,127.0.0.1

Curl

使用代理:

# HTTP代理
curl -x http://127.0.0.1:7890 URL

# SOCKS5代理
curl -x socks5://127.0.0.1:7891 URL

配置文件 ~/.curlrc:

proxy = 127.0.0.1:7890

Docker

编辑 /etc/systemd/system/docker.service.d/http-proxy.conf:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

添加:

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1"

重启Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

NPM/Yarn

# NPM
npm config set proxy http://127.0.0.1:7890
npm config set https-proxy http://127.0.0.1:7890

# Yarn
yarn config set proxy http://127.0.0.1:7890
yarn config set https-proxy http://127.0.0.1:7890

# 取消代理
npm config delete proxy
npm config delete https-proxy
yarn config delete proxy
yarn config delete https-proxy

Snap

sudo snap set system proxy.http="http://127.0.0.1:7890"
sudo snap set system proxy.https="http://127.0.0.1:7890"

Flatpak

flatpak --user override --env=http_proxy=http://127.0.0.1:7890
flatpak --user override --env=https_proxy=http://127.0.0.1:7890

浏览器代理

Firefox

  1. 打开 设置常规
  2. 滚动到 网络设置
  3. 点击 设置
  4. 选择 手动代理配置
  5. 配置代理信息

Chrome/Chromium

使用命令行参数:

google-chrome --proxy-server="http://127.0.0.1:7890"
google-chrome --proxy-server="socks5://127.0.0.1:7891"

使用SwitchyOmega插件

  1. 安装SwitchyOmega扩展
  2. 配置代理服务器
  3. 设置自动切换规则

代理测试

测试HTTP代理

curl -I http://www.google.com

测试SOCKS代理

curl --socks5 127.0.0.1:7891 http://www.google.com

查看当前IP

curl ip.sb
curl ipinfo.io
curl ifconfig.me

测试代理速度

curl -o /dev/null -s -w 'Total: %{time_total}s\n' http://www.google.com

透明代理

使用iptables

# 将流量重定向到代理端口
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 7890
sudo iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to-port 7890

使用redsocks

安装redsocks:

sudo apt install redsocks

配置 /etc/redsocks.conf:

base {
    log_debug = off;
    log_info = on;
    daemon = on;
    redirector = iptables;
}

redsocks {
    local_ip = 0.0.0.0;
    local_port = 12345;
    ip = 127.0.0.1;
    port = 7891;
    type = socks5;
}

常见问题

代理不生效

# 检查环境变量
echo $http_proxy
echo $https_proxy

# 测试代理连接
curl -v -x http://127.0.0.1:7890 http://www.google.com

部分应用无法使用代理

  • 确认应用支持系统代理
  • 检查应用自身代理设置
  • 尝试使用透明代理

sudo命令无法使用代理

# 保留环境变量
sudo -E apt update

# 或在sudoers中添加
sudo visudo
# 添加: Defaults env_keep += "http_proxy https_proxy no_proxy"

注意事项

  • 不同应用可能需要单独配置
  • 注意代理端口号是否正确
  • 某些应用需要重启才能应用代理设置
  • 合理设置no_proxy以避免不必要的代理
  • 遵守当地法律法规

重要声明

本站仅提供JustMySocks产品的信息介绍和使用教程,不提供代理服务本身。所有服务均由JustMySocks官方提供和运营。

请遵守当地法律法规,合理使用网络服务。本站不对用户的使用行为承担任何责任。