Clash 是一款我非常喜欢的一个上网工具,它优雅灵活,功能丰富又配置简单。因此我放弃了什么小飞机,v2等等客户端,全平台改用clash。最近遇到了个问题,那就是虚拟机的Linux很难实现全局代理,总是有些傻逼软件不喜欢走代理,要手动给他加--proxy这样的参数,很是烦人。
后来我想了个办法,就是这个
配置环境
虚拟机
系统: Debian 10
主电脑
系统: Windows 10
Clash For Windows: 0.11.1
方法
Clash配置
首先在Clash For Windows主面板里打开allow lan,然后在配置文件里加上(proxies上面)以下配置
dns:
enable: true
listen: 192.168.xx.1:53
enhanced-mode: redis-host
nameserver:
- 119.29.29.29
- 114.114.114.114
- 8.8.8.8
- 1.1.1.1
- tls://dns.pub:853
- tls://dns.google:853
- https://doh.pub/dns-query
- https://dns.google/dns-query
其中xx是你的虚拟机子网,1一般都是代表主机的。
虚拟机Nameserver配置
然后打开虚拟机,把/etc/resolv.conf里的nameserver统统删掉换成
nameserver 192.168.xx.1(xx就是你的虚拟机子网)
保存然后,systemctl restart networking
这一步主要是防止虚拟机错误的解析出域名,例如谷歌之类的
Redsocks配置
然后开始配置Redsocks
编辑文件/etc/redsocks.conf
找到local_port,改一个你喜欢的,要记住,下面ufw要用到
然后找到ip,填上192.168.xx.1(虚拟机子网主机)
端口填你的clash Socks5端口,保存启动
UFW配置
然后开始配置ufw
先开放所有,毕竟虚拟机又不需要什么端口限制
ufw default allow outgoing
ufw default allow incoming
然后编辑/etc/default/ufw,找到DEFAULT_FORWARD_POLICY一行,把DROP改成ACCEPT
然后在/etc/sysctl.conf添加
`net.ipv4.ip_forward = 1
然后sysctl -p`
然后/etc/ufw/before.rules添加下面一行
*nat
:POSTROUTING ACCEPT - [0:0]
:SOCKS ACCEPT - [0:0]
:OUTPUT ACCEPT - [0:0]
-A SOCKS -d 0.0.0.0/8 -j RETURN
-A SOCKS -d 127.0.0.0/8 -j RETURN
-A SOCKS -d 192.168.0.0/16 -j RETURN
....(添加你的虚拟机子网段,非常重要,否则会把虚拟机局域网流量引到主机上)
-A SOCKS -p tcp -j REDIRECT --to-ports xxxx(你的redsocks local_port端口)
-A OUTPUT -p tcp -j SOCKS
-A POSTROUTING -j MASQUERADE
COMMIT
然后启动ufw,ufw enable && ufw reload,好像不reload没发完全加载,然后你发现所有软件都走代理了,真正的全局代理,不再是system proxy那种虚假全局代理了。
暂无评论