事情经过

使用vscode git 提交代码和 hexo d时

莫名其妙出现 github ssh 22端口无法访问的情况:

尝试过切换成443端口
使用https访问远程,但是github客户端可以访问

怀疑是网络问题,没添加代理:

给vscode添加代理
给git添加代理

怀疑clash for windows 没开系统代理或者规则错误:

开启 system proxy
启用 global 规则

使用vscode、 cmd 、powershell和git ping Google.com 和 ping github.com都无效,只能ping 国内网站。

使用git bash clone 远程仓库一般都是没问题的,但是还是失败了,

致使明白翻墙工具的系统代理没开成功,遂比较另一台电脑,执行ping Google.com可以,对比翻墙工具的设置,

找到罪魁祸首是:tun mode


Clash for Windows 的 TUN 模式

是一种用于透明代理的高级功能,可以影响网络流量的路由方式。以下是详细说明:

什么是 TUN 模式?
TUN 模式是基于操作系统的虚拟网络接口(TUN/TAP)的工作方式,用于拦截和重定向网络流量。通过 TUN 模式,Clash 可以透明地代理应用程序的流量,而无需每个应用程序单独设置代理。

  • TUN 的工作原理

    • 它创建一个虚拟网卡,接收系统的所有网络流量。

    • 根据 Clash 的代理规则,对网络请求进行分流或直接代理。

  • 与系统代理的区别

    • 系统代理需要应用程序支持 HTTP/HTTPS 或 SOCKS 协议,并手动配置代理。

    • TUN 模式可以自动拦截所有网络请求,适用于不支持代理配置的程序(如部分游戏或终端工具)。

TUN 模式对系统代理的影响 为什么影响系统代理?

  1. 默认拦截所有流量
  • TUN 模式接管了系统的大部分网络流量,可能会导致一些程序不再使用系统代理。
  1. 规则优先级问题
  • 如果 Clash 的规则设置不正确,可能导致部分流量未能正确代理或被错误路由。
  1. 与其他代理冲突
  • 如果系统已经配置了其他代理设置,TUN 模式可能会导致冲突,从而影响代理功能。
    常见问题

  • 系统代理无效 :TUN 模式可能覆盖了系统代理设置。

  • 部分应用程序无法联网 :TUN 模式可能未正确配置分流规则,导致流量被错误处理。

解决方法 启用 TUN 模式的正确方式

  1. 打开 Clash for Windows。

  2. 在设置中启用 TUN 模式: General > TUN Mode 勾选开启。

  3. 确保 DNS 设置启用: 在 DNS Settings 中启用 “Enable”。

调整代理规则

  1. 确保规则优先级正确:

    例如:

    • Direct 设置为默认策略。
    • 对需要代理的流量(如 GitHub)添加规则,强制走代理。
  2. 检查规则文件是否准确无误(可以通过日志查看流量是否正确路由)。

  3. 测试网络连接:

    1
    ping https://github.com

    关闭 TUN 模式(如果不需要)

  • 如果系统代理已经满足需求,可以关闭 TUN 模式:
    1. 打开 Clash 设置。
    2. 取消勾选 TUN Mode
    3. 确保 System Proxy 启用。

TUN 模式的适用场景

  • 用于拦截不支持手动代理配置的程序流量。
  • 适用于需要全局透明代理的环境,如部分终端工具或游戏。