背景

  • Platform: X64
  • OS: Ubuntu16.04 Desktop

过程

以前在嵌入式Linux中,一直是通过/etc/network/interfaces来配置静态IP。
在Ubuntu的Desktop版本一直使用图形界面配置的静态IP。
这次没接显示器,想通过命令行来配置,然后cat /etc/network/interfaces,发现不对,以前配置的静态IP根本不在里面,里面只有Loopback:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

后面发现Ubuntu16.04的Desktop版本里,图形界面配置是通过第三方网络管理工具NetworkManager进行配置的。也可以通过interfaces进行配置,但是两者不能同时配置,会冲突出现一些莫名其妙的问题。

其实,只要弄清楚interfaces和 nm之间的关系,这些问题就不难解释了。
首先,当系统内没有第三方网络管理工具(比如nm)时,系统默认使用nterfaces文件内的参数进行网络配置。
接着,当系统内安装了nm之后,nm默认接管了系统的网络配置,使用nm自己的网络配置参数来进行配置。
但是,如果用户在安装nm之后(Desktop版本默认安装了nm),自己手动修改了interfaces 文件,那nm 就自动停止对系统网络的管理,系统改使用interfaces 文件内的参数进行网络配置。
此时,再去修改nm 内的参数,不影响系统实际的网络配置。若要让nm 内的配置生效,必须重新启用nm 接管系统的网络配置。

为了与图形界面配置同步一致,不影响图形界面配置,打算不使用interfaces进行配置,但NetworkManager的配置在哪呢?
找了下,对,就在sudo cat /etc/NetworkManager/system-connections/xxx,xxx是你现在正在使用的网络连接的名字,即在图形界面看到的那个名字。
修改[ipv4]的部分:

[ipv4]
address1=192.168.5.14/24,192.168.5.1
dns=192.168.5.1;
dns-search=
method=manual

然后重启机器生效。

参考

https://blog.csdn.net/RadiantJeral/article/details/86298988