8月13日,突然clash订阅就不能用了,显示i/o timeout
最开始以为是被墙了
- 当时第一反应就是被墙了,但是经过ip和端口的ping和curl测试发现没有被墙,域名也没有被抢
完全无法访问外网
通过azure cls登录后,发现v2ray和Nginx都在正常运行,所以也排除了脚本出问题
这个时候我想用apt update检查依赖并且更新依赖,结果得到了无法访问ubuntu依赖仓库的报错
这个时候事情就变得魔幻了,我开始尝试
1
ping www.google.com
但是发现package 100% loss
但是
1
ping 127.0.0.1
完全正常
检查dns
- 论坛上查询后有人说可能是dns解析时间过长(因为azure默认使用由azure特别提供的dns,然而这个dns会定期抽风),于是我将vps的dns换成了1.1.1.1,但是无济于事,并且我ping 1.1.1.1也是不通的,所以应该不是dns解析的问题
检查防火墙规则
- 接下来有人说可能是防火墙,但是我的ubuntu本身的防火墙早就为了省事禁用了,azure自己的安全组也是早就配好了的,为了验证这一点,我甚至尝试直接允许了所有inbounds和所有outbounds,但是还是不行
检查虚拟网卡
在一段长时间痛苦的迷思之后我想到了NIC,azrure的vps都是通过虚拟网卡获得mac地址并且上网的,而这个虚拟网卡,根据论坛网友的反馈,也经常抽风
我一开始想的是干脆把整个网络服务重启算了
1
service network restart
结果vps没有network这个service
所以还是通过卸载网卡来处理
1
ifconfig
首先查看网络配置
发现了虚拟网卡eth0
接着卸载它
1
ifconfig eth0 down
本来我下一步是up,结果我忘了我是远程连接vps的,这一下直接给vps干失联了…
但是最好玩的是当我回到控制台,发现vps正在重启,重启完成以后,vps又能正常上网了,clash也能用了…
复盘
其实我到现在也没想明白导致这一切的原因,不过有一种可能的解释:
我是通过vmess+tls+wf+tcp出境的,为了访问chatgpt还套了一层cloudflare warp
这一套虽然用起来很爽,但是因为我两个部分使用github上不同大神的不同一键脚本分别部署的,而这两个脚本的依赖之间似乎有冲突,所以我运行了一段时间之后,Nginx就突然停止运行了
我当时并没有多想,直接重启了Nginx服务,就这样又搞了几周,依赖冲突终于在一天爆炸了,当时我登录后好多命令都不能用了(
为了修复我是这么做的
sudo dpkg --configure -a sudo apt-get install -f sudo dpkg -i --force-overwrite /var/cache/apt/archives/*package+name*
或许触发了azure vps的某种保护机制,促使azure重新为我的vps装载了虚拟网卡1
2
3
4
5
6
7
这确实解决了dkpg的问题,但是或许也一起干掉了azure的虚拟网卡需要的一些依赖,因为我当时一心想着重装v2ray,其他被干掉的包都没怎么管
- 最后我的这条命令
- ```shell
ifconfig eth0 down
后记:
问题解决了吗?我想没有,也许再过两天Nginx又会停止运行,下一次遇见这个问题,我不能再像个无头苍蝇一样乱搞了,应该先读一读那两个脚本的源码,看看它们到底对我的vps做了什么…