阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于RHEL8/CentOS8的网络IP配置详解

611次阅读
没有评论

共计 8236 个字符,预计需要花费 21 分钟才能阅读完成。

基于 RHEL8/CentOS8 的网络 IP 配置详解

➡ 在 rhel8(含 CentOS8)上,没有传统的 network.service,在 /etc/sysconfig/network-scripts/ 里也看不到任何脚本文件,那么该如何进行网络配置呢。
➡ 本文详细阐述基于 rhel8 的网络配置,包含多种配置方法。
➡ 事先声明:本文提及的所有内容,仅适用 rhel8/centos8,因为不同 linux 系统的 NetworkManager 行为存在部分差异。

小慢哥的原创文章,欢迎转载


目录

▪ rhel8 与 7 的区别
▪ NetworkManager 介绍
▪ nmcli 使用方法
▪ nmcli 常用命令一览
▪ nmcli connection 重点
▪ nmcli device 重点
▪ 3 种网络配置方法
▪ Tips

rhel8 与 7 的区别

在 rhel7 上,同时支持 network.service 和 NetworkManager.service(简称 NM)。默认情况下,这 2 个服务都有开启,但许多人都会将 NM 禁用掉。

在 rhel8 上,已废弃 network.service,因此只能通过 NM 进行网络配置,包括动态 ip 和静态 ip。换言之,在 rhel8 上,必须开启 NM,否则无法使用网络。

rhel8 依然支持 network.service,只是默认没安装,详见本文最后的 Tips。

NetworkManager 介绍

NetworkManager 是 2004 年 Red Hat 启动的项目,旨在能够让 Linux 用户更轻松地处理现代网络需求,尤其是无线网络,能自动发现网卡并配置 ip 地址。

类似在手机上同时开启 wifi 和蜂窝网络,自动探测可用网络并连接,无需手动切换。

虽然初衷是针对无线网络,但在服务器领域,NM 已大获成功。

NM 能管理各种网络

▷ 有线网卡、无线网卡
▷ 动态 ip、静态 ip
▷ 以太网、非以太网
▷ 物理网卡、虚拟网卡

使用方法

▷ nmcli:命令行。这是最常用的工具,本文将详细讲解该工具使用。
▷ nmtui:在 shell 终端开启文本图形界面。示意图见本文最后的 Tips
▷ Freedesktop applet:如 GNOME 上自带的网络管理工具
▷ cockpit:RedHat 自带的基于 web 图形界面的 ” 驾驶舱 ” 工具,具有 dashborad 和基础管理功能。示意图见本文最后的 Tips

为什么要用 NM

▷ 工具齐全:命令行、文本界面、图形界面、web
▷ 广纳天地:纳管各种网络,有线、无线、物理、虚拟
▷ 参数丰富:多达 200 多项配置参数(包括 ethtool 参数)
▷ 一统江湖:RedHat 系、SUSE 系、Debian/Ubuntu 系,均支持
▷ 大势所趋:下一个大版本的 rhel 只能通过 NM 管理网络

nmcli 使用方法

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

nmcli 常用命令一览

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

# 创建 connection,配置静态 ip(等同于配置 ifcfg,其中 BOOTPROTO=none,并 ifup 启动)
nmcli c add type ethernet con-name ethX 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 ethX ifname ethX ipv4.method auto

# 修改 ip(非交互式)
nmcli c modify ethX ipv4.addr '192.168.1.200/24'
nmcli c up ethX

# 修改 ip(交互式)
nmcli c edit ethX
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 ethX

# 停止 connection(相当于 ifdown)
nmcli c down

# 删除 connection(类似于 ifdown 并删除 ifcfg)
nmcli c delete ethX

# 查看 connection 列表
nmcli c show

# 查看 connection 详细信息
nmcli c show ethX

# 重载所有 ifcfg 或 route 到 connection(不会立即生效)
nmcli c reload

# 重载指定 ifcfg 或 route 到 connection(不会立即生效)
nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX
nmcli c load /etc/sysconfig/network-scripts/route-ethX

# 立即生效 connection,有 3 种方法
nmcli c up ethX
nmcli d reapply ethX
nmcli d connect ethX

# 查看 device 列表
nmcli d

# 查看所有 device 详细信息
nmcli d show

# 查看指定 device 的详细信息
nmcli d show ethX

# 激活网卡
nmcli d connect ethX

# 关闭无线网络(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

