1. 场景
场景:将机器重启后,就没有及时关注,过两天后连ssh
发现连不上了。
首先检查本地电脑是否有网络,确认没有问题。然后登陆vnc,检查ssh服务状态。
代码语言:bash复制sudo systemctl status ssh
服务正常启动,ssh配置文件应该不会有改动。云服务器的防火墙,是在控制台控制的,机器本身的防火墙默认是关闭的。
检查机器的防火墙:
代码语言:bash复制sudo iptables -L -n -v
防火墙也没有什么问题。
这就有点奇怪了,在本地电脑上尝试ping云服务器的ip,发现ping 也ping不通?! vnc 登陆云服务器下,在云服务上,ping 8.8.8.8
也是ping不通的,现在可以判断,云服务器是断网了。。。
2. 解决过程
2.1 问题排查
还是使用vnc 登陆云服务器。
1. 确定网线是否联通
代码语言:bash复制ip -br link show
发现 eth0
是断开的。
将 eth0
打开:
ip link set eth0 up
再次查看 eth0
是否打开:
ip -br link show
确认打开了,查看 eth0
是否能收发数据包:
ip -s link show eth0
收发数据包正常,现在可以确定物理网络连接没有问题。
2. 确定是否有ARP数据
ARP(地址解析协议) 可以确定,本机是否与上游路由器相互识别。
代码语言:bash复制ip neighbor show
我的ARP是空的,这台服务器没有得到正确的ip地址?!
查看网络配置信息:
代码语言:bash复制ifconfig -a
此时,我才发现我的 eth0
根本没有ipv4地址 。
3. 问题解决
尝试:
代码语言:bash复制sudo dhclient eth0
自动获取ipv4地址,一切正常了,但是为什么会没有ipv4地址呢? 之前也没有啥问题。。。
ubuntu 使用netplan管理网络配置,cd /etc/netplan
,查看配置文件,对比之下,配置一切正常,没有什么问题。
使用 dhclinet eth0
可以使网络连接正常,但是重启之后,就无效了。于是尝试:
sudo netplan apply
netplan command not found .... netplan
啥时候没了?
安装 netplan.io:
代码语言:bash复制sudo apt install netplan.io
然后再sudo netplan apply
一次,一切正常了。
netplan 依赖python 环境, 我之前用homebrew安装了python,后面因为homebrew安装llvm等有许多依赖问题,又把homebrew 卸掉了(以后再也不用了,linux上问题挺多),不知道是不是和这个有关系。
3. 总结
linux 只是内核,然后它的发行版众多,之间差别也很多。我还是更喜欢和更了解opensuse 的,但轻量云服务器不提供 opensuse 的镜像,我之前考虑过把云服务器装上opensuse,后来想想还是用ubuntu 算了,就不折腾了。目前来看,这个问题要重新考虑了,后续有时间把ubuntu 换成 opensuse 吧。
我用homebrew 装llvm 和 dotnet,总是遇到各种问题,后来把 homebrew 卸掉,这之后又碰到一系列的问题。netplan
没了,估计也和这件事情有关,使用homebrew 是因为,它可以很方便的获取最新的软件发行包,不过后面我要把云服务器系统换成滚动发行的 opensuse trumbleweed,homebrew 就基本不需要了。。。
3. 参考
- https://zhuanlan.zhihu.com/p/3705072432
- https://superuser.com/questions/237057/how-do-i-make-ubuntu-server-get-ipv4-address