这次配置网络,就被以往的经验习惯坑了。话不多说,我的Linux系统一开始网络是DHCP自动分配的。网络配置文件如下所示:

此时网络是通的,能ping通百度。

然后我想改成静态IP。按照习惯和经验,肯定在同目录下把旧的配置文件拷贝一个副本,副本名后缀名为.bak,然后再修改。但不小心改错了,子网掩码和网关配置错了,没和实际一致,如下所示:

接着我使用命令重启网络。

然后访问不了百度了。

后面知道是子网掩码和网关配置错了,但一开始不知道什么错误,想着先回退吧。原始的配置文件刚才备份了。重新改回老的配置,命令如下所示:

但重启网络后,竟然还不通。

难道命令不生效?直接重启系统吧。但重启进入后竟然还是不通。奇怪了。看配置文件确实是原先的配置了啊。之前好好的,为什么现在不行了?

然后查了一下网络配置,发现实际还是静态配置。

然后查询资料,说是残留静态配置未清除。
之前的静态IP设置(如/etc/NetworkManager/system-connections/中的备份文件)未被完全覆盖。好吧,竟然不能备份?
那我把静态配置文件移走后试试。再次重启网络。这次好了。如下所示:

那是因为配置文件名称的原因吗?我再次把静态备份文件移回来,改个乱七八糟的名字如aa,如下所示:

网络又变成静态了。然后不通了。为了防止字典序加载,改成zz。还是不行。

查阅资料说会优先之前连接的uuid。那改变uuid,如下所示:

上图的整个流程是,先把静态配置文件移走,然后重启网络变成dhcp,然后再将静态配置文件移回来,但修改它的uuid,然后再重启网络。这次和之前不修改uuid对比,网络是通的。
查看两个配置文件,uuid确实不一样。


查看当前激活连接的uuid,确实是dhcp的配置。

这次再重新将dhcp改名成.bak备份文件,静态配置文件改回默认配置名称,重启网络,可以发现激活的还是dhcp的配置。

然后关于优先级问题,这里就不详细讨论了。
至此,看来备份原始配置文件的习惯有时也不一定是个好事,可能一不注意就给自己带来新问题。
最后再来重新配置静态网络,然后我发现是我想当然的把子网掩码和网关填上,没和实际宿主机的网卡对应上。好吧,重新把静态配置文件修改正确,填上对应宿主机的网关和子网掩码。然后删除其它配置文件备份,再次重启网络。这次终于好了。
