RHEL10注册订阅
安装好 RHEL 10.1 后,先不要急着敲命令或安装软件。由于RHEL采用订阅制,软件安装与系统更新都依赖官方仓库,未注册订阅前通常无法正常使用dnf获取软件包,因此首次登录后最先要做的就是激活订阅并完成基础更新。
登录进系统,桌面按键盘win键或点击左上角的红帽logo,启动终端
需要注意的是,注册订阅和更新系统都必须使用
root权限;如果当前登录的是普通用户,请先切换到root,或者在命令前加sudo
RHEL10中,
subscription-manager彻底移除了attach这个模块及相关参数, 不需要再做任何附加(attach)操作。
su - # 切换到 root 用户;输入 root 密码后,提示符变为 # 表示已进入管理员环境
在控制台执行以下命令,使用你的红帽开发者账号将系统注册:
subscription-manager register --username <红帽账号> --password <密码>
注册完成后,养成习惯,检查一下订阅状态是否真正生效:
subscription-manager status
只要状态显示为 已注册,就可以执行第一次系统更新,确保基础组件达到最新状态:
dnf update -y
RHEL 10配置网络
主要有三种方式配置网络,最简单的就是在桌面设置里面配置,但在服务器环境都是通过命令行来管理,这里就对相对复杂的命令行通过nmcli命令和配置文件的方式配置网络。
从 RHEL 8 开始,系统默认由 NetworkManager 统一管理网络;到了 RHEL 10,传统的 ifcfg-* 方式已经被淘汰。
当前 RHEL 10 默认的网络配置文件存放在
/etc/NetworkManager/system-connections/目录下,文件格式变成了 INI 风格的.nmconnection。了解这个底层机制的变化后,我们就可以通过这两种方式来配置网络:使用nmcli命令行交互,或者直接修改底层配置文件。
nmcli 命令配置网络
开始之前,先分清两个核心概念,否则容易把参数写错:
- 设备(device):指网卡硬件本身,比如
ens160。 - 连接(connection):指套用在这块网卡上的配置方案,包含 IP、网关等信息。
很多时候连接名和设备名刚好都叫同一个名字,比如ens160,但修改网络时,我们本质上是在修改 connection。
查看网络状态
首先查看一下当前系统网卡的 IP 状态:
root@RHEL:~# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.10 netmask 255.255.255.0 broadcast 172.16.0.255
inet6 fe80::20c:29ff:fe66:7d6d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:66:7d:6d txqueuelen 1000 (Ethernet)
RX packets 963804 bytes 1447901368 (1.3 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 91978 bytes 5447691 (5.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
...
可以看见当前系统有两张网卡,一张是我们虚拟机添加的”物理网卡”ens160,一张是本地环回虚拟网卡lo(用于本机内部通信,通常不需要去管它)。
- ens160:网卡接口名称,一般来说用于业务流量的物理网卡都是
ens、enp开头。 - UP, RUNNING:表示这块网卡当前处于启用且正在运行的状态。
- inet 172.16.0.10:这是网卡当前使用的IPv4地址,
netmask是子网掩码255.255.255.0 前缀/24。 - inet6 … scopeid 0x20:这是 IPv6 的本地链路地址,通常以
fe80::开头。 - ether 00:0c:29:66:7d:6d:这是网卡的物理 MAC 地址。
- RX/TX packets:分别表示网卡已接收(RX)和已发送(TX)的数据包数量及流量大小,这可以用来快速判断网卡是否有实际的数据收发动作。
确认了当前的 IP 后,我们再查看一下当前物理网卡在NetworkManager中的硬件状态
(#后是执行的命令)
主要关注 DEVICE(网卡名)和 CONNECTION(当前正在使用的连接名)这两列。只有当网卡 STATE 为 已连接 时,说明它已经绑定了一个连接方案。
root@RHEL:~# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet 已连接 ens160
lo loopback 连接(外部) lo
接着查看当前已有的连接配置,当前网卡和连接名称均为 ens160
这里列出的是系统里存好的配置方案。确认好这里的 NAME 列,后面的修改命令全都要针对这个 NAME 来操作。
root@RHEL:~# nmcli connection show
NAME UUID TYPE DEVICE
ens160 a20596a9-215f-3835-8189-200e617603f9 ethernet ens160
lo 1cb84265-5457-443b-9d2f-692a2442c7ab loopback lo
要查看更详细的输出,后面跟上具体的连接名,执行命令后要退出查看模式使用快捷键:CTRL+C,此快捷键的作用是中断当前正在运行的命令。输出中可以找到当前地址的配置方式是manual静态模式的。
root@RHEL:~# nmcli connection show ens160
connection.id: ens160
connection.uuid: a20596a9-215f-3835-8189-200e617603f9
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens160
...
ipv4.method: manual #静态模式
ipv4.dns: 172.16.0.2,223.5.5.5 #主备两个dns地址
ipv4.dns-search: --
ipv4.dns-options: --
ipv4.dns-priority: 0
ipv4.addresses: 172.16.0.10/24 #IPv4地址
ipv4.gateway: 172.16.0.2 #网关地址
...
GENERAL.MASTER-PATH: --
IP4.ADDRESS[1]: 172.16.0.10/24
IP4.GATEWAY: 172.16.0.2
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 172.16.0.2, mt = 100
IP4.ROUTE[2]: dst = 172.16.0.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 172.16.0.2
IP4.DNS[2]: 223.5.5.5
IP6.ADDRESS[1]: fe80::20c:29ff:fe66:7d6d/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024
配置DHCP
当前网卡是静态IP,那么我们先修改为DHCP,使用命令修改IPv4的获取方法改成 auto,并清理手动配置的IPv4信息。
nmcli connection modify ens160 ipv4.method auto
modify ens160:指定修改名为ens160的连接配置。ipv4.method auto:设置获取方式为自动。既然是自动获取,系统就会向 DHCP 服务器请求 IP、网关和 DNS。
但是你之前如我一样配置过静态IP,那么只使用下面这条命令,将旧配置清空不然会有逻辑错误,导致DHCP不生效。
nmcli connection modify ens160 ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
修改完成后,配置不会立刻应用到网卡上,必须执行以下命令重启该连接让其立即生效:
nmcli connection up ens160
生效后,通过以下命令验证网卡是否成功拿到了动态 IP:
ip addr show ens160
在输出信息中寻找带有 inet 字样的一行,后面跟着的就是DHCP服务器自动分配的IP地址和掩码,可以从下方输出看见我这里是172.16.0.128/24,之前是172.16.0.10/24。如果有这行且地址正常,说明DHCP配置成功。
root@RHEL:~# nmcli connection modify ens160 ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
root@RHEL:~# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)
root@RHEL:~# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:66:7d:6d brd ff:ff:ff:ff:ff:ff
altname enp3s0
altname enx000c29667d6d
inet 172.16.0.128/24 brd 172.16.0.255 scope global dynamic noprefixroute ens160
valid_lft 1793sec preferred_lft 1793sec
inet6 fe80::20c:29ff:fe66:7d6d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
配置静态 IPv4 地址
大多数生产环境中的服务器都使用固定IP。
以我这里的VMware NAT网络为例,网段为 172.16.0.0/24,网关为 172.16.0.2。
在开始配置之前,你需要检查自己VMware虚拟网卡的网段信息,而不是复制粘贴命令,这样才能通过NAT正常访问网络。
前面我们已经将网卡改成了通过DHCP自动获取 IP,现在再把它切换为静态配置。
这里将网卡地址设置为 172.16.0.10/24,默认网关172.16.0.2,DNS为172.16.0.2,223.5.5.5。
一条命令即可完成属性的修改:
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 172.16.0.10/24 ipv4.gateway 172.16.0.2 ipv4.dns 172.16.0.2,223.5.5.5
ipv4.method manual:把模式改成manual(手动),需要先指定method否则后面的静态地址不会生效。ipv4.addresses .../24:设置IP和子网掩码长度。ipv4.gateway:默认网关。ipv4.dns:配置DNS,不配的话只能ping通IP,无法解析域名。
完了后同样需要重启连接让配置生效。生效后使用命令检查IP和路由:
nmcli connection up ens160
ip addr show ens160
ip route #查看当前路由信息
root@RHEL:~# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 172.16.0.10/24 ipv4.gateway 172.16.0.2 ipv4.dns 172.16.0.2,223.5.5.5
root@RHEL:~# nmcli connection
add delete edit help load modify reload up
clone down export import migrate monitor show
root@RHEL:~# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/10)
root@RHEL:~# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:66:7d:6d brd ff:ff:ff:ff:ff:ff
altname enp3s0
altname enx000c29667d6d
inet 172.16.0.10/24 brd 172.16.0.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe66:7d6d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
root@RHEL:~# ip route
default via 172.16.0.2 dev ens160 proto static metric 100
172.16.0.0/24 dev ens160 proto kernel scope link src 172.16.0.10 metric 100
- 检查
inet字段是否是刚才设置的静态IP。 - 查看路由时,输出中有一行以
default via 172.16.0.2开头。default代表默认路由,这说明当前网络的流量是通过这个网关转发访问外网。
配置IPv6
在IPv6环境,操作逻辑与IPv4其实是一样的,只是命令有些不同。例如配置一个静态v6地址及网关(这里地址为示例):
nmcli connection modify ens160 ipv6.method manual ipv6.addresses 2001:8888:1::10/64 ipv6.gateway 2001:8888:1::1 ipv6.dns 2402:4e00::
同样,执行命令让配置生效。生效后,检查v6的地址和路由:
nmcli connection up ens160
ip -6 addr show ens160
ip -6 route
root@RHEL:~# nmcli connection modify ens160 ipv6.method manual ipv6.addresses 2001:8888:1::10/64 ipv6.gateway 2001:8888:1::1 ipv6.dns 2402:4e00::
root@RHEL:~# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/11)
root@RHEL:~# ip -6 addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
altname enp3s0
altname enx000c29667d6d
inet6 2001:8888:1::10/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe66:7d6d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
root@RHEL:~# ip -6 route
2001:8888:1::/64 dev ens160 proto kernel metric 100 pref medium
fe80::/64 dev ens160 proto kernel metric 1024 pref medium
default via 2001:8888:1::1 dev ens160 proto static metric 100 pref medium
修改配置文件配置网络
除了使用 nmcli 命令,对于在进行自动化部署时,直接修改配置文件也是一种做法。
前面提到,RHEL 10的网络配置文件存放在 /etc/NetworkManager/system-connections/ 目录下。我们直接使用 vim 编辑对应的网卡配置文件:
vim /etc/NetworkManager/system-connections/ens160.nmconnection
vim编辑工具基本使用:
- 打开文件后,按键盘上的字母
i键,底部出现-- INSERT --时即进入插入模式,此时可修改文本。- 修改完成后,按
Esc键退出插入模式。- 输入
:wq并按回车键,即可保存文件并退出。如果改错了不想保存,可以输入:q!强制退出。
配置DHCP
在打开的文件中找到 [ipv4] 模块。配置DHCP只需要保留 method=auto,其余静态地址相关的行全部删除/注释:
[ipv4]
method=auto
配置静态IP
[ipv4] 模块的写法如下,如果要配置多个IP地址只需要按数字顺序递增 address 的后缀即可,网关只写一个:
[ipv4]
method=manual
address1=172.16.0.10/24,172.16.0.254
address2=172.16.0.20/24
dns=223.5.5.5;
INI 语法:
- 与旧版的
ifcfg不同,Keyfile 格式将 IP、掩码和网关合并在了一起。address1=后面的格式是IP地址/掩码前缀,网关地址,中间用英文逗号隔开;网关可以单独写一行。 dns=后面写DNS服务器地址,如果有多个可以用分号隔开,并且整行必须以分号;结尾。- 要配置 IPv6,则是在文件中的
[ipv6]模块下添加对应的address1和method=manual,语法规则相同。
重载并激活
修改完文本并保存退出后,NetworkManager守护进程默认是不知道文件被改动了的。
按照顺序先执行 reload 命令让服务重新读取磁盘上的文件,然后再拉起连接,否则改的配置不会生效:
nmcli connection reload
nmcli connection up ens160
root@RHEL:~# vi /etc/NetworkManager/system-connections/ens160.nmconnection
root@RHEL:~# nmcli connection reload
root@RHEL:~# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/16)
root@RHEL:~# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:66:7d:6d brd ff:ff:ff:ff:ff:ff
altname enp3s0
altname enx000c29667d6d
inet 172.16.0.128/24 brd 172.16.0.255 scope global dynamic noprefixroute ens160
valid_lft 1792sec preferred_lft 1792sec
inet6 fe80::20c:29ff:fe66:7d6d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
网络连通性测试
网络配置完成后,通过 ping 命令可以验证网络连通状态。
与 Windows 不同,在Linux下直接执行 ping 命令会一直发送探测数据包,直到按下 Ctrl + C 中断。为了避免一直刷屏,我们在实际排错时通常会带上 -c 参数,用来精确指定发送数据包的次数,注意不要少掉空格。
首先,ping网关,可以验证物理链路和内网配置是否正确。
输出中可以看见没有超时,并且回复产生了统计数据,发了4个包全都收到了,说明网络可达。
root@RHEL:~# ping -c 4 172.16.0.2
PING 172.16.0.2 (172.16.0.2) 56(84) 字节的数据。
64 字节,来自 172.16.0.2: icmp_seq=1 ttl=128 时间=0.194 毫秒
64 字节,来自 172.16.0.2: icmp_seq=2 ttl=128 时间=0.119 毫秒
64 字节,来自 172.16.0.2: icmp_seq=3 ttl=128 时间=0.226 毫秒
64 字节,来自 172.16.0.2: icmp_seq=4 ttl=128 时间=0.273 毫秒
--- 172.16.0.2 ping 统计 ---
已发送 4 个包, 已接收 4 个包, 0% packet loss, time 3062ms
rtt min/avg/max/mdev = 0.119/0.203/0.273/0.056 ms
测试域名连通性,ping域名可以检测路由是否正常转发外网,以及配置的DNS是否生效。
可以看见ping这个域名解析成了IP地址,并且收到了对方服务器应答。
root@RHEL:~# ping -c 4 www.sitetalk.net
PING www.sitetalk.net.a1.initxb.com (101.200.115.63) 56(84) 字节的数据。
64 字节,来自 101.200.115.63: icmp_seq=1 ttl=128 时间=47.9 毫秒
64 字节,来自 101.200.115.63: icmp_seq=2 ttl=128 时间=62.0 毫秒
64 字节,来自 101.200.115.63: icmp_seq=3 ttl=128 时间=59.8 毫秒
64 字节,来自 101.200.115.63: icmp_seq=4 ttl=128 时间=51.9 毫秒
--- www.sitetalk.net.a1.initxb.com ping 统计 ---
已发送 4 个包, 已接收 4 个包, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 47.881/55.393/61.984/5.723 ms
SSH 远程连接
实际的系统运维中,绝大多数操作都是通过SSH进行远程管理。回到宿主机,打开MobaXterm、Windterm等终端工具,或者打开CMD通过刚才配置好的静态IP远程连接到这台RHEL服务器:
ssh root@172.16.0.10
首次连接,系统会弹出密钥指纹提示,这是正常的安全确认机制。直接输入 yes 并回车,接着输入 root 密码即可登录系统。




