wsl2 怎么设置才能走 clash 的代理? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aragakiyuii
V2EX    Windows

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

  •  
  •   aragakiyuii 2020-05-30 23:32:45 +08:00 via Android 29637 次点击
    这是一个创建于 1961 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    • 按 wsl github 上某个 issue 说的改了入站规则能 ping 通了,但是还是没法走代理

    • clash 开 tap 虚拟网卡也不行,去看 cfw github 上某个 issue 说要把 tap 网卡改成专用网络,还是不行。。

    • http proxy ip 设置的主网卡和 wsl 网卡的 ip 都不行

    救救孩子吧。。

    第 1 条附言    2020-05-31 09:10:25 +08:00
    现在能 ping,但是各种 tcp http 请求都没法走代理(socks5 和 http 代理都不行),提示 connect timeout
    57 条回复    2022-11-24 13:24:38 +08:00
    puekin
        1
    puekin  
       2020-05-30 23:48:13 +08:00 via iPhone
    同文 昨天升完 2004,顺手吧 wsl2 转发了 但是 zsh 下载不了, 晚上说了 export ip:端口试了也没用
    Jirajine
        2
    Jirajine  
       2020-05-30 23:54:48 +08:00 via Android
    直接透明代理解决一切疑难杂症,没有软路由的话可以起个 openwrt 虚拟机当网关。
    另外不建议用这个闭源的玩意,倒不是说信不过,而是担心哪天作者被上门喝茶然后“招安”,这玩意要联网和 UAC,单点故障风险太大。
    iamwho
        3
    iamwho  
       2020-05-31 00:03:08 +08:00
    如果解决不了,那就直接在 wsl 内配置安装 clash.

    对于 *nix,
    直接使用代理客户端 + proxychains 会更好。

    @Jirajine #2
    clash 开源。
    aragakiyuii
    &nsp;   4
    aragakiyuii  
    OP
       2020-05-31 00:14:59 +08:00 via Android
    @Jirajine 谢谢,不行的话就只能跑 openwrt 了cfw 只是为了 fq 用
    aragakiyuii
        5
    aragakiyuii  
    OP
       2020-05-31 00:22:06 +08:00 via Android
    @iamwho
    谢谢,我去看看 clash 文档
    wsl 走代理主要是为了 fq现在用的是 cfw(楼上说的闭源意思应该是指这个软件
    aragakiyuii
        6
    aragakiyuii  
    OP
       2020-05-31 00:26:02 +08:00 via Android
    @puekin 具体不太清楚是什么原因,感觉还是防火墙规则的问题,之前 wsl 设置的代理都是本机 ip
    shansing
        7
    shansing  
       2020-05-31 00:35:43 +08:00
    @aragakiyuii WSL2 是个虚拟机,听说虚拟机内不能访问外界的 Windows localhost: /t/670391?p=1#r_8949686
    aragakiyuii
        8
    aragakiyuii  
    OP
       2020-05-31 00:42:52 +08:00 via Android
    @shansing 这个我知道,之前我在 wsl 上设置的代理也不是 localhost
    wsly47
        9
    wsly47  
       2020-05-31 00:58:41 +08:00   8

    leewi9coder
        10
    leewi9coder  
       2020-05-31 00:59:01 +08:00 via iPhone
    从 wsl 的角度看,主机 ip 是多少?这样就可以直接用主机的 http 代理端口了吧
    Tita33
        11
    Tita332  
       2020-05-31 02:29:21 +08:00 via iPhone
    确定 tap 成功开启了吗,我这里用 tap 是可以的
    kwlokip
        12
    kwlokip  
       2020-05-31 07:10:42 +08:00 via Android
    aragakiyuii
        13
    aragakiyuii  
    OP
       2020-05-31 08:16:39 +08:00
    @wsly47 #9 谢谢,设置完了还是不行

    aragakiyuii
        14
    aragakiyuii  
    OP
       2020-05-31 08:18:47 +08:00
    @leewi9coder #10 wsl 里 get 到的主机 ip 其实是 hyper-v 内块虚拟网卡上设置的 ip,测试时候一直用的是这个
    aragakiyuii
        15
    aragakiyuii  
    OP
       2020-05-31 08:22:42 +08:00
    @Tita332 #11
    开启了(我把建立的入站规则关闭之后,tap 不开就 ping 不通 windows 和 www.google.com ,开启了才可以)
    这是 tap 网卡

    这是配置
    aragakiyuii
        16
    aragakiyuii  
    OP
       2020-05-31 08:25:58 +08:00
    @kwlokip #12 谢谢,这篇文章之前搜到过。关于文章里 “WSL2 连接到主机代理” 这一块,我的设置是跟他一样的
    aragakiyuii
        17
    aragakiyuii  
    OP
       2020-05-31 08:28:24 +08:00
    @Tita332 #11
    我这安装完 tap 后,界面上 tap 这个地方还是显示 install,这个是我没配置好还是 cfw 的 bug ?
    anguiao
        18
    anguiao  
       2020-05-31 08:28:55 +08:00
    “experimental” 字段已经不需要了,删掉试试?不过也可能和这个没什么关系
    xau
        19
    xau  
       2020-05-31 08:43:28 +08:00 via iPhone
    弄个路由器
    aragakiyuii
        20
    aragakiyuii  
    OP
       2020-05-31 08:56:43 +08:00
    @anguiao #18 这个倒是没什么关系,删掉之后也能自动识别到 interface-name
    misaka00001
        21
    misaka00001  
       2020-05-31 09:42:53 +08:00 via Android
    .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
        22
    aragakiyuii  
    OP
       2020-05-31 09:55:08 +08:00
    @misaka00001 #21 谢谢,之前就这么设置的



    wipbssl
        23
    wipbssl  
       2020-05-31 10:49:24 +08:00
    @aragakiyuii 我觉得你可以试试把 clash 里 allow lan 打开,然后 wsl 设置代理为主机的 ip,我的 hyperv 上的 Windows 虚拟机是这么设置的,不知道 wsl 可不可以
    toptyloo
        24
    toptyloo  
       2020-05-31 12:07:9 +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'
    Ichiban
        25
    Ichiban  
       2020-05-31 18:50:58 +08:00 via Android   2
    如果可以 ping 通 Windows 的话,可以试试 windows 防火墙里“允许应用通过防火墙”,检查下里面是不是允许代理软件通过了
    bowser1701
        26
    bowser1701  
       2020-05-31 19:03:45 +08:00 via iPhone
    直接 clash 开局域网代理,
    然后 export xxx_proxy=局域网 ip 端口就可以了。
    就相当于你这台机器给局域网另一台机器上代理,不用管 wsl 。
    aragakiyuii
        27
    aragakiyuii  
    OP
       2020-05-31 20:42:01 +08:00
    @wipbssl #23
    @bowser1701 #26

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


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



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

    不太想弄了。。弄这个代理也是为了 fq 连 gcp,刚才把我家路由刷了梅林装了 v2ray 插件直接走路由器代理了
    aragakiyuii
        35
    aragakiyuii  
    OP
       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
        36
    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
        37
    aragakiyuii  
    OP
       2020-06-01 21:33:47 +08:00   5
    莫名奇妙解决了

    如果要用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
        38
    keepeye  
       2020-06-18 13:27:19 +08:00
    我也刚用 wsl2 也是这个问题,只能通过 tap 解决吗?
    razeen
        39
    razeen  
       2020-07-05 08:21:35 +08:00
    遇到很奇快的问题

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

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

    防火墙也没动过哇==
    qrqhuang
        40
    qrqhuang  
       2020-07-30 02:14:47 +08:00
    @misaka00001 ip.sb 原来还有这个 IP 检测站。 感谢
    mrpzx001
        41
    mrpzx001  
       2020-10-10 10:56:33 +08:00
    @aragakiyuii 按你那样设置后还是网络电缆被拔出
    rebeccaMyKid
        42
    rebeccaMyKid  
       2020-10-30 22:49:55 +08:00
    我把防火墙关了就能用了。。。
    rebeccaMyKid
        43
    rebeccaMyKid  
       2020-10-31 00:23:54 +08:00
    @iamwho @Jirajine 开源个锤子,clash server 端是开源的,但 clash windows and android 都是闭源的好吗,你找源码给我看看
    iamwho
        44
    iamwho  
       2020-10-31 04:17:30 +08:00
    @rebeccaMyKid #43

    能把嘴闭上吗,你说的第三方的 GUI 不开源和 clash 有什么关系。
    rebeccaMyKid
        45
    rebeccaMyKid  
       2020-10-31 10:53:52 +08:00
    @iamwho 二楼说的不是 clash windows ?题主说的不是 clash windows? 你能闭嘴吗?自己不读题说别人?
    rebeccaMyKid
        46
    rebeccaMyKid  
       2020-10-31 10:57:14 +08:00
    @iamwho 对不起,我的。不应该这么大戾气,跟你道歉,不过全文确实都说的是 clash windows.
    Jirajine
        47
    Jirajine  
       2020-10-31 13:13:57 +08:00 via Android
    @rebeccaMyKid 我上面说的就是不建议用闭源的 clash for Windows 啊。
    至于 clash for Android,之前确实是开源的,不过你这么一说又去看了下,已经把代码删了改闭源了,真是好的不学。
    https://github.com/Kr328/ClashForAndroid/commit/7ac60771bcdec1c5e1dc618b2051795b5cae87ae
    rebeccaMyKid
        48
    rebeccaMyKid  
       2020-11-02 14:55:22 +08:00
    @Jirajine 嗯嗯我知道你说的是闭源的 clash for windows 。哦,clash for android 还是可以通过之前的 commit 看历史源码,那其实也可以拿来学习?
    SenLief
        49
    SenLief  
       2020-11-11 11:26:27 +08:00
    @Jirajine cfa 是因为上游闭源了,根据协议也只能闭源。
    Jirajine
        50
    Jirajine  
       2020-11-11 11:48:44 +08:00 via Android
    @SenLief 请问根据“什么”协议“只能”闭源?
    上游 GPL 的时候怎么不是“只能”开源呢?
    SenLief
        51
    SenLief  
       2020-11-11 17:05:40 +08:00
    @Jirajine 因为更换了 clash 内核,clash 内核分开了,一个开源的,一个闭源的。cfa 和 cfw 都切换到了闭源的内核,所以只能跟随上游的分支闭源。

    你看一下 cfa 的 notice 就能看到了。
    Jirajine
        52
    Jirajine  
       2020-11-11 18:31:49 +08:00 via Android   1
    @SenLief 且不说上游如何,“所以只能跟随上游的分支闭源”从何而来?
    就算那个所谓的“clash premium” 要求(我从未看到这样的要求)衍生物必须闭源,那也没有意义。上游 GPL 的时候也没传染到 cfw 呢。
    衍生物闭源是否符合 GPL 尚且存疑,但 “clash premium”本身是毫无疑问违反 GPL 的,除非作者获得了所有贡献者的显式授权。
    弄个这种莫名其妙的 notice 开始闭源,想来很可能是作者被国 an 喝茶了。
    Dragonphy
        53
    Dragonphy  
       2020-11-28 01:20:15 +08:00
    防火墙允许 Clash 就好了
    Dragonphy
        54
    Dragonphy  
       2021-04-30 06:05:38 +08:00
    打开控制面板“允许应用通过防火墙”,勾选所有的 clash 程序,并且把对应的专有 or 私有网络勾选上
    hughshine
        55
    hughshine  
       2021-07-10 21:43:03 +08:00
    windows 防火墙开放对 clash 的权限即可用

    ```
    export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')

    export https_proxy="http://${hostip}:7890"

    export http_proxy="http://${hostip}:7890"

    export all_proxy="sock5://${hostip}:7891"

    alias myip="curl myip.ipip.net"
    ```
    skyoojaa
        56
    skyoojaa  
       2021-11-01 17:21:10 +08:00   3
    https://docs.cfw.lbyczf.com/contents/tun.html#windows 试一下这个。

    然后在 clash 里面的 UWP 里面选中子系统。就可以代理上。
    shunia
        57
    shunia  
       2022-11-24 13:24:38 +08:00
    @skyoojaa #56 这个是对的,满网络搜就是没想过看官方文档。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     931 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 22:49 PVG 06:49 LAX 15:49 JFK 18:49
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86