一:概述
NetworkMannager服务是管理和监控网络设置的守护进程,由管理系统的网络连接程序和允许用户管理网络连接的客户端程序组成。无论是有线网络还是无线网络,用户都可以轻松地管理。对于无线网络设置,NetworkMnager可以自动的切换到最安全的无线网络。学会这个工具,可以自由地切换网络模式,简化网络管理程序。
二:nmtui和nmcli的区别
(1)numtui
nmtui(NetworkManager Text User Interface)使用网络管理文本用户界面管理网络,nmcli(NerworkManager Command Line Interface)使用网络管理命令行界面管理网络。
nmtui:它是Linux系统中提供的一个文本配置工具,基于curses的TUI(Text User Interface),在终端指定nmtui命令可以启动这个工具。
nmtui的设置界面如下图1-1所示,界面中的三个选项的含义如下:
编辑链接:配置每个连接的接口设置。
启用连接:在启用和金庸每个连接的接口之间切换。
设置系统主机名:设置主机名。
“编辑链接”选项设置界面如下图1-2所示:
图1-1
图1-2
可以使用nmtui设置功能对以太网和网桥进行添加;编辑、删除等操作,也可以启用或停用网络和网桥设置。
“设置系统主机名”选项设置界面如下图2所示。
从上面可以看出已经成功将主机名修改。
(2)nmcli
nmcli是是网络管理的命令行工具,通过控制台或终端管理NetworkManager。
格式:nmcli [选项] 对象 {命令 | 帮助}
nmcli的常用选项及说明如下表所示:
选项 | 说明 |
-t、--terse | 删除轨迹 |
-p、--pretty | 以可读的格式输出 |
-w、--wait<seconds> | 设置超出时间,直到NetworkManager处理结束 |
-h、--help | 显示帮助 |
可以使用nmcli命令指定对象,如下表所示:
对象 | 说明 |
networking | 管理整个网络 |
radio | 部分网络管理 |
general | 显示和管理NetworkManager |
device | 查看和管理设备 |
connection | 管理连接 |
agent | NetworkManager代理和polkit代理操作 |
在执行nmcli命令时,指定的对象和命令可以通过前缀匹配省略,例如指定networking为n也可以识别。指定的对象不同,后面对应的命令也就不同。比如我指定的networking这个对象查询网络管理器的状态对应的命令是nmcli networking。
nmcli networking用于查询网络管理器的网络状态、启用和禁用整个网络。
格式:nmcli networking {命令}
nerworking可以指定三种管理命令的命令,如下表所示:
命令 | 说明 |
on | 启用所有的接口 |
off | 禁用所有的接口 |
connectivity | 显示当前的状态 |
networking可以简写为n,当然,connectivity也可以简写为c。通过简写这些命令可以简化网络管理命令的操作。
使用nmcli命令启用或者禁用整个网络如下图所示。使用nmcli n c(nmcli networking connectivity)命令显示当前网络的状态为full,意思是连接可访问的网络;指定off表示关闭网络,这时的网络显示为none,表示没有网络;指定on命令开启网络后,网络状态显示为full。
指定connectivity命令显示的状态类型如下表所示:
状态 | 说明 |
none | 表示没连接任何网络 |
portal | 认证前不能上网 |
limited | 已连接到网络,但是不能上网 |
full | 可以访问连接到网络 |
unknown | 无法确认网络连接 |
radio对象
nmcli radio用于显示、启用或禁用无线网络开关的状态。
格式:nmcli radio {命令}
radio对象的命令说明如下表所示:
命令 | 说明 |
wifi | 启用/禁用Wi-Fi功能 |
wwan | 启用/禁用无线广域网功能 |
wimax | 启用/禁用WiMAX功能 |
all | 同时启用/禁用Wi-FI、WAN和WiMAX |
general对象
nmcli general用于显示NetworkManager的状态和权限,允许获取并更改主机名、查看和更改日志级别和域。
格式:nmcli general {命令}
general对象的命令如下表所示:
命令 | 说明 |
status | 显示NetworkManager的整体状态 |
hostname | 显示和设置主机名 |
permissions | 显示当前用户对NetworkManager可允许的操作权限 |
logging | 显示和更改日志级别和域 |
使用nmcli g ho(nmcli general hostname)命令显示当前的主机名,在nmcli g ho命令后面直接指定新的主机名就可以更改主机名了,在更改后的主机名称被写入到/etc/hostname文件中。hostname和hosnametctl命令都可以用于显示主机名,只不过hostnamectl命令显示信息会更全面。
指定status和permissions命令可以显示NetworkManager的状态和权限,如下图所示。
nmcli g s(nmcli general status)命令显示NetworkManager的整体状态,包括WIFI、WWAN等状态;nmcli g p(nmcli general permission)命令显示对NetworkManager可操作的权限。
device对象
nmcli device可以用于显示和管理设备。
格式:nmcli device {命令}
device对象的命令有很多的功能,例如连接wifi、创建热点等,具体说明如下表所示:
命令 | 说明 |
status | 显示当前网络设别的状态 |
show | 显示网络设备的详细信息 |
connect | 连接到指定的网络设备 |
disconnect | 断开指定的网络设备 |
delete | 删除指定的网络设备 |
wifi | 显示可用的接入点 |
如果你偶一个不确定当前系统中有哪些设备,可以指定device对象查看一下。nmcli device命令可以看到设备的的状态和连接情况,如果想断开某一设备,比如enp0s3,可以执行nmcli device disconnect enp0s3命令断开这个设备。默认显示已连接装填,执行断开操作后结果显示已断开。从颜色也可以很直观地看到断开连接地设备是红色,已经连接地设备是绿色。
重新连接设备,可以指定device对象的connect命令nmcli device connect enp0s3重新连接网络,如下图所示。执行nmcli device show enp0s3命令显示连接网络的详细信息。
connection对象
nmcli connection {命令}
connection对象的常用命令如下表所示:
命令 | 说明 |
show | 列出连接的信息 |
up | 启用指定的连接 |
down | 禁用指定的连接 |
add | 添加新的连接 |
edit | 交互式编辑现有连接 |
modify | 编辑现有连接 |
delete | 删除现有连接 |
reload | 重新加载现有连接 |
load | 重新加载指定的文件 |
通过指定connection对象的show命令可以查看连接,如下图所示。nmcli connection show命令用于显示连接信息列表,在该命令后指定--active表示仅显示已启用的连接,在该命令后面指定连接网络的设备会显示更加详细的信息。
分别指定down和up命令禁用或启用连接,如下图所示。如果在启用时更改了连接信息,就不会按照原样显示该信息并重新加载设置。
connection对象的modify命令用于更改现有的连接状态,如下图所示。这里将默认的连接状态由“是(yes)”更改为"否(no)"再更改为"是".
如果想查看IP地址和网关的详细信息,可以通过connection对象的show命令。比如执行nmcli connection show enp0s3 | grep ipv4命令可以查看所有和ipv4有关的网络配置信息,如下图所示。从结果中可以看出IP状态的为自动获取(auto),其他参数都是默认设置状态。
查看了IP地址之后,想修改的话可以就用connection对象的modify命令。在修改IP地址的时候需要指定网卡,如果是enp0s3,需要在modify命令后面指定。需要修改哪一项就指定对应的设置项就指定对应的设置项,比如指定ipv4。address可以设置IP地址,指定ipv4.gateway可以设置网关的信息。修改之后IP地址会自动获取(auto)变成手动获取(manual)。
可以使用+为已设置的字段添加IP地址,如下图所示。手动方式指定添加IP地址,为同一设备添加多个IP地址。enp0s3已经有了一个IP地址了,使用+新增IP地址192.168.0.45/28
可以使用+来添加IP地址,也可以使用-来删除IP地址,演示如下图所示:
使用connection对象的edit命令实现交互式编辑
直接输入nmcli connection edit enp0s3,就可以进入交互式编辑页面为enp0s3设置IP地址之类的信息了。进入交互式编辑界面之后,会显示nmcli >的提示符。输入print all命令用于显示所有的设置信息,例如connection对象的id为enp0s3,autoconnect(自动连接)设置为“是”。
在print后面指定打印的项目名称为ipv4,只会显示和ipv4相关的信息,这与之前执行的nmcli connection show enp0s3 | grep ipv4的命令结果相同。goto ipv4表示跳转到和ipv4相关的属性中去,并且可以编辑这些相关的属性,如下图所示:
跳转至ipv4项目中后,提示符变成了nmcli ipv4>。如果你想返回nmcli>中去,输入back命令。
在交互模式中更改了设置之后,执行save命令可以保存设置,执行quit命令可以退出编辑交互模式。
一个接口可以有多个连接(connection),但是只允许一个连接处于激活(active)状态。一个连接就是/etc/sysconfig/network-scripts/目录下的一个配置文件。接口是物理设备,一个物理设备可以拥有多个配置文件。
如果你想添加新的设备可以使用add命令,比如添加enp0s4可以使用nmcli connection add type ethernet con-name enp0s4 ifname enp0s4。type后面指定添加的设备类型是以太网类型,con-name表示指定连接的设备名称,ifname表示接口的名称。执行nmcli connection show命令显示结果。
检查ifcfg-enp0s4文件是否存在/etc/sysconfig/network-scripts/目录下,。进入这个目录后,可以看到有两个网卡设备文件,其中enp0s4生成的文件是/etc/sysconfig/network-scripts/ifcfg-enp0s4文件,如下图所示:
如果想删除这个设备可以指定delete命令,执行nmcli connection delete enp0s4命令可以直接删除网卡设备enp0s4。成功删除之后,/etc/sysconfig/network-scripts/目录下的ifcfg-enp0x4文件文件也会删除,如下图所示:
三:在Ubuntu中设置这些设置(由于电脑暂时没有Ubuntu虚拟机这里只给出解释与命令可自行练习)
如果在Ubuntu中添加enp0s4设备时,需要执行命令中再加上一个sudo命令授予管理员身份权限才可以。然后执行nmcli connection show命令可以看到已经成功添加了设备。
nmcli connection show
sudo nmcli connection add type ethernet con-name enp0s4 ifname enp0s4
cmcli connection show
在Ubuntu中确认时需要在/etc/NetworkManager/system-connections/目录下确认是否存在enp0s4文件,Ubuntu中的配置文件不同于2CentOS,它是在/etc/NetworkManager/system-connection/目录下生成的。
ls /etc/NetworkManager/system-connections/
sudo cat /etc/NetworkManager/system-connections/enp0s4
之后删除enp0s4设备,在/etc/NetworkManager/system-connections/目录下的enp0s4文件也会被删除。
CentOS与Ubuntu中的配置文件显示的一些字段的区别。
CentOS:NAME=连接名称,DEVICE=接口名称。
Ubuntu:id=连接名称,interface-name="接口名称"。
还有reload和load命令,可以重新加载配置文件。通常使用modify或者edit更改连接信息,然后执行nmcli connection up命令。直接编辑连接设置时可以使用reload命令和load命令
nmcli connection reload
nmcli connection load /etc/stsconfig/network-scripts/ifcfg-enp0s3
四:NetworkManager的WiFi接口管理功能
NetworkManager-wifi就是NetWorkManager的WiFi插件程序包,如果你有配置WIFI的需求,这个是必须的。使用yum install命令可以安装NetworkManager-wifi软件包,如下图所示:
iwlist命令用于扫描无线网络接口,检查附近接入点的ESSID。iwlist指定scan参数可以搜索可接入的热点信息列表,例如iwlist wlp2s0 scan | grep ESSIO。iwlist命令是wireless-tools提供,如果系统中没有安装相关的软件包,需要执行安装命令进行安装。安装wireless-tools软件包的命令:yum install epel-release和yum install wireless-tools。如果在执行yum install wireless-tools命令时出现错误,说明系统中没有指定的安装包,需要在线下载并解压压缩包才能在本地安装。
nmcli d wifi connect [访问点] password命令可以指定连接的访问点和密码,连接到指定的访问点后,可以通过nmcli d show [wifi名称]确认接入点的连接状态。