在配置好系统代理(如V2、Burp等)后,有些软件(Docker)需要手动指定代理,有些软件难以配置代理(如VMware等),这时候就需要第三方软件来实现全局代理。

常用代理配置

终端terminal临时代理配置

  执行export ALL_PROXY=socks5://127.0.0.1:1080配置S5代理,执行unset ALL_PROXY取消代理。

apt代理配置

  apt通过添加参数-o Acquire::http::proxy="socks5h://127.0.0.1:1080"实现Socks5代理。apt update使用代理的命令如下。

apt -o Acquire::http::proxy="socks5h://127.0.0.1:1080" update

ssh代理配置

通过socks或http代理访问目标服务器

socks

借助nc (ncat、netcat)实现

ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:1080 %h %p" root@server

-X:指定代理协议4 => socks4; 5 => socks5;

http

借助corkscrew实现

ssh -o ProxyCommand="corkscrew 127.0.0.1 1081 %h %p" root@server

git代理配置

  git通过下面命令实现代理。

git config --global http.proxy http://127.0.0.1:1081
git config --global https.proxy http://127.0.0.1:1081

  取消代理则为

git config --global --unset http.proxy
git config --global --unset https.proxy

wget代理配置

借助环境变量实现(变量全小写),例如

https_proxy=http://127.0.0.1:1081
http_proxy=http://127.0.0.1:1081
ftp_proxy=http://127.0.0.1:1081

或者利用-e--execute=COMMAND)附加参数

wget -e "https_proxy=http://127.0.0.1:1081" https://fqdn:port/downloadPath

pip代理配置

  pip通过添加参数--proxy=http://127.0.0.1:1081来实现代理,如

pip --proxy=http://127.0.0.1:1081 install requests

  注意:pip想要使用socks5代理需要提前安装pysocks,即pip install pysocks

npm代理配置

  npm通过下面命令实现代理。

npm config set proxy http://127.0.0.1:1081
npm config set https-proxy http://127.0.0.1:1081

  取消代理则为

npm config delete proxy
npm config delete https-proxy

全局代理配置

分应用代理配置(Proxifier)

  通过使用第三方软件Proxifier来实现,为什么是这个软件呢,因为这个软件激活码很好找功能强大。其配置过程大致如下

  其中第一条规则作用是防止本机循环代理;第二、三条防止代理代理软件(根据个人情况自行设定),作用与第一条类似;第三条默认情况,这里的默认情况是所有其他应用使用设定的代理服务器,当然你也可以设置成直接连接,然后添加需要代理的应用,实现分应用代理。
  这个软件虽然能代理大部分软件,但是不能代理VMware,因为VMware使用的是虚拟网卡。

使用虚拟网卡实现全局代理(SSTap、Netch)

  上面说了,使用Proxifier并不能实现VMware的代理,这时候就需要使用第三方软件SSTapNetch来实现全局代理。值得注意的是,SSTap在2017-11-13停止开发。软件可以在GitHub轻松找到备份,这里就不提供下载连接了。配置也比较简单,在添加完服务器后,规则选全局即可。
  这里推荐Netch,因为其开源,且支持VLESS协议,目前正在更新在发布1.9.4之后已归档,可以在GitHub下载。

安卓全局代理(SagerNet)

  安卓虽然有提供代理设置选项,但是国内绝大多数应用都不会遵从该设置,而root又比较麻烦,这时候就需要第三方软件Drony或者是开源项目SagerNet来实现。
  这里推荐开源项目SagerNet

通过VPN实现全局代理

  将VPN的出口指向代理地址即可,与使用虚拟网卡实现全局代理实现方法基本一致。这里推荐tun2socks
将VPN的出口指向代理地址。具体的使用方法可以参考tun2socks的Wiki。流程大致分为三步:创建虚拟网卡,分配IP,配置路由。这里以Linux为例,MacOs与Windows尚未验证。值得一提的是,route add命令创建的路由在重启后失效。

Linux

执行lsmod | grep tun,若没有结果,则需要执行sudo modprobe tun,不然会有open: No such device的报错。

创建 TUN 接口tun0并为其分配 IP 地址。

ip tuntap add mode tun dev tun0
ip addr add 192.168.168.1/24 dev tun0
ip link set dev tun0 up

配置路由表,假设默认网关是192.168.1.1

ip route del default
ip route add default via 192.168.168.1 dev tun0 metric 20
ip route add default via 192.168.1.1 dev eth0 metric 30

启动 tun2socks 并将其绑定到主接口。

tun2socks -device tun0 -proxy socks5://host:port -interface eth0

注意:有时我们需要禁用rp_filter,以便可以接收来自其他接口的数据包。

sysctl net.ipv4.conf.all.rp_filter=0
sysctl net.ipv4.conf.eth0.rp_filter=0

MacOs

tun2socks -device utun123 -proxy socks5://host:port -interface en0

sudo ifconfig utun123 198.18.0.1 198.18.0.1 up

sudo route add -net 1.0.0.0/8 198.18.0.1
sudo route add -net 2.0.0.0/7 198.18.0.1
sudo route add -net 4.0.0.0/6 198.18.0.1
sudo route add -net 8.0.0.0/5 198.18.0.1
sudo route add -net 16.0.0.0/4 198.18.0.1
sudo route add -net 32.0.0.0/3 198.18.0.1
sudo route add -net 64.0.0.0/2 198.18.0.1
sudo route add -net 128.0.0.0/1 198.18.0.1
sudo route add -net 198.18.0.0/15 198.18.0.1

Windows

Windows需要额外下载一个wintun.dll放到tun2socks目录下,或者存放到系统PATH目录(system32)。

tun2socks -device wintun -proxy socks5://host:port

netsh interface ip set address name="wintun" source=static addr=192.168.123.1 mask=255.255.255.0 gateway=none

route add 0.0.0.0 mask 0.0.0.0 192.168.123.1 if <IF NUM> metric 5
route add <server ip> mask 255.255.255.255 <primary gateway ip>