nmcli 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 ethX
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 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 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-ethX-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 应该可以看到增加了一条连接

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

nmcli device 重点

nmcli d connect ethX

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

nmcli d disconnect ethX

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

nmcli d reapply ethX

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

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

可以设置是否自动连接和是否自动管理,但经测试只能用于当前开机状态,如果这 2 个参数都设置为 no,然后重启系统,又会自动恢复成 connected 和 managed yes 的状态。所以该命令用途不大。注意事项:如果 managed 设置为 no,那么 nmcli c reload 会读取配置文件,但是不会立即生效,接着如果执行 nmcli c up ethX,就会立即生效,同时 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 来生效
▷ 2. 通过 NM 自带工具配 ip,比如 nmcli
▷ 3. 手工配置 ifcfg,通过传统 network.service 来生效

建议:

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

cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
EOF

nmcli c reload
# nmcli c up eth0 # 如果之前没有 eth0 的 connection,则上一步 reload 后就已经自动生效了

这么做有 2 个好处:

▷ 按官方建议使用 NM 而不是 network.service
▷ 当还不太熟悉 nmcli 命令时候,这样最稳妥

Tips

1. nmcli 命令支持 tab 补全,但是需要yum install bash-completion

2. 如果希望 NM 不要纳管网卡,只有一个办法最彻底最靠谱,就是自己写 ifcfg,内容加上NM_CONTROLLED=no,这样该 device 的状态就会始终保持 unmanaged。nmcli c up、nmcli c reload、nmcil c load 都不会对其起任何作用。

3. NM 只能对 link 状态为 up 的网卡进行操作,如果手动ip link set ethX down,那么 NM 就无法对该网卡做任何操作(即使 nmcli d connect 也没有用)。

4. 可以通过 yum install network-scripts 来安装传统的 network.service,不过 redhat 说了,在下一个 rhel 的大版本里将彻底废除,因此不建议使用 network.service。

5. 手工创建新的 ifcfg 或者在 ifcfg 里修改 ip 等配置,NM 不会自动读取,需要手工执行 nmcli c reload 或者nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX。这一点可能和其他系统的 NM 行为不太一样,但这种做法实则更适合服务器。

6. 不手工配置 ifcfg,使用默认的 dhcp 情况下,网卡的增减是不会自动生成 ifcfg,此时 nmcli c 看到的 con-name 将类似 ’System ethX’ 或者 ’Wired connection 1’。

7. NetworkManager 支持 3 种获取 dhcp 的方式:dhclient、dhcpcd、internal,当 /etc/NetworkManager/NetworkManager.conf 配置文件中的 [main] 部分没配置 dhcp= 时候,默认使用 internal(rhel7/centos7 默认是 dhclient)。internal 是 NM 内部实现的 dhcp 客户端。

8. 关于手动指定网关 ip 的方法,经过实测,/etc/sysconfig/network 中的 GATEWAY 仅在 3 种情况下有效:NM_CONTROLLED=noipv4.method manual从 ipv4.method manual 第一次转到 ipv4.method auto 时候。建议:当 NM_CONTROLLED=no 时,将网关写在 /etc/sysconfig/network(GATEWAY);当使用 NM 时候,使用 nmcli c 命令配置网关(比如nmcli c modify ethX ipv4.gateway 192.168.1.1)。

9. NM 默认会从 dhcp 里获取 dns 信息,并修改 /etc/resolv.conf,如果不想让 NM 管理 /etc/resolv.conf,则只需在 /etc/NetworkManager/NetworkManager.conf 里的 [main] 里增加 dns=none 即可。

10. 如果想让 NM 不要自动管理新网卡(比如不要给新网卡获取 ip 地址),则只需在 /etc/NetworkManager/NetworkManager.conf 里的 [main] 里增加 no-auto-default=* 即可,改完后通过 systemctl restart NetworkManager 或者重启系统来生效。除了手工在 NetworkManager.conf 里加配置,也可以yum install NetworkManager-config-server,这会生成 /usr/lib/NetworkManager/conf.d/00-server.conf,内容为如下截图。建议使用前者方案,因为后者的 ingore-carrier 是不被推荐的参数。

11. 更多 NetworkManager 参数详见 man NetworkManager.conf

12. nmtui 示意图:
基于 RHEL8/CentOS8 的网络 IP 配置详解

13. cockpit 示意图:
基于 RHEL8/CentOS8 的网络 IP 配置详解

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

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8236字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
8016105
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...