wsl2 怎么设置才能走 clash 的代理?

2020-05-30 23:32:45 +08:00
 aragakiyuii

之前 wsl 直接设置 http_proxy 然后 clash 开启 lan 就行

救救孩子吧。。

28332 次点击
所在节点    Windows
57 条回复
misaka00001
2020-05-31 09:42:53 +08:00
.bashrc 或者 .zshrc 设置

export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
alias proxy='export all_proxy="socks5://${hostip}:7891";curl ip.sb;'
alias unproxy='unset all_proxy;curl ip.sb;'
aragakiyuii
2020-05-31 09:55:08 +08:00
@misaka00001 #21 谢谢,之前就这么设置的



wipbssl
2020-05-31 10:49:24 +08:00
@aragakiyuii 我觉得你可以试试把 clash 里 allow lan 打开,然后 wsl 设置代理为主机的 ip,我的 hyperv 上的 Windows 虚拟机是这么设置的,不知道 wsl 可不可以
toptyloo
2020-05-31 12:07:39 +08:00
首先打开 clash 的 Allow Lan,然后修改.zshrc 或者.bashrc
export WIN_IP=`cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`
# # 删除 ~/.proxychains.conf 中 [ProxyList] 所在行到文件末尾的全部内容
sed -i '/\[ProxyList\]/,$d' ~/.proxychains.conf
# # 往文件末尾添加 socks5 设置,port 是我的 clash 的本地端口号
echo '[ProxyList]\nsocks5 '${WIN_IP}' port' >> ~/.proxychains.conf
alias pc='proxychains4 -q -f ~/.proxychains.conf'
ZingLix
2020-05-31 18:50:58 +08:00
如果可以 ping 通 Windows 的话,可以试试 windows 防火墙里“允许应用通过防火墙”,检查下里面是不是允许代理软件通过了
bowser1701
2020-05-31 19:03:45 +08:00
直接 clash 开局域网代理,
然后 export xxx_proxy=局域网 ip 端口就可以了。
就相当于你这台机器给局域网另一台机器上代理,不用管 wsl 。
aragakiyuii
2020-05-31 20:42:01 +08:00
@wipbssl #23
@bowser1701 #26

wsl 上可以,wsl2 不行
bowser1701
2020-05-31 21:02:41 +08:00
@aragakiyuii 可以的,我试过的。
bowser1701
2020-05-31 21:07:38 +08:00
@aragakiyuii 设置个 http_proxy 和 https_proxy 试一下。默认端口是 7980 。
bowser1701
2020-05-31 21:08:28 +08:00
@bowser1701 fix 7980 to 7890
aragakiyuii
2020-05-31 21:09:01 +08:00
@ZingLix #25 谢谢,但是“允许应用通过防火墙”我是一直允许 clash 的,之前想手动添加 Ubuntu 但是找不到路径。。


@toptyloo #24 谢谢但是还是代理不了。。要疯了



toptyloo
2020-05-31 21:11:45 +08:00
@aragakiyuii #31 proxychains(根据你安装的版本) curl myip.ipip.net
toptyloo
2020-05-31 21:12:28 +08:00
不对,看错了。。。
@toptyloo #32
aragakiyuii
2020-05-31 21:12:39 +08:00
@bowser1701 #28 这个代理方式我在 wsl 上用的挺好的,一更新到 wsl2 就不能用了。。我这是真没法成功代理。。我看 wsl github 上有好多 issue 里面都提到这样设置代理没效果

不太想弄了。。弄这个代理也是为了 fq 连 gcp,刚才把我家路由刷了梅林装了 v2ray 插件直接走路由器代理了
aragakiyuii
2020-05-31 21:25:40 +08:00
@toptyloo #33 我总感觉是防火墙的问题,icmp 是可以的,tcp/http 就不行。然而我把防火墙关了依然如此,就很迷

https://github.com/microsoft/WSL/issues/4402#issuecomment-520333571

这个 issue 里 wsl 的维护者推荐在 wsl2 里开代理,让 windows -> wsl2 而不是 wsl2 -> windows,像#3 楼说的内样准备在 wsl2 里配置 clash 了
mq4079
2020-05-31 21:31:10 +08:00
@aragakiyuii 两条命令搞定:
export http_proxy=`cat /etc/resolv.conf|grep nameserver|awk '{print $2}'`:10809
export https_proxy=`cat /etc/resolv.conf|grep nameserver|awk '{print $2}'`:10809
wsl2 的网关是动态的必须用`cat /etc/resolv.conf|grep nameserver|awk '{print $2}'`先解析出网关 ip
aragakiyuii
2020-06-01 21:33:47 +08:00
莫名奇妙解决了

如果要用 cfw fq 的话:
- wsl2 里不开 proxy,在 cfw 里装上 tap 网卡,成功了会在网络适配器中显示(一开始显示的是"网络电缆被拔出"




- 然后在 config.yml 中添加 mixin 配置


- 然后 cfw 主界面中打开 mixin,等待一会会有弹窗或者从右侧弹出通知,允许。再去看网络适配器里 cfw-tap 虚拟网卡就会正常显示了
- 这样就行了,保证 tap 开启,wsl2 的流量会被 tap 代理到并且转发,关于 tap 的文档(关于 experimental 配置可以不用加上了,现在会自动找到主网卡 https://docs.cfw.lbyczf.com/contents/tap.html

关于 windows -> wsl2:
直接用 localhost 就能访问,我在 wsl2 里启动了个 python http 服务(python -m http.server),windows 上访问 localhost:8000 就能访问到 wsl2 目录

关于 wsl2 -> windows
还不清楚怎么弄,在防火墙里加入站规则之后倒是能 ping 通了
keepeye
2020-06-18 13:27:19 +08:00
我也刚用 wsl2 也是这个问题,只能通过 tap 解决吗?
razeen
2020-07-05 08:21:35 +08:00
遇到很奇快的问题

代理端口我设置在 50000 以上的时候,proxy 连不通;

然后我改到 8000 多,就可以了。。。

防火墙也没动过哇==
qrqhuang
2020-07-30 02:14:47 +08:00
@misaka00001 ip.sb 原来还有这个 IP 检测站。 感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/677083

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX