Linux 服务器使用代理经验

1. 推荐方法:使用 SSH 端口转发,转发本地 socks5 端口到服务器上

推荐方法,更安全,更方便

  1. 跑如下命令建立 ssh 端口转发,将本地的 7890 端口(clash/mihomo 的 http 代理端口)映射到服务器上的 57890 端口

    ssh -R 57890:localhost:7890 <用户名>@<你的服务器地址>
  2. 在服务器上新建脚本文件 enable-proxy.sh,内容如下:

    echo Tips:请使用source执行本脚本以修改父shell的变量
    
    HTTP_PROXY_URL=http://127.0.0.1:57890
    SOCK5_PROXY_URL=socks5://127.0.0.1:57890
    PROXY_BYPASS=192.168..,172.16..,.local,localhost,127.0.0.1
    
    
    # 配置http和https代理
    export http_proxy=${HTTP_PROXY_URL}
    export https_proxy=${HTTP_PROXY_URL}
    export all_proxy=${SOCK5_PROXY_URL}
    export no_proxy=${PROXY_BYPASS}
    # ftp代理看需求配置
    # export ftp_proxy= http_proxy
    
    # 设置git代理
    git config --global https.proxy ${HTTP_PROXY_URL}
    git config --global http.proxy ${HTTP_PROXY_URL}
  3. 以后每次需要代理环境执行命令时,先启动 ssh 端口转发,再执行 source /path/to/enable-proxy.sh 设置环境变量,然后就可以正常使用代理了

1.1. sudo 执行命令时,代理设置没有效果?

原因:sudo 会清理部分环境变量,导致设置的 http_proxy 等失去效果

解决办法:执行 sudo 时额外引入相关环境变量即可:

sudo env "http_proxy=$http_proxy" "https_proxy=$https_proxy" "no_proxy=$no_proxy" <你要执行的命令>

1.2. 有程序不使用 http_proxy 环境变量怎么办?

解决办法:使用 proxychains 强制目标程序走代理访问网络

proxychains 在通过 sudo 执行命令时同样可用

  1. 执行如下命令下载 proxychains-ng 项目源码并编译安装

    git clone https://github.com/rofl0r/proxychains-ng && cd proxychains-ng/
    ./configure && make
    sudo make install
    sudo make install-config
  2. 编辑 /usr/local/etc/proxychains.conf,将最后一行改为:

    socks5 127.0.0.1 57890
  3. 执行 proxychains4 curl www.google.com 测试,观察效果

  4. 以后每次需要代理环境执行命令时,先启动 ssh 端口转发,再执行命令 proxychains4 <你要执行的命令>,即可强制其走代理访问网络。

2. 不推荐:直接在服务器运行 mihomo 内核

⚠此方法非必要不使用,存在代理服务被服务商检测的可能性,后果自担

  1. 从 github 仓库下载 mihomo 的 deb 包,使用 dpkg -i 安装

  2. 手动下载 geoip & geosite & country.mmdb 这几个数据库,放到 /etc/mihomo

  3. 下载面板前端页面(比如 metacubexd/yacd 仓库的 gh-pages 分支)并放到 /etc/mihomo/ui/

    git clone https://github.com/metacubex/metacubexd.git -b gh-pages /etc/mihomo/ui --depth=1
  4. 将 mihomo 配置文件上传到服务器上并放入 /etc/mihomo,配置文件中修改 external-controller: 0.0.0.0:9090,设置 secrets,增加 external-ui: /etc/mihomo/ui

  5. 执行 systemctl start mihomo 启动 mihomo 服务

  6. 浏览器打开 http://<ip>/ui/ 使用面板进行管理

  7. 在服务器上新建脚本文件 enable-proxy.sh,内容如下:

    echo Tips:请使用source执行本脚本以修改父shell的变量
    
    HTTP_PROXY_URL=http://127.0.0.1:57890
    SOCK5_PROXY_URL=socks5://127.0.0.1:57890
    PROXY_BYPASS=192.168..,172.16..,.local,localhost,127.0.0.1
    	
    	
    # 配置http和https代理
    export http_proxy=${HTTP_PROXY_URL}
    export https_proxy=${HTTP_PROXY_URL}
    export all_proxy=${SOCK5_PROXY_URL}
    export no_proxy=${PROXY_BYPASS}
    # ftp代理看需求配置
    # export ftp_proxy= http_proxy
    
    # 设置git代理
    git config --global https.proxy ${HTTP_PROXY_URL}
    git config --global http.proxy ${HTTP_PROXY_URL}
  8. 以后每次需要代理环境执行命令时,先启动 mihomo,再执行命令 source /path/to/enable-proxy.sh 设置环境变量,然后就可以正常使用代理了

如果 shell 代理无法满足要求,可以使用 proxychains,或者在 mihomo 配置文件中打开 tun,使用原生的 tun 模块来拦截处理所有流量


Linux 服务器使用代理经验
https://blog.openyq.top/posts/57548/
作者
yqs112358
许可协议