BeyondDimension / SteamTools

🛠「Watt Toolkit」是一个开源跨平台的多功能 Steam 工具箱。
https://steampp.net
GNU General Public License v3.0
20.19k stars 1.31k forks source link

🧐[Question] WSL github 加速 #2052

Open MHYCWasTaken opened 2 years ago

MHYCWasTaken commented 2 years ago

🧐 问题描述(Description)

一切加速突然全部失效了,github,discord和steam都没法访问了

🚑 其他信息(Other Information)

rmbadmin commented 2 years ago

我测试依然正常,以及请提供详细的无法访问的错误信息

MHYCWasTaken commented 2 years ago

需要提供一些什么信息

MHYCWasTaken commented 2 years ago

443 connection refused 图片

rmbadmin commented 2 years ago

需要提供一些什么信息

浏览器无法打开的错误截图,程序的logs日志

rmbadmin commented 2 years ago

443 connection refused 图片

这个错误开头已经提示了 没有权限 ,这与Steam++应该无关

MHYCWasTaken commented 2 years ago

谢谢,确实是我的问题 对不起qwq

MHYCWasTaken commented 2 years ago
fatal: unable to connect to github.com:
github.com[0: 127.0.0.1]: errno=Connection refused

但是这是我用watt toolkit在Windows里面加速后在WSL命令行访问的报错,仅有两行,请问怎么办

rmbadmin commented 2 years ago
fatal: unable to connect to github.com:
github.com[0: 127.0.0.1]: errno=Connection refused

但是这是我用watt toolkit在Windows里面加速后在WSL命令行访问的报错,仅有两行,请问怎么办

这是因为wsl的请求并没有走Steam++代理,你可能需要设置wsl的代理走内网连接到实机的Steam++

MHYCWasTaken commented 2 years ago

网上找了一圈似乎并没有可以使用的方法,都是使wsl的nginx服务可以被windows访问,并且我都试了一下并没有管用的,可以再给一点详细一点的方案吗qwq

MHYCWasTaken commented 2 years ago

如何设置wsl的代理走内网连接到实机?

MHYCWasTaken commented 2 years ago

ping主机可以ping通,已经添加了允许所有入站局域网ip出站到wsl的ip(掩码20),仍旧无法git push

rmbadmin commented 2 years ago

我也没有再wsl中操作过,但使用方式与使用其它代理应该是一样的,你应该再wsl中设置代理为 实机ip地址 steam++启用得代理。

MHYCWasTaken commented 2 years ago

请问Steam++的代理端口是哪一个(如果在哪里写着了请不要怪我眼瞎qwq)

ListenV commented 2 years ago

@rmbadmin 为了在WSL中启用Steam++代理,我尝试了以下操作:

正确地设置证书

方式一、设置系统证书

我用的是发行版是 ArchLinux:

方式二、设置 Git 信任证书

git config --global http.sslCAInfo /etc/ssl/certs/SteamTools.Certificate.cer

设置代理

方式一、设置全局代理

让WSL中的 Git 使用 Windows 中 SteamTool 代理

# 172.30.64.1 为 WSL 中访问 Windows 的IP(每次都会变化)
export http_proxy=172.30.64.1:443
export https_proxy=172.30.64.1:443

方式二、设置 Git 代理:

git config --global http.proxy 'https://172.30.64.1:443'

经过以上配置后,出现 302

以上任意配置组合,无一例外全部出现 302 重定向错误:

sky03@Arch ~> git cl https://github.com/BeyondDimension/SteamTools.git
正克隆到 'SteamTools'...
致命错误:无法访问 'https://github.com/BeyondDimension/SteamTools.git/':Received HTTP code 302 from proxy after CONNECT

curl 信息:

sky03@Arch ~> curl https://github.com/ -v
* Uses proxy env variable https_proxy == '172.30.64.1:443'
*   Trying 172.30.64.1:443...
* Connected to 172.30.64.1 (172.30.64.1) port 443 (#0)
* allocate connect buffer
* Establish HTTP proxy tunnel to github.com:443
> CONNECT github.com:443 HTTP/1.1
> Host: github.com:443
> User-Agent: curl/7.85.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 302 Found
< Content-Length: 0
< Date: Tue, 18 Oct 2022 13:20:58 GMT
< Server: Kestrel
< Location: https://github.com
<
* Received HTTP code 302 from proxy after CONNECT
* CONNECT phase completed
* Closing connection 0
curl: (56) Received HTTP code 302 from proxy after CONNECT

我重新在虚拟机上试了下,依然如此。

ListenV commented 2 years ago

我又试了一下,可以通过以下步骤开启

  1. SteamTool 使用 Hosts代理模式
    • Hosts代理模式还可以使用 ssh 连接 Git 仓库,而 DNS 驱动拦截模式不行
    • 另外两个模式会跟其他的系统代理有冲突
  2. WSL中需要设置hosts
    • 比如:172.30.64.1 github.com
    • 172.30.64.1/etc/resolv.conf 中的Windows IP
  3. git设置信任证书

不过还是比较麻烦。最好还是写个脚本,因为每次电脑重启 /etc/resolv.conf 中的Windows IP都会变化

leohu1 commented 8 months ago

可以试试这个mirrored-mode-networking

FeronCompany commented 6 months ago

我又试了一下,可以通过以下步骤开启

  1. SteamTool 使用 Hosts代理模式

    • Hosts代理模式还可以使用 ssh 连接 Git 仓库,而 DNS 驱动拦截模式不行
    • 另外两个模式会跟其他的系统代理有冲突
  2. WSL中需要设置hosts

    • 比如:172.30.64.1 github.com
    • 172.30.64.1/etc/resolv.conf 中的Windows IP
  3. git设置信任证书

不过还是比较麻烦。最好还是写个脚本,因为每次电脑重启 /etc/resolv.conf 中的Windows IP都会变化

试过了,确实可以连上,但不知为什么速度很慢,还不如不开加速器,而且git clone中途还会断掉连接,显示early EOF错误

Sherry520 commented 3 months ago

代理端口号是这个吗? image

yang2019901 commented 2 weeks ago

@MHYCWasTaken 如果你的wsl是nat模式(windows和wsl的ip不同且处于同一子网),那么可以在Windows上使用watt toolkit的System代理模式并在wsl里设置http_proxy和https_proxy。

具体来说:

  1. 在windows上将watt toolkit的代理模式设置为System代理,并在windows 命令行中使用netstat -anop TCP验证watt toolkit正在监听(我记得默认是26501,在之后的版本改成了默认26561)
  2. 在wsl的命令行中进行如下设置
    host_ip="$(ip route | head -n 1 | awk '{print $3}')"  # nat模式wsl的默认路由是windows主机,
    watt_port=26501 # 使用步骤1中查到的watt toolkit监听的端口号
    export http_proxy="http://$host_ip:$watt_port"
    export https_proxy="http://$host_ip:$watt_port"
  3. (optional)通过wget github.com测试代理生效。注意不能通过ping github.com测试(ping是ICMP协议)。

希望能有所帮助 :^)