详解Centos8 配置静态IP的实现

安装centos 8之后,重启启动网络时,会出现以下报错

报错信息如下:

Failed to start network.service: Unit network.service not found.

意思为无法重启网络服务,原因是无法找到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重新回载网络配置

nmcli c reload

查看

nmcli c
NAME UUID                 TYPE DEVICE
ens32 066b4926-b40c-4c28-a5b4-2310d2b96613 ethernet ens32  

补充nmcli命令

nmcli使用方法

nmcli使用方法非常类似linux ip命令、cisco交换机命令,并且支持tab补全(详见本文最后的Tips),也可在命令最后通过-h、--help、help查看帮助。

nmcli --help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

OPTIONS
-o[verview] overview mode (hide default values)
-t[erse] terse output
-p[retty] pretty output
-m[ode] tabular|multiline output mode
-c[olors] auto|yes|no whether to use colors in output
-f[ields] <field1,field2,...>|all|common specify fields to output
-g[et-values] <field1,field2,...>|all|common shortcut for -m tabular -t -f
-e[scape] yes|no escape columns separators in values
-a[sk] ask for missing parameters
-s[how-secrets] allow displaying passwords
-w[ait] <seconds> set timeout waiting for finishing operations
-v[ersion] show program version
-h[elp] print this help

OBJECT
g[eneral] NetworkManager's general status and operations
n[etworking] overall networking control
r[adio] NetworkManager radio switches
c[onnection] NetworkManager's connections
d[evice] devices managed by NetworkManager
a[gent] NetworkManager secret agent or polkit agent
m[onitor] monitor NetworkManager changes

在nmcli中有2个命令最为常用:

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

nmcli device
译作设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为nmcli d
在NM里,有2个维度:连接(connection)和设备(device),这是多对一的关系。想给某个网卡配ip,首先NM要能纳管这个网卡。设备里存在的网卡(即nmcli d可以看到的),就是NM纳管的。接着,可以为一个设备配置多个连接(即nmcli c可以看到的),每个连接可以理解为一个ifcfg配置文件。同一时刻,一个设备只能有一个连接活跃。可以通过nmcli c up切换连接。

connection有2种状态:

  • 活跃(带颜色字体):表示当前该connection生效
  • 非活跃(正常字体):表示当前该connection不生效

device有4种常见状态:

  • connected:已被NM纳管,并且当前有活跃的connection
  • disconnected:已被NM纳管,但是当前没有活跃的connection
  • unmanaged:未被NM纳管
  • unavailable:不可用,NM无法纳管,通常出现于网卡link为down的时候(比如ip link set ens32 down) 

nmcli常用命令一览

# 查看ip(类似于ifconfig、ip addr)
nmcli

# 创建connection,配置静态ip(等同于配置ifcfg,其中BOOTPROTO=none,并ifup启动)
nmcli c add type ethernet con-name ens32 ifname ens32 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 ens32 ifname ens32 ipv4.method auto
# 修改ip(非交互式)
nmcli c modify ens32 ipv4.addr '192.168.1.200/24'
nmcli c up ens32
# 修改ip(交互式)
nmcli c edit ens32
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 ens32
# 停止connection(相当于ifdown)
nmcli c down
# 删除connection(类似于ifdown并删除ifcfg)
nmcli c delete ens32
# 查看connection列表
nmcli c show
# 查看connection详细信息
nmcli c show ens32
# 重载所有ifcfg或route到connection(不会立即生效)
nmcli c reload
# 重载指定ifcfg或route到connection(不会立即生效)
nmcli c load /etc/sysconfig/network-scripts/ifcfg-ens32
nmcli c load /etc/sysconfig/network-scripts/route-ens32
# 立即生效connection,有3种方法
nmcli c up ens32
nmcli d reapply ens32
nmcli d connect ens32 
# 查看device列表
nmcli d
# 查看所有device详细信息
nmcli d show
# 查看指定device的详细信息
nmcli d show ens32
# 激活网卡
nmcli d connect ens32
# 关闭无线网络(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-ens32及/etc/sysconfig/network-scripts/route-ens32

nmcli connection重点

nmcli c show
NAME UUID TYPE DEVICE
ens32 066b4926-b40c-4c28-a5b4-2310d2b96613 ethernet ens32
  • 第一列是connection名字,简称con-name(注意con-name不是网卡名)
  • 第二列是connection的UUID
  • 最后一列才是网卡名(标准说法叫device名),可通过nmcil d查看device 

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

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

nmcli c的con-name

