NetworkManager
概述:
本章目标:
使用nmcli和networkmanager管理网络设备
通过编辑配置文件修改网络设置
配置和测试系统主机名和名称解析
网络接口名称:
在redhat7之前网络接口的名称一般为eth0、eth1等等。不过随着设备的增加和删除,这些名称可能会导致一些不对称的信息。
在redhat7中网络设备根据设备类型分配了固定的名称:
en o1 6777736
类型 适配器类型 接口编号
接口类型:
en开头是以太网接口
w1开头是WLAN接口
ww开头是WWAN接口
适配器类型:
o代表板载
s代表可热拔插
p代表PCI接口
NetworkManager 介绍
NetworkManager是2004年RedHat启动的项目,皆在能够让Linux用户更轻松的处理现代网络需求,尤其是无线网络,能够自动发现网卡并配置IP地址。
RHEL7上同事支持network.service和NetworkManager.service(简称NM)。默认情况下这2个服务都有开启,但是因为NetworkManager.service当时的兼容性不好,大部分人都会将其关闭。
但是在RHEL 8/Centos 8上已废弃network.service(默认不安装),只能通过NetworkManager进行网络配置。
NetworkManager主要管理2个对象: Connection(网卡连接配置) 和 Device(网卡设备),他们之间是多对一的关系,但是同一时刻只能有一个Connection对于Device才生效。
在RHEL 8/Centos 8有三种方法配置网络:
- 通过nmcli connection add命令配置,会自动生成ifcfg文件。
- 手动配置ifcfg文件,通过nmcli connection reload来加载生效。
- 手动配置ifcfg文件,通过传统network.service来加载生效。
显示IP地址
1 | ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 |
使用nmcli配置网络
network manager
是监控和管理网络的服务,命令行工具和图形化工具将配置网络配置信息保存在/etc/sysconfig/network-scripts
目录中。
linux系统的网络配置,可以使用命令行工具、图形化界面工具、配置文件的方式来进行配置,这里推荐使用命令行工具进行配置网络IP地址信息。
nmcli 命令摘要
1 | nmcli 命令摘要 |
1 | nmcli connection 网络连接管理 |
使用nmcli查看网络信息
1 | [root@server ~]# nmcli conn show |
查看单个网卡信息:
1 | [root@server ~]# nmcli conn show "ens33" |
查看网卡物理信息
1 | [root@server ~]# nmcli device status |
nmcli中网卡设备和连接的关系
在redhat7中,我们有网卡设备和网卡连接(connection / profile ),两种东西,他们是什么关系呢?
网卡设备是我们真实的网卡,而网卡连接是网卡的一个配置文件,我们需要将网卡关联到网卡配置文件上可以正常使用。
使用nmcli命令编辑连接配置
修改配置名称,从”Wired connection 1”修改为abc
1 | [root@server ~]# nmcli con modify "Wired connection 1" con-name abc |
关闭自动连接
1 | nmcli con modify "System eth0" connection.autoconnect no |
修改DNS
1 | nmcli con modify "System eth0" ipv4.dns 223.5.5.5 |
添加DNS
1 | nmcli con modify "System eth0" +ipv4.dns 192.168.224.2 |
修改IP地址
1 | nmcli con modify "System eth0" ipv4.addresses 192.168.224.10/16 |
同时修改IP地址和网关
1 | nmcli conn modify ens33 ipv4.addresses 192.168.224.101/24 ipv4.gateway 192.168.224.2 |
修改网关
1 | nmcli conn modify abc ipv4.gateway 192.168.224.2 |
重新加载配置
1 | nmcli con up “System eth0” ,如果无效可以重启network服务。 |
配置主机名称
使用hostname命令显示或临时修改系统的名称。
[root@desktop0 ~]# hostname desktop0.example.com
[root@desktop0 ~]# hostname XXX.example.com
hostname命令实质上读取的/etc/hostname文件,hostname命令修改的主机名称不会保存到该文件当中,只是修改了临时变量,在我们重启系统以后hostname设置的主机名称就会恢复。
如需永久修改主机名称,可以使用hostnamectl 命令进行修改。
hostnamectl set-hostname XXXXXX
如果当系统中没有/etc/hostname的文件,那么系统会使用IP进行DNS的反向解析,从而通过DNS获取主机名称
配置本地名称解析
默认情况下,当我们访问一个主机名或一个域名的时候我们需要通过DNS服务器将名称解析成IP地址,但在某些情况下我们可能需要配置一些DNS服务器不存在的名称,那么这个时候我就需要在系统本地设置名称解析。该功能是通过/etc/hosts文件来进行定义的。
如有定义/etc/hosts文件,则先按照该文件所定义的内容进行解析,如没有相应的条目则使用DNS服务进行解析。
[root@desktop0 ~]# cat /etc/hosts
…
172.25.254.254 classroom.example.com
172.25.254.254 content.example.com
172.25.0.10 desktop0.example.com
[root@desktop0 ~]# host classroom.example.com
classroom.example.com has address 172.25.254.254
server 主机名称 hostname
server.example.com FQDN:(Fully Qualified Domain Name)全限定域名
为Client2增加一块物理桥接类型的网卡,将IP设置为192.168.198.131:
登陆到虚拟机。
运行命令 nmcli conn show。 结果显示只有ens33这一块网卡。
[jim@client1 ~]$ nmcli con show
NAME UUID TYPE DEVICE
ens33 17883cd1-86c8-4ec3-b254-5ce6d462e929 802-3-ethernet ens33
virbr0 ee3ee66a-b0a2-44e8-8fac-ffefe039a0b1 bridge virbr0
[jim@client1 ~]$开机状态下为虚拟机Client2增加一块”仅主机“类型的网卡。 Linux自动识别到新的网卡ens37,连接名称为‘Wired connection 1’。
1
2
3
4
5[root@client4 ~]# nmcli con show
NAME UUID TYPE DEVICE
Wired connection 1 f7ef9df8-e21a-393c-8b9d-5ac5c300b54b 802-3-ethernet ens37
ens33 17883cd1-86c8-4ec3-b254-5ce6d462e929 802-3-ethernet ens33
virbr0 69cdf8dd-53a3-4db5-9685-6162a828f381 bridge virbr0运行命令 nmcli conn show。结果显示系统会自动识别到新网卡,并且命令为ens37. 因为网络默认是DHCP类型,所以机器已经自动获得IP地址。 IP网段为192.168.198.X
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19[jim@client1 ~]$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.224.11 netmask 255.255.255.0 broadcast 192.168.224.255
inet6 fe80::aed7:e5a6:39f2:bc3c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:4e:51:b0 txqueuelen 1000 (Ethernet)
RX packets 19387 bytes 28578038 (27.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8951 bytes 545551 (532.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.198.128 netmask 255.255.255.0 broadcast 192.168.198.255
inet6 fe80::18a7:f3a8:5db7:9e2e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:4e:51:ba txqueuelen 1000 (Ethernet)
RX packets 135 bytes 17298 (16.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 52 bytes 8999 (8.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
。。。
修改IP地址为192.168.198.131。运行:
1
nmcli con modify "Wired connection 1" ipv4.addresses "192.168.198.131/24"
激活配置.
1
nmcli conn up "Wired connection 1"
运行
ifconifg
查询IP,结果显示IP已经生效。
1 | ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 |
删除连接配置,将静态IP改为自动获取。
1
nmcli conn delete "Wired connection 1"
测试二:
为网卡ens37配置多份连接配置。以便于在不同的环境下切换IP配置。 例如配置一中,配置名称conn1 IP设置为192.168.198.120. 配置二中,配置名称conn2,IP设置为192.168.198.121
创建conn1,设置IP为120
1 | nmcli con add con-name conn1 type ethernet ifname ens37 ipv4.addresses "192.168.198.120/24" ipv4.gateway 192.168.192.1 |
创建conn2,设置IP为121
1 | nmcli con add con-name conn2 type ethernet ifname ens37 ipv4.addresses "192.168.198.121/24" ipv4.gateway 192.168.192.1 |
激活conn2
1 | nmcli conn up conn2 |
激活conn1
1 | nmcli conn up conn1 |
- 本文标题:NetworkManager
- 本文作者:yichen
- 本文链接:https://yc6.cool/2020/08/03/NetworkManager/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!