V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aragakiyuii
V2EX  ›  Windows

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

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

    之前 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
        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 代理端口了吧
    Tita332
        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: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
        25
    ZingLix  
       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   ·   实用小工具   ·   1389 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 23:44 · PVG 07:44 · LAX 15:44 · JFK 18:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.