Linux 服务器使用代理经验
1. 推荐方法:使用 SSH 端口转发,转发本地 socks5 端口到服务器上
推荐方法,更安全,更方便
跑如下命令建立 ssh 端口转发,将本地的 7890 端口(clash/mihomo 的 http 代理端口)映射到服务器上的 57890 端口
ssh -R 57890:localhost:7890 <用户名>@<你的服务器地址>在服务器上新建脚本文件
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}以后每次需要代理环境执行命令时,先启动 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 执行命令时同样可用
执行如下命令下载
proxychains-ng项目源码并编译安装git clone https://github.com/rofl0r/proxychains-ng && cd proxychains-ng/ ./configure && make sudo make install sudo make install-config编辑
/usr/local/etc/proxychains.conf,将最后一行改为:socks5 127.0.0.1 57890执行
proxychains4 curl www.google.com测试,观察效果以后每次需要代理环境执行命令时,先启动 ssh 端口转发,再执行命令
proxychains4 <你要执行的命令>,即可强制其走代理访问网络。
2. 不推荐:直接在服务器运行 mihomo 内核
⚠此方法非必要不使用,存在代理服务被服务商检测的可能性,后果自担
从 github 仓库下载 mihomo 的 deb 包,使用
dpkg -i安装手动下载 geoip & geosite & country.mmdb 这几个数据库,放到
/etc/mihomo下载面板前端页面(比如
metacubexd/yacd仓库的gh-pages分支)并放到/etc/mihomo/ui/git clone https://github.com/metacubex/metacubexd.git -b gh-pages /etc/mihomo/ui --depth=1将 mihomo 配置文件上传到服务器上并放入
/etc/mihomo,配置文件中修改external-controller: 0.0.0.0:9090,设置secrets,增加external-ui: /etc/mihomo/ui执行
systemctl start mihomo启动 mihomo 服务浏览器打开
http://<ip>/ui/使用面板进行管理在服务器上新建脚本文件
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}以后每次需要代理环境执行命令时,先启动 mihomo,再执行命令
source /path/to/enable-proxy.sh设置环境变量,然后就可以正常使用代理了
如果 shell 代理无法满足要求,可以使用 proxychains,或者在 mihomo 配置文件中打开 tun,使用原生的 tun 模块来拦截处理所有流量