使用v2ray与ss-tproxy来做透明代理,代理本机的所有流量。
ss-tproxy项目链接:https://github.com/zfl9/ss-tproxy
安装v2ray
透明代理使用的v2ray不能使用docker安装,使用这个项目提供的脚本来安装v2ray。
1 | bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) |
脚本会将配置文件安装到/usr/local/etc/v2ray/config.json
。然后根据自己的v2ray服务器地址编写配置文件,配置文件基本上没有什么变化,只需要在原来的inbounds
中新增一个类型为dokodemo-door
的入口即可,且ss-tproxy
不建议在v2ray中做分流,则outbound中也只需要有一个出口即可,则整个配置文件的看起来像下面这样(其中出口处的信息已经隐去)
1 |
|
然后即可使用命令来启动v2ray
1 | systemctl start v2ray.service |
启动后,通过命令查看程序状态
1 | systemctl status v2ray.service |
可以看到程序状态为active
,说明正常启动。
安装ss-tproxy以及其相关依赖
根据官方提供的相关依赖安装,根据自己的系统安装下列依赖。
装好了依赖之后,安装ss-tproxy,参考:https://github.com/zfl9/ss-tproxy#%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC
1 | git clone https://github.com/zfl9/ss-tproxy |
然后根据我们的设置修改ss-tproxy
的配置文件
1 | vim /etc/ss-tproxy/ss-tproxy.conf |
然后按照我们v2ray
的配置,修改配置文件,下面只列出了需要修改的部分
1 | ## proxy |
修改完毕后,启动ss-tproxy
。
1 | sudo ss-tproxy start |
然后查看状态
1 | sudo ss-tproxy status |
如果显示都是running则说明没有问题。
然后可以测试一下全局透明代理是否生效,首先测试一下国内的百度能够访问
1 | curl -4vsSkL https://www.baidu.com |
如果启动dnsmasq失败,需要关闭ubuntu的默认dns,可以参考https://www.netroby.com/view/4076
如果能看到网页源码的输出,则说明没有问题
然后来测试国外网址的代理是否生效,新开一个ssh连接到服务器,使用journalctl -u v2ray -f
来查看v2ray的输出。
然后在原来的ssh中执行以下命令。
1 | curl -4vsSkL https://www.google.com |
如果能看到网页源码输出,且在v2ray的日志中能够看到类似下面的日志,就说明国外的流量被正确的分流到了v2ray中,透明代理生效了.
1 | Dec 09 07:39:52 dev v2ray[57363]: 2021/12/09 07:39:52 [Info] [326836364] proxy/dokodemo: received request for 172.31.197.148:50420 |
其他
至此,v2ray和ss-tproxy都安装完成,实现了机器上的透明代理,机器上所有的流量都会先经过ss-tproxy
来分流,如果是访问国外的流量会被分流到v2ray中做代理。
如果想要关闭ss-tproxy
,使用下列命令
1 | ss-tproxy stop |