详解Centos8 配置静态IP的实现
安装centos8之后,重启启动网络时,会出现以下报错
报错信息如下:
Failedtostartnetwork.service:Unitnetwork.servicenotfound.
意思为无法重启网络服务,原因是无法找到network.service网络服务。
在rhel8(含centos8)上,在/etc/sysconfig/network-scripts/里也看不到任何脚本文件,没有传统的network.service。因此只能通过其它方法进行网络配置,包括NM命令工具集。换言之,在rhel8上,必须开启NM,否则无法使用网络。
手动配置静态IP
cat/etc/sysconfig/network-scripts/ifcfg-ens32 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static 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=ens32 UUID=066b4926-b40c-4c28-a5b4-2310d2b96613 DEVICE=ens32 ONBOOT=yes IPADDR=192.168.1.200 NETMASK=255.255.255.0 GATEWAY=192.168.1.254 DNS1=223.5.5.5 PREFIX=24
使用nmcli重新回载网络配置
nmclicreload
查看
nmclic NAMEUUIDTYPEDEVICE ens32066b4926-b40c-4c28-a5b4-2310d2b96613ethernetens32
补充nmcli命令
nmcli使用方法
nmcli使用方法非常类似linuxip命令、cisco交换机命令,并且支持tab补全(详见本文最后的Tips),也可在命令最后通过-h、--help、help查看帮助。
nmcli--help Usage:nmcli[OPTIONS]OBJECT{COMMAND|help} OPTIONS -o[verview]overviewmode(hidedefaultvalues) -t[erse]terseoutput -p[retty]prettyoutput -m[ode]tabular|multilineoutputmode -c[olors]auto|yes|nowhethertousecolorsinoutput -f[ields]|all|commonspecifyfieldstooutput -g[et-values] |all|commonshortcutfor-mtabular-t-f -e[scape]yes|noescapecolumnsseparatorsinvalues -a[sk]askformissingparameters -s[how-secrets]allowdisplayingpasswords -w[ait] settimeoutwaitingforfinishingoperations -v[ersion]showprogramversion -h[elp]printthishelp OBJECT g[eneral]NetworkManager'sgeneralstatusandoperations n[etworking]overallnetworkingcontrol r[adio]NetworkManagerradioswitches c[onnection]NetworkManager'sconnections d[evice]devicesmanagedbyNetworkManager a[gent]NetworkManagersecretagentorpolkitagent m[onitor]monitorNetworkManagerchanges
在nmcli中有2个命令最为常用:
nmcliconnection
译作连接,可理解为配置文件,相当于ifcfg-ethX。可以简写为nmclic
nmclidevice
译作设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为nmclid
在NM里,有2个维度:连接(connection)和设备(device),这是多对一的关系。想给某个网卡配ip,首先NM要能纳管这个网卡。设备里存在的网卡(即nmclid可以看到的),就是NM纳管的。接着,可以为一个设备配置多个连接(即nmclic可以看到的),每个连接可以理解为一个ifcfg配置文件。同一时刻,一个设备只能有一个连接活跃。可以通过nmclicup切换连接。
connection有2种状态:
- 活跃(带颜色字体):表示当前该connection生效
- 非活跃(正常字体):表示当前该connection不生效
device有4种常见状态:
- connected:已被NM纳管,并且当前有活跃的connection
- disconnected:已被NM纳管,但是当前没有活跃的connection
- unmanaged:未被NM纳管
- unavailable:不可用,NM无法纳管,通常出现于网卡link为down的时候(比如iplinksetens32down)
nmcli常用命令一览
#查看ip(类似于ifconfig、ipaddr) nmcli #创建connection,配置静态ip(等同于配置ifcfg,其中BOOTPROTO=none,并ifup启动) nmclicaddtypeethernetcon-nameens32ifnameens32ipv4.addr192.168.1.100/24ipv4.gateway192.168.1.1ipv4.methodmanual #创建connection,配置动态ip(等同于配置ifcfg,其中BOOTPROTO=dhcp,并ifup启动) nmclicaddtypeethernetcon-nameens32ifnameens32ipv4.methodauto
#修改ip(非交互式) nmclicmodifyens32ipv4.addr'192.168.1.200/24' nmclicupens32
#修改ip(交互式) nmcliceditens32 nmcli>gotoipv4.addresses nmcliipv4.addresses>change Edit'addresses'value:192.168.1.200/24 Doyoualsowanttoset'ipv4.method'to'manual'?[yes]:yes nmcliipv4>save nmcliipv4>activate nmcliipv4>quit
#启用connection(相当于ifup) nmclicupens32
#停止connection(相当于ifdown) nmclicdown
#删除connection(类似于ifdown并删除ifcfg) nmclicdeleteens32
#查看connection列表 nmclicshow
#查看connection详细信息 nmclicshowens32
#重载所有ifcfg或route到connection(不会立即生效) nmclicreload
#重载指定ifcfg或route到connection(不会立即生效) nmclicload/etc/sysconfig/network-scripts/ifcfg-ens32 nmclicload/etc/sysconfig/network-scripts/route-ens32
#立即生效connection,有3种方法 nmclicupens32 nmclidreapplyens32 nmclidconnectens32
#查看device列表 nmclid
#查看所有device详细信息 nmclidshow
#查看指定device的详细信息 nmclidshowens32
#激活网卡 nmclidconnectens32
#关闭无线网络(NM默认启用无线网络) nmcliralloff
#查看NM纳管状态 nmclin
#开启NM纳管 nmclinon
#关闭NM纳管(谨慎执行) nmclinoff
#监听事件 nmclim
#查看NM本身状态 nmcli
#检测NM是否在线可用 nm-online
提及的ifcfg均指代/etc/sysconfig/network-scripts/ifcfg-ens32及/etc/sysconfig/network-scripts/route-ens32
nmcliconnection重点
nmclicshow NAMEUUIDTYPEDEVICE ens32066b4926-b40c-4c28-a5b4-2310d2b96613ethernetens32
对connection做操作时需要指定标识,标识可以是con-name、UUID、如果存在ifcfg文件则也可以用ifcfg的完整路径,即/etc/sysconfig/network-scripts/ifcfg-ens32
nmclicshowens32 nmclicshowcae3f1ef-e79a-46c3-8e0c-946b91a65e11 nmclicshow/etc/sysconfig/network-scripts/ifcfg-ens32
nmclic的con-name
同时对应ifcfg的文件名以及内容中的NAME=,该参数表示连接(connection)的名字,无需和网卡名相同,可以为一个设备(device)创建多个连接,但同一时刻只能有一个连接生效。当有多个连接时候,nmclicdelete删除当前连接,就会自动选择同一个设备的其他连接来顶替生效。可以通过nmclicup来将指定连接切换生效。
注意:通过nmclicmodify修改con-name,只会对应修改ifcfg文件中的NAME,而不会更改ifcfg文件名。
nmclic的ipv4.method
对应ifcfg文件内容的BOOTPROTO,ipv4.method默认为auto,对应为BOOTPROTO=dhcp,这种时候如果指定ip,就可能导致网卡同时有dhcp分配的ip和静态ip。设置为manual表示BOOTPROTO=none,即只有静态ip。
例子:创建一个连接(connection)
nmclicaddtypeethernetcon-nameens32-testifnameens32ipv4.addresses'192.168.1.100/24,192.168.1.101/32'ipv4.routes'10.0.0.0/8192.168.1.10,192.168.0.0/16192.168.1.11'ipv4.gateway192.168.1.254ipv4.dns'8.8.8.8,4.4.4.4'ipv4.methodmanual
- typeethernet:创建连接时候必须指定类型,类型有很多,可以通过nmclicaddtype-h看到,这里指定为ethernet。
- con-nameens32ifnameens32:第一个ethX表示连接(connection)的名字,这个名字可以任意定义,无需和网卡名相同;第二个ethX表示网卡名,这个ethX必须是在nmclid里能看到的。
- 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.gateway192.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.methodmanual:配置静态IP
对应的ifcfg和dns就是
#/etc/sysconfig/network-scripts/ifcfg-ens32-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=ens32-test UUID=9a10ad89-437c-4caa-949c-a394a6d28c8d DEVICE=ens32 ONBOOT=yes #/etc/resolv.conf nameserver8.8.8.8 nameserver4.4.4.4
此时,通过nmclic应该可以看到增加了一条连接
注意:如果这是为ethX创建的第一个连接,则自动生效;如果此时已有连接存在,则该连接不会自动生效,可以执行nmclicupethX-test来切换生效
nmclidevice重点
nmclidconnectens32
由NM对指定网卡进行管理,同时刷新该网卡对应的活跃connection(如果之前有修改过connection配置);如果有connection但是都处于非活跃状态,则自动选择一个connection并将其活跃;如果没有connection,则自动生成一个并将其活跃。
nmcliddisconnectens32
让NM暂时不管理指定网卡,此操作不会变更实际网卡的link状态,只会使对应的connection变成非活跃。若重启系统则又会自动connect。另外,如果手工将该网卡的connection全部删掉,该网卡状态也会自动变为disconnected。
nmclidreapplyens32
专门用于刷新connection,前提是网卡的device处于connected状态,否则会报错。
nmclidsetens32autoconnectyes|nomanagedyes|no
可以设置是否自动连接和是否自动管理,但经测试只能用于当前开机状态,如果这2个参数都设置为no,然后重启系统,又会自动恢复成connected和managedyes的状态。所以该命令用途不大。注意事项:如果managed设置为no,那么nmclicreload会读取配置文件,但是不会立即生效,接着如果执行nmclicupethX,就会立即生效,同时managed自动变为yes。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。