git无法访问外网
事情经过
使用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 模式对系统代理的影响 为什么影响系统代理?
- 默认拦截所有流量 :
- TUN 模式接管了系统的大部分网络流量,可能会导致一些程序不再使用系统代理。
- 规则优先级问题 :
- 如果 Clash 的规则设置不正确,可能导致部分流量未能正确代理或被错误路由。
- 与其他代理冲突 :
如果系统已经配置了其他代理设置,TUN 模式可能会导致冲突,从而影响代理功能。
常见问题系统代理无效 :TUN 模式可能覆盖了系统代理设置。
部分应用程序无法联网 :TUN 模式可能未正确配置分流规则,导致流量被错误处理。
解决方法 启用 TUN 模式的正确方式
打开 Clash for Windows。
在设置中启用 TUN 模式: General > TUN Mode 勾选开启。
确保 DNS 设置启用: 在 DNS Settings 中启用 “Enable”。
调整代理规则
确保规则优先级正确:
例如:
- 将
Direct
设置为默认策略。 - 对需要代理的流量(如 GitHub)添加规则,强制走代理。
- 将
检查规则文件是否准确无误(可以通过日志查看流量是否正确路由)。
测试网络连接:
1
ping https://github.com
关闭 TUN 模式(如果不需要)
- 如果系统代理已经满足需求,可以关闭 TUN 模式:
- 打开 Clash 设置。
- 取消勾选 TUN Mode 。
- 确保 System Proxy 启用。
TUN 模式的适用场景
- 用于拦截不支持手动代理配置的程序流量。
- 适用于需要全局透明代理的环境,如部分终端工具或游戏。