1. 什么是透明代理?
百科上这样说的
透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改变你的request fields(报文),并会传送真实IP,多用于路由器的NAT转发中。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。
2. 我想用透明代理实现什么需求?
让家里的设备自动走统一的代理配置,只要在一台机器上配置代理客户端。使用透明代理实现的话,局域网的其他想走自动代理的机器只需要把网关和DNS设置为代理机的ip即可,这一步可以在路由器的DHCP里自动设置。但是我实测失败了,原因可能是我选的方案奇葩,我选的方案是在docker 里面部署代理机,代理客户端选的 v2ray。
用的方案就是这个 https://github.com/lisaac/tproxy-gateway
遇到个 v2ray 的报错没有解决。
其实还有其他方案可以尝试,比如用虚拟机的这套方案
https://github.com/icymind/VRouter
我不想再搞一套虚拟机,因为我的需求只是为了让局域网的机器可以方便的配置自动代理,然后我就换了一种方案。
3. 自动代理 PAC?
局域网的机器如果直接设置代理为 v2ray 客户端的端口 8080,就会全部走代理了。为了不需要在每台机器上都配置 PAC,就需要再加一层代理了,可以用 Privoxy 搭建。
网络结构是这样的:
windows/linux/mac/android/ios
-> privoxy(192.168.2.2:8081)
-> v2ray client(192.168.2.2:8080)
-> v2ray server(xx.xx.com:443)
这样一来,局域网的机器只需要把代理配置为 192.168.2.2:8081 即可。
v2ray server 安装在自己买的 VPS 上,安装方法网上教材很多很多。
v2ray client 和 privoxy 我是安装在 docker 里面。privoxy 的配置用的这个工具 zfl9/gfwlist2privoxy 把 gfwlist 转成 gfwlist.action
配置文件的。写了个脚本转完后重启 privoxy 容器,然后配置 crontab 自动每天做一次。
可以参考我的 docker-compose.yml 配置:
version: '2'
services:
v2ray:
image: v2ray/official
restart: always
container_name: v2ray
ports:
- "1080:1080"
- "8080:8080"
volumes:
- ./data/v2ray:/etc/v2ray
entrypoint:
- v2ray
- -config=/etc/v2ray/config.json
privoxy:
image: vimagick/privoxy
restart: always
container_name: privoxy
ports:
- "8081:8118"
volumes:
- ./data/privoxy/user.action:/etc/privoxy/user.action
cap_add:
- NET_ADMIN
PS: 如果想要配置带认证的代理,Privoxy 好像还不支持,可以考虑用 Squid 替代 Privoxy.