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

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

  •  
  •   aragakiyuii · 44 天前 via Android · 3054 次点击
    这是一个创建于 44 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    救救孩子吧。。

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

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

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

    leewi9coder
        10
    leewi9coder   44 天前 via iPhone
    从 wsl 的角度看,主机 ip 是多少?这样就可以直接用主机的 http 代理端口了吧
    Tita332
        11
    Tita332   44 天前 via iPhone
    确定 tap 成功开启了吗,我这里用 tap 是可以的
    kwlokip
        12
    kwlokip   44 天前 via Android
    aragakiyuii
        13
    aragakiyuii   44 天前
    @wsly47 #9 谢谢,设置完了还是不行

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

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



    wipbssl
        23
    wipbssl   44 天前
    @aragakiyuii 我觉得你可以试试把 clash 里 allow lan 打开,然后 wsl 设置代理为主机的 ip,我的 hyperv 上的 Windows 虚拟机是这么设置的,不知道 wsl 可不可以
    toptyloo
        24
    toptyloo   44 天前
    首先打开 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   44 天前 via Android
    如果可以 ping 通 Windows 的话,可以试试 windows 防火墙里“允许应用通过防火墙”,检查下里面是不是允许代理软件通过了
    bowser1701
        26
    bowser1701   44 天前 via iPhone
    直接 clash 开局域网代理,
    然后 export xxx_proxy=局域网 ip 端口就可以了。
    就相当于你这台机器给局域网另一台机器上代理,不用管 wsl 。
    aragakiyuii
        27
    aragakiyuii   43 天前
    @wipbssl #23
    @bowser1701 #26

    wsl 上可以,wsl2 不行
    bowser1701
        28
    bowser1701   43 天前
    @aragakiyuii 可以的,我试过的。
    bowser1701
        29
    bowser1701   43 天前
    @aragakiyuii 设置个 http_proxy 和 https_proxy 试一下。默认端口是 7980 。
    bowser1701
        30
    bowser1701   43 天前
    @bowser1701 fix 7980 to 7890
    aragakiyuii
        31
    aragakiyuii   43 天前
    @ZingLix #25 谢谢,但是“允许应用通过防火墙”我是一直允许 clash 的,之前想手动添加 Ubuntu 但是找不到路径。。


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



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

    不太想弄了。。弄这个代理也是为了 fq 连 gcp,刚才把我家路由刷了梅林装了 v2ray 插件直接走路由器代理了
    aragakiyuii
        35
    aragakiyuii   43 天前
    @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   43 天前
    @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   42 天前
    莫名奇妙解决了

    如果要用 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   26 天前
    我也刚用 wsl2 也是这个问题,只能通过 tap 解决吗?
    razeen
        39
    razeen   9 天前
    遇到很奇快的问题

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

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

    防火墙也没动过哇==
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3160 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:19 · PVG 19:19 · LAX 04:19 · JFK 07:19
    ♥ Do have faith in what you're doing.