同时对应ifcfg的文件名以及内容中的NAME=,该参数表示连接(connection)的名字,无需和网卡名相同,可以为一个设备(device)创建多个连接,但同一时刻只能有一个连接生效。当有多个连接时候,nmcli c delete删除当前连接,就会自动选择同一个设备的其他连接来顶替生效。可以通过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 ens32-test ifname ens32 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 ens32 ifname ens32:第一个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-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
nameserver 8.8.8.8
nameserver 4.4.4.4

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

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

nmcli device重点

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

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • CentOS8.0 网络配置的实现

    一.CentOS 7和CentOS 8网络配置区别: VMware Workstation 15 Pro中安装了CentOS 8.0.1905,但在配置IP地址过程中发现没有了network.service,并且/etc/sysconfig/network-scripts目录中也没有任何脚本文件,CentOS 7中同时支持network.service和NetworkManager.service(简称NM)2种方式配置网络,而在CentOS 8中已经废弃network.service,必须通过

  • CentOS8 yum/dnf 配置国内源的方法

    CentOS 8更改了软件包的安装程序,取消了 yum 的配置方法,改而使用了dnf 作为安装程序.虽然改变了软件包的安装方式,但是 dnf 还是能兼容使用 yum 的配置文件的和命令的使用方法的.不过我并不知道这个兼容配置会持续多久和国内的镜像(这里使用的是阿里云镜像)路径是否会做修改,所以才在标题添加了临时标志. 这里也就不过多讲解了,直接上文件: # file: /etc/yum.repos.d/CentOS-AppStream.repo [AppStream] name=CentOS-$

  • 浅析CentOS8虚拟机访问Windows10主机文件夹方法

    安装VMware Tools后,①文本在虚拟机主机之间可以相互复制粘贴, ②虚拟机文件可复制到主机,但 → 主机文件无法复制到虚拟机.可通过以下方法,从终端直接访问主机文件夹. 1.虚拟机>设置>选项>共享文件夹 点选 "总是启用" "文件夹">添加>下一步>浏览[主机路径]>下一步 启用此共享>完成>确定 2.终端输入 vmware-hgfsclient 显示刚刚添加的主机文件夹名. 3.终端输入 /bin/v

  • CentOS8 网卡配置文件

    一. 介绍 Centos8系统更新,新的版本让人看起来感觉很舒服,这时有人会配置CentOS8系统的网卡使系统上网,就会遇到配置好的网卡不会生效,自己想想和配置CentOS7的时候一个样啊,CentOS8更新最大的改动就是网卡这一块了,接下来就配置一下网卡: 二. 配置 网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33 [root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@loc

  • CentOS8 安装 jdk8 / java8的教程(推荐)

    前言 最开始我是想在CentOS8上使用 wget 下载,然后对它进行解压,配置环境变量,奈何搞了很长时间都没有搞好,于是放弃,使用yum直接安装. 1.安装方法 CentOS8上使用 yum 直接安装,环境变量自动配置好 2.查看是否已安装 看到下面结果,说明已经安装配置 jdk [root@localhost ~]# java -version openjdk version "1.8.0_222" OpenJDK Runtime Environment (build 1.8.0_

  • centos8安装图解(超详细教程)

    CentOS 8 官方正式发布了!CentOS 完全遵守 Red Hat 的再发行政策,并且致力与上游产品在功能上完全兼容.CentOS 对组件的修改主要是去除 Red Hat 的商标及美工图.该版本还包含全新的 RHEL upstream, CentOS Streams. 官方中文的发行说明:https://wiki.centos.org/Manuals/ReleaseNotes/CentOS8.1905 CentOS 8 的新特性 DNF 成为了默认的软件包管理器,同时 yum 仍然是可用的

  • 详解Centos8 配置静态IP的实现

    安装centos 8之后,重启启动网络时,会出现以下报错 报错信息如下: Failed to start network.service: Unit network.service not found. 意思为无法重启网络服务,原因是无法找到network.service网络服务. 在rhel8(含centos8)上,在/etc/sysconfig/network-scripts/里也看不到任何脚本文件,没有传统的network.service.因此只能通过其它方法进行网络配置,包括NM命令工具

  • 详解CentOs设置静态IP的方法

    在做项目时由于公司局域网采用自动获取IP的方式,导到每次服务器重启主机IP都会变化.为了解决这个问题,我参考了其他的文章然后根据自己的情况设置静态IP解决了这个问题,处理方式如下: 1.修改网卡配置 编辑:vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0 BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或boot

  • 【Linux】VMware虚拟机中如何配置静态IP详解

    此处详解如何在VMware虚拟机中配置静态IP. 上图是一个草图,大致说明下VMware网络情况.网段指某个IP范围,例如一栋小区楼和另一栋小区楼就不是一个网段 如果你在A小区,你女朋友在B小区,你想和她联系就需要通过网关.你好基友住你隔壁,你和他通信就不需要通过网关.VMware 给我们模拟了网关,所以我们配置的时候需要根据VMware虚拟机来设置网络ip.我们将windows和Linux配置在一个网段内. 1.查看网关,以及网段 [编辑]-->[虚拟网络编辑器] 我们使用NAT模式,所以选择

  • vmware虚拟机NAT配置静态IP教程详解

    一.配置虚拟机的"虚拟网络编辑器" 注意1:虚拟机局域网IP段一定不要和真实使用的IP段冲突. 二.查看本地电脑VMnet8网卡的IP段 注意2.本地电脑VMnet8网卡IP段必须与虚拟机局域网Ip端相同 三.更改虚拟机系统网卡的IP配置 vim /et/sysconfig/network-scripts/ifcfg-etho 修改为 BOOTPROTO="static" #dhcp改为static ONBOOT="yes" #开机启用本配置 I

  • linux系统下hosts文件详解及配置

    hosts文件 hosts -- the static table lookup for host name(主机名查询静态表). hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件,以ascii格式保存在/etc/目录下.hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名.在没有域名解析服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用dns服务程序来解决.通过可以将常用的域名和ip地址映射加入到hosts文件中

  • 详解servlet配置load-on-startup的作用

    在servlet的配置当中,<load-on-startup>1</load-on-startup>的含义是:标记容器是否在启动的时候就加载这个servlet. 当值为0或者大于0时,表示容器在应用启动时就加载这个servlet:当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载. 正数的值越小,启动该servlet的优先级越高. 如果我们在web.xml中设置了多个servlet的时候,可以使用load-on-startup来指定servlet的加载顺序,服

  • 详解CentOS8更换yum源后出现同步仓库缓存失败的问题

    问题起因:一开始CentOS 8默认的yum源是能够正常使用的,但使用如下命令安装了Development Tools之后: yum groupinstall -y "Development Tools" 不知道为啥就开始出现同步仓库缓存失败的问题,无法正常安装一些工具包.错误提示如下: [root@localhost /etc/yum.repos.d]# yum makecache CentOS-8.0 - AppStream 19 B/s | 38 B 00:02 CentOS-8

  • 详解基于Scrapy的IP代理池搭建

    一.为什么要搭建爬虫代理池 在众多的网站防爬措施中,有一种是根据ip的访问频率进行限制,即在某一时间段内,当某个ip的访问次数达到一定的阀值时,该ip就会被拉黑.在一段时间内禁止访问. 应对的方法有两种: 1. 降低爬虫的爬取频率,避免IP被限制访问,缺点显而易见:会大大降低爬取的效率. 2. 搭建一个IP代理池,使用不同的IP轮流进行爬取. 二.搭建思路 1.从代理网站(如:西刺代理.快代理.云代理.无忧代理)爬取代理IP: 2.验证代理IP的可用性(使用代理IP去请求指定URL,根据响应验证

  • 关于Nginx动静分离详解以及配置

    1.Nginx动静分离概念 动静分离,通过中间件将动态请求和静态请求进行分离,分离资源,减少不必要的请求消耗,减少请求延时. 好处:动静分离后,即使动态服务不可用,但静态资源不会受到影响 通过中间件可以将动态请求和静态请求进行分离 2.Nginx动静分离应用案例 2.1.环境规划 系统 服务 服务 地址 centos7.5 负载均衡 Nginx proxy 192.168.81.210 centos7.5 静态资源 Nginx static 192.168.81.220 centos7.5 动态

  • 详解如何配置 VirtualBox 中的客户机与宿主机之间的网络连接

    当你在 VirtualBox 虚拟机软件 中安装了各种操作系统时,你可能需要实现宿主机与虚拟机之间的相互访问. 在这篇文章中,我们将会以最简单明了的方式来说明如何配置客户机与 Linux 宿主机的网络,以实现两者相互访问或者让客户机连接到外网.(LCTT 译注:客户机指 Oracle VirtualBox 虚拟机软件中安装的操作系统,如本文中用到的 CentOS 7 和 Ubuntu 16.10 .宿主机就是你自己的笔记本电脑或台式机,注意这篇文章中作者的宿主机上安装的操作系统是 Linux M

随机推荐