NetworkManager设置 您所在的位置:网站首页 ubuntu卸载networkmanager NetworkManager设置

NetworkManager设置

2023-04-15 15:38| 来源: 网络整理| 查看: 265

通常的linux发行版对于网络的配置方法一般会同时支持network.service(即配置和使用/etc/sysconfig/network-scripts/下的配置文件来配置网络,对于ubuntu是/etc/network/interfaces等等)和NetworkManager.service(简称NM)。默认情况下,这2个服务都有开启,而且功能上是平行的,可以通过任意一个来配置网络,正常的情况下通过NM来配置网络后它会自动把配置同步到network.service的配置中。NM能管理各种网络物理网卡、虚拟网卡有线网卡、无线网卡动态ip、静态ip以太网、非以太网

使用方法

nmcli:命令行。这是最常用的工具。 nmtui:在shell终端开启文本图形界面。 Freedesktop applet:如GNOME上自带的网络管理工具 nm-connection-editor图形配置工具 cockpit:redhat自带的基于web图形界面的"驾驶舱"工具,具有dashborad和基础管理功能。

nmcli使用方法

nmcli使用方法非常类似linux ip命令、cisco交换机命令,并且支持tab补全,也可在命令最后通过-h、--help、help查看帮助。在nmcli中有2个命令最为常用:

nmcli connection

连接,可理解为配置文件,相当于ifcfg-ethX。可以简写为nmcli c

nmcli device

这里注意一点:ethernet是设备类型,eth0是设备名称。不要混了,设备类型可以是ethernet代表以太网,还可以是loopback代表环回口等等。

设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为nmcli d

在NM里,有2个层级:连接(connection)和设备(device),连接的配置记录在(对于ubuntu为/etc/NetworkManager/system-connections/内),通常NM的管理是以连接为单位的,在连接的配置文件里指明设备名,所以我们在NM的所有配置目录里找不到针对设备的配置文件,只有针对连接的配置文件,就像你的手机wifi可以记住多个无线连接一样,多个连接可以使用同一个设备,但同一时刻,一个设备只能有一个连接活跃。意思就是你的手机wifi在一个时刻只能连接一个wifi。可以通过 nmcli connetion up 来切换连接。

对于一个device有4种常见状态

connected:已被NM托管,并且当前有活跃的connection disconnected:已被NM托管,但是当前没有活跃的connection unmanaged:未被NM托管,就是不让NM动这个设备相关的任何操作unavailable:不可用,NM无法托管,通常出现于网卡link为down的时候(比如ip link set ethX down)

对于任意设备上的任一connection通常有2种状态

活跃(带颜色字体):表示当前该connection是正在使用的。 非活跃(正常字体):表示当前该connection没有连接。

nmcli常用命令一览对于连接:# 查看ip(类似于ifconfig、ip addr) nmcli # 创建connection,配置静态ip(等同于配置ifcfg,其中BOOTPROTO=none,并ifup启动) nmcli c add type ethernet con-name CNNCT1 ifname ethX ipv4.addr 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual # 创建connection,配置动态ip(等同于配置ifcfg,其中BOOTPROTO=dhcp,并ifup启动) nmcli c add type ethernet con-name CNNCT1 ifname ethX ipv4.method auto # 修改ip(非交互式) nmcli c modify CNNCT1 ipv4.addr '192.168.1.200/24' nmcli c up CNNCT1 # 修改ip(交互式) nmcli c edit CNNCT1 nmcli> goto ipv4.addresses nmcli ipv4.addresses> change Edit 'addresses' value: 192.168.1.200/24 Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes nmcli ipv4> save nmcli ipv4> activate nmcli ipv4> quit # 启用connection(相当于ifup) nmcli c up CNNCT1 # 停止connection(相当于ifdown) nmcli c down # 删除connection(类似于ifdown并删除ifcfg) nmcli c delete CNNCT1 # 查看connection列表 nmcli c show # 查看connection详细信息 nmcli c show CNNCT1 # 重载所有ifcfg或route到connection(不会立即生效) nmcli c reload # 重载指定ifcfg或route到connection(即导入原来的系统配置,不会立即生效) nmcli c load /etc/sysconfig/network-scripts/ifcfg-eth0 //注意eth0是设备名(centos) nmcli c load /etc/sysconfig/network-scripts/route-eth0 //这个是配置的路由(centos) # 立即生效connection,有3种方法 nmcli c up CNNCT1 nmcli d reapply CNNCT1 nmcli d connect CNNCT1

对于设备(device)

# 查看device列表 nmcli d # 查看所有device详细信息 nmcli d show # 查看指定device的详细信息 nmcli d show eth0 # 激活网卡 nmcli d connect eth0 # 关闭无线网络(NM默认启用无线网络) nmcli r all off # 查看NM托管状态 nmcli n # 开启NM托管 nmcli n on # 关闭NM托管(谨慎执行) nmcli n off # 监听事件 nmcli m # 查看NM本身状态 nmcli # 检测NM是否在线可用 nm-online

本文提及的ifcfg均指代/etc/sysconfig/network-scripts/ifcfg-ethX及/etc/sysconfig/network-scripts/route-ethX(即原来的配置方法)NetworkManager自己的配置文件在/etc/NetworkManager/下[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #网卡设备名称 ONBOOT=yes#启动时是否激活 yes | no BOOTPROTO=static #协议类型 dhcp bootp none IPADDR=192.168.1.90#网络IP地址 NETMASK=255.255.255.0#网络子网地址 GATEWAY=192.168.1.1#网关地址 BROADCAST=192.168.1.255#广播地址 HWADDR=00:0C:29:FE:1A:09#网卡MAC地址 TYPE=Ethernet #网卡类型为以太网 [root@localhost ~]# cat /etc/sysconfig/network-scripts/route-eth0 0.0.0.0/0 via 192.168.3.1 dev eth0 10.211.6.0/24 via 192.168.3.1 dev eth0 # cat /etc/sysconfig/network-scripts/route-eth1 10.0.0.0/8 via 10.212.52.1 dev eth1nmcli connection重点

nmcli c show

▪ 第一列是connection名字,简称con-name(注意con-name不是网卡名) ▪ 第二列是connection的UUID ▪ 最后一列才是网卡名(标准说法叫device名),可通过nmcil d查看device

对connection做操作时需要指定标识,标识可以是con-name、UUID、如果存在ifcfg文件则也可以用ifcfg的完整路径,即/etc/sysconfig/network-scripts/ifcfg-ethX

nmcli c show CNNT1 nmcli c show cae3f1ef-e79a-46c3-8e0c-946b91a65e11 nmcli c show /etc/sysconfig/network-scripts/ifcfg-ethX

nmcli c的con-name

同时对应ifcfg的文件名以及内容中的NAME=,该参数表示连接(connection)的名字,无需和网卡名相同,可以为一个设备(device)创建多个连接,但同一时刻只能有一个连接生效。当有多个连接时候, nmcli cdelete删除当前连接,就会自动选择同一个设备的其他连接来顶替生效。可以通过 nmcli c up来将指定连接切换生效。

注意:通过nmcli c modify修改con-name,只会对应修改ifcfg文件中的NAME,而不会更改ifcfg文件名。

nmcli c的ipv4.method

对应ifcfg文件内容的BOOTPROTO,ipv4.method默认为auto,对应为BOOTPROTO=dhcp,这种时候如果指定ip,就可能导致网卡同时有dhcp分配的ip和静态ip。设置为manual表示BOOTPROTO=none,即只有静态ip。

例子:创建一个连接(connection)

nmcli c add type ethernet con-name ethX-test ifname ethX ipv4.addresses '192.168.1.100/24,192.168.1.101/32' ipv4.routes '10.0.0.0/8 192.168.1.10,192.168.0.0/16 192.168.1.11' ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,4.4.4.4' ipv4.method manual

▪ type ethernet:创建连接时候必须指定类型,类型有很多,可以通过 nmcli c add type-h看到,这里指定为ethernet。 ▪ con-name ethX ifname ethX:第一个ethX表示连接(connection)的名字,这个名字可以任意定义,无需和网卡名相同;第二个ethX表示网卡名,这个ethX必须是在 nmcli d里能看到的。 ▪ ipv4.addresses '192.168.1.100/24,192.168.1.101/32':配置2个ip地址,分别为192.168.1.100/24和192.168.1.101/32 ▪ ipv4.gateway 192.168.1.254:网关为192.168.1.254 ▪ ipv4.dns '8.8.8.8,4.4.4.4':dns为8.8.8.8和4.4.4.4 ▪ ipv4.method manual:配置静态IP

对应的ifcfg和dns就是

# /etc/sysconfig/network-scripts/ifcfg-eth0-test TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none IPADDR=192.168.1.100 PREFIX=24 IPADDR1=192.168.1.101 PREFIX1=32 GATEWAY=192.168.1.254 DNS1=8.8.8.8 DNS2=4.4.4.4 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ethX-test UUID=9a10ad89-437c-4caa-949c-a394a6d28c8d DEVICE=ethX ONBOOT=yes # /etc/resolv.conf nameserver 8.8.8.8 nameserver 4.4.4.4

此时,通过 nmcli c应该可以看到增加了一条连接

注意:如果这是为eth0创建的第一个连接,则自动生效;如果此时已有连接存在,则该连接不会自动生效,可以执行 nmcli c up eth0-test来切换生效nmcli device重点

nmcli d connect eth0

由NM对指定网卡进行管理,同时刷新该网卡对应的活跃connection(如果之前有修改过connection配置);如果有connection但是都处于非活跃状态,则自动选择一个connection并将其活跃;如果没有connection,则自动生成一个并将其活跃。

nmcli d disconnect eth0

让NM断开指定网卡的连接,此操作不会变更实际网卡的link状态,只会使对应的connection变成非活跃。若重启系统则又会自动connect。另外,如果手工将该网卡的connection全部删掉,该网卡状态也会自动变为disconnected。

nmcli d reapply eth0

专门用于刷新connection,前提是网卡的device处于connected状态,否则会报错。

nmcli d set eth0 autoconnect yes|no managed yes|no

可以设置是否自动连接和是否自动管理,但经测试只能用于当前开机状态, 如果这2个参数都设置为no,然后重启系统,又会自动恢复成connected和managed yes的状态。所以该命令用途不大。注意事项:如果managed设置为no,那么 nmcli c reload会读取配置文件,但是不会立即生效,接着如果执行nmcli c up CNNT1,就会立即生效,同时managed自动变为yes。

重启系统自动恢复成connected和managed yes的状态,这种逻辑并不实用也不够合理,笔者已将此问题提交给redhat,据回复,这么设计是因为目前没有一个有效的手段来证明“我是我”,比如当网卡重新拔插到其他插槽时候,网卡名有很大可能性会发生变化,因此无法确定关机前设置的是对应开机后的哪个网卡,目前暂无办法解决,笔者将持续跟进。3种网络配置方法

在讲3种配置方法前,需要先明白ifcfg和NM connection的关联:虽然network.service被废弃了,但是redhat为了兼容传统的ifcfg,通过NM进行网络配置时候,会自动将connection同步到ifcfg配置文件中。也可以通过 nmcli c reload或者 nmcli c load/etc/sysconfig/network-scripts/ifcfg-ethX的方式来让NM读取ifcfg配置文件到connection中。因此ifcfg和connection是一对一的关系,另外上面有提到,connection和device是多对一的关系。

在rhel8上,有3种方法进行网络配置

1. 手工配置ifcfg,通过NM来生效 ,意思就是导入原来的配置到NM 2. 通过NM自带工具配ip,比如nmcli,意思是从头建立自己的配置 3. 手工配置ifcfg,通过传统network.service来生效

建议:

推荐使用上述第1种网络配置方法(手工配置ifcfg,通过NM生效),因为这样既兼容了传统的ifcfg配置,又能熟悉nmcli。举例:

cat > /etc/sysconfig/network-scripts/ifcfg-eth0

13. cockpit示意图:

在rhel8.0 beta时候,必须要先将浏览器语言设置为英语,才可以使用,如果为中文,在登陆后是空白页面。笔者已将该bug提交给redhat,据回复会在RHEL8.0正式版修复,笔者将持续跟进。

本文转自基于RHEL8/CentOS8的网络IP配置详解,作者:小慢哥 略有修改。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有