介绍安装Rocky Linux之后,需要做的初期设定。下载及安装Rocky Linux的方法参照下面的URL。

主机名

介绍Rocky Linux上修改主机名的方法。修改主机名需要掌握查看当前主机名及修改主机名的命令。

确认当前主机名

Linux主机名等于Windows的设备名称(PC名),查看当前主机名执行 hostname 命令。hostname命令显示的是 /etc/hostname文件的内容。

hostname以外可以使用 hostnamectl status命令及 uname -a命令查看当前的主机名。

hostname命令 “-s” 选项显示主机名的short name(既去掉域名后的命令)。

hostname命令 “-f” 选项显示主机名的FQDN,Rocky Linux默认主机名的FQDN与主机名一致。

永久的修改主机名有几种方法,推荐掌握 hostnamectl 命令修改的方法

修改/etc/hostname文件

使用自己喜欢的文本编辑器(vi,vim等)修改 /etc/hostname 文件,修改文件。在这里将 /etc/hostname 文件的内容修改为 sys-blog.localdomain。

hostnamectl status命令查看主机名的结果如下。

man hostnamectl
~ 省略 ~
–static, –transient, –pretty
If status is invoked (or no explicit command is given) and
one of these switches is specified, hostnamectl will print
out just this selected hostname.

If used with set-hostname, only the selected hostname(s)
will be updated. When more than one of these switches are
specified, all the specified hostnames will be updated.
~ 省略 ~

hostnamectl命令

使用hostname命令的set-hostname选项修改主机名,执行 hostnamectl set-hostname sys-blog.local将主机名设定为 sys-blog.local。

nmcli命令

使用nmcli命令修改主机名时,/etc/hostname文件的内容也将会被更新。

nmtui命令

nmtui命令修改主机名时,/etc/hostname文件的内容同nmcli一样将会被更新。执行 nmcli 命令启动网络管理器。

显示如下页面,选择 “设置系统主机名” 后,输入 Enter。

将主机名设定为sys-blog.local后,选择”确定”后输入Enter。

输入Enter。

选择”退出”后输入Enter。

hostname命令查看修改后的主机名及/etc/hostname文件内容。

系统时区

介绍Rocky Linux上查看当前系统时区及使用timedatectl命令修改系统时区的方法。

查看当前的系统时区

首先查看当前的系统时区,确认系统时区执行 date 命令。

也可以使用timedatectl status命令查看当前的系统时区,执行结果如下。

修改系统时区

timedatectl命令 指定”set-timezone”选项可修改系统时区,将时区设定为 “Asia/Shanghai”时,执行 “timedatectl set-timezone Asia/Shanghai”命令

date命令及timedatectl status命令的执行结果可以确认到系统时区从 “America/New_York(EST)” 更新为”Asia/Shanghai(CST)”

时间同步

介绍在Rocky Linux上使用chrony服务与外部NTP服务器进行时间同步的方法。NTP(NetworkTimeProtocol)的标准端口为123(UDP)。

时间同步(NTP)是使整个系统正常工作的一个基本功能。假设软件(例如PostgreSQL等数据库)的正常运行基于系统时间的正确性,如果系统时间不正确,系统将会无法正常运行。时间同步非常重要,系统工程师需要掌握NTP的工作原理

Rocky Linux上采用的chrony是实现NTP客户端与NTP服务器端软件。采用与ntpd不同的时间同步算法,提供更有效和准确的时间同步。详细信息参照
https://chrony.tuxfamily.org/

chronyd与ntpd

目前推荐使用chronyd,大部分操作系统也会默认安装chronyd。

  • NTP的版本不同
    chronyd为NTP版本3(RFC 1305),ntpd为版本4(RFC 5905)。
  • 硬件时钟的同步
    chronyd可与硬件时钟进行同步,而ntpd无法与硬件时间同步。

  • slew模式与slew rate
    ntpd与chronyd同样有2个运行模式,step模式和slew模式。(chronyd的默认模式为step模式)
    ntpd的slew rate为500(msec/sec)的固定rate,而chronyd的slew rate(默认83333.333(msec/sec))可进行变更。

  • 使用端口
    ntpd使用端口123是固定的,而chronyd可以修改默认端口123。

安装chrony

Rocky Linux默认已安装chrony服务,如果没有安装的话,使用dnf命令进行安装。

首先rpm -qa | grep chrony命令确认chrony是否安装,下面的结果是已安装chrony。

如果没有安装chrony执行 dnf install chrony 命令进行安装。

# dnf install chrony

/etc/chrony.conf文件

/etc/chrony.conf是chrony的配置文件,chrony.conf的默认设定如下。

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.pool.ntp.org iburst

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16

# Serve time even if not synchronized to a time source.
#local stratum 10

# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys

# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking

如下修改/etc/chrony.conf文件的内容。

# vi /etc/chrony.conf
pool ntp.aliyun.com iburst
pool ntp1.aliyun.com iburst
driftfile /var/lib/chrony/drift
#makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
leapsecmode slew
maxslewrate 1000
smoothtime 400 0.001024 leaponly
  • pool
    指定时间同步的NTP服务器,chrony的默认设定指定了外部的NTP服务器,不进行修改也能正常运行。企业内部通常会搭建DNS服务器,当NDS解析器(DNS Resolver)使用。近年来DNS使用DNSSEC(使用SSL)的企业越来越多,这就要求DNS服务器自身的时间必须是正确的(使用SSL的原因)。外部的NTP服务器通常会指定FQDN,假设因时间未同步导致DNS解析失败,进一步导致整个系统的时间同步失败。可以的话,NTP推荐指定IP地址而非FQDN。

    外部的NTP服务器在这里指定阿里云对外公开的NTP服务 阿里云NTP服务器

    iburst(Initial Burst)是chrony启动时,将在短时间内向NTP服务器连续进行4次查询,收集尽可能多的样本用于统计信息。

  • driftfile
    全路径的形式指定driftfile,drift是评估硬件时钟存在的固有偏差,并自动对此进行修补

  • makestep
    chrony启动后,如果在前3次的查询种检测到与NTP服务器的时间差异在1秒以上,运行于STEP模式,立即纠正时间。上述以外会运行于SLEW模式渐进式进行时间纠正。当运行PostgreSQL/Oracle等数据库时需要注意,STEP模式下立即纠正时间(服务器的时间为10:00,NTP时间为09:55,服务器时间将会被同步到09:55)可能会导致数据库无法正常运行。在这里注释makestep。

  • rtcsync
    RTC将会每隔11分钟更新real-time clock(硬件时钟),推荐设定。

  • keyfile
    NTP版本3以后可用的用于NTP认证的秘钥文件,NTP认证时由客户端向服务器端进行。

  • leapsecmode
    关于闰秒的设定,chrony的推荐值。

  • logdir
    指定保存NTP日志的目录。

  • maxslewrate
    与leapsecmode一样。

  • leapsecmode
    与leapsecmode一样。

chronyd服务

systemctl命令重启chronyd服务,执行 systemctl restart chronyd 命令。

确认chronyd服务是否设定为开机自动启动,执行 systemctl is-enabled chronyd 命令,如下图显示 enabled 为已设定为开机自动启动。

如果没有被设定为开机自动启动,执行 systemctl enable chronyd 命令设定为开机自动启动

chrony相关命令

chronyc sources命令,显示与NTP服务器的时间同步状态

chronyc sources命令是替代ntpd的 nptq -p 命令。

MS列的第一个M列的 ^ 表示NTP服务器,第二个S列的 * 表示现在正在进行同步的NTP服务器+ 表示同步备选NTP服务器– 表示非备选NTP服务器。通过以上信息可确认到当前的时间同步情况。输出了关于自身状态的信息。

chronyc sources命令可查看与NTP服务器的时间同步状态,而”chronyc tracking”可跟踪服务器自身的状态。”chronyc tracking”执行结果如下,

手动执行时间同步

chrony设定为slew模式,但是有可以强制与系统时钟进行同步(step模式)。执行 chronyc -a makestep 命令。

轮询(polling)间隔

默认的轮询间隔为minpoll 6,maxpoll 10,与NTP一样这个值为 2n,既minpool为64秒,maxpoll为1024秒。

通过修改/etc/chrony.conf文件修改轮询间隔,如果修改默认设定的话,为了保持时间精度,推荐设定比默认的值更小的值。

server <NTP server address> minpoll 5 maxpoll 9

交换分区(swap)

Rocky Linux中创建交换分区使用mkswap命令,为了实际使用创建的交换分区使用swapon命令,而停止使用交换分区使用swapoff命令。
创建交换分区(swap)的方法有2种方法,创建swap文件的方法及整个分区为swap的方法。在这里介绍使用swap文件的创建方法。

确认当前交换分区

free命令确认服务器的swap(交换分区)的设定内容,执行 free -tm 命令。

可确认到当前的交换分区容量为 4031MB。

创建交换分区(文件)

使用dd命令创建 2GiB 的 /swapfile 交换分区文件,执行 dd if=/dev/zero of=/swapfile bs=1M count=2048 命令后,将/swapfile的权限设定为 0600 。

dd命令的格式如下。

# dd if=/dev/zero of=指定文件名 bs=BlockSize(默认为byte) count=Block数

dd命令以bs指定的Block大小和count指定的次数为单位,将if指定的文件复制到of指定的文件。

文件容量 = bs(BlockSize) x count(次数)

if指定了/dev/zero,因此在of指定的/swapfile的内容由0填充。Linux上最多可创建32个交换分区

创建交换分区

创建交换分区使用mkswap命令,可以指定磁盘partition或者指定文件创建交换分区。

指定在上一步创建的交换分区用文件 /swapfile 创建叫交换分区,执行 mkswap /swapfile 命令。

mkswap命令的格式如下。

mkswap [选项] device/swapfile

(device/swapfile = 磁盘partition/交换分区用文件)

选项 说明
-c 创建交换分区之前,对磁盘的block进行确认。当发现有缺陷的block时,显示缺陷block的数量。
-L label 指定label,在进行swapon时使用该label。

激活交换分区

mkswap创建交换分区之后,使用swapon命令激活交换分区。执行 swapon /swapfile命令。

swapon命令的格式如下。

swapon [选项] device/swapfile
选项     说明
-a 激活在 /etc/fstab 文件的第3列的值为 swap 的所有device。(除去指定noauto选项的device)
-s 显示交换分区使用情况。

禁用交换分区

将交换分区无效,使用swapoff命令。先使用swapon -s命令确认交换分区使用情况后,swapoff /swapfile 命令无效指定交换分区。

swapoff命令格式如下。

swapoff [选项] device/swapfile
选项 说明
-a 将/proc/swaps,/etc/fstab中的所有磁盘及文件的交换分区无效。

自动挂载交换分区

创建的交换分区,需要在系统启动时自动激活时,修改/etc/fstab文件。进行修改之前,以防万一备份/etc/fstab文件

# vi /etc/fstab
/swapfile  swap   swap    defaults   0 0
选项 说明
第1列 指定挂载对象Device名(UUID,label,Device名,文件名)。这次指定交换分区文件名
第2列 指定挂载到文件系统的位置。指定为交换分区时,输入swap
第3列 指定文件系统的格式(ext4,xfs等)。指定为交换分区时,输入swap
第4列 挂载到文件系统时的选项
第5列 文件系统是否为dump命令的对象。0是对象外,1是对象
第6列 启动系统时是否执行fsck,确认文件系统的完整性。root文件系统通常指定1,其他的文件系统指定2。指定0时该文件系统是fsck的对象外。

禁用SELinux

SELinux是非常强大的安全相关工具,强大到了无法驾驭的层度,因此一般会禁用SELinux。因为Rocky Linux的默认状态是启用了该服务,需要手动禁用该服务。

执行 getenforce 命令确认当前的设定。

# getenforce
Enforcing

使用文本编辑器打开 /etc/selinux/config 文件之后,将SELINUX参数设定为 disabled。

SELINUX=disabled

SELINUX参数可设定为如下3个值。

  • Enforcing: 强制执行安全策略
  • permissive: 仅显示警告信息,不执行安全策略。
  • disabled: 完全禁用 SELinux

重启系统后,再次执行 getenforce 命令确认已禁用SELinux。

# getenforce
Disabled

禁用Firewalld

Rocky Linux默认状态是开启了Firewalld服务,在这里禁用Firewalld。在Cloud上一般使用云厂商提供的安全组(AWS:SecurityGroup,Azure:NetworkSecurityGroup等),而在数据中心的话使用物理防火墙进行访问控制或者3层交换机的路由表上进行路由控制等,目前使用系统级别的防火墙的场景较少。

使用 systemctl status firewalld 命令确认当前的firewalld的状态。

● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-01-20 06:58:08 CST; 7min ago
       Docs: man:firewalld(1)
   Main PID: 872 (firewalld)
      Tasks: 2 (limit: 10685)
     Memory: 42.7M
        CPU: 1.022s
     CGroup: /system.slice/firewalld.service
             └─872 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

Jan 20 06:58:07 dns001.sys-blog.local systemd[1]: Starting firewalld - dynamic firewall daemon...
Jan 20 06:58:08 dns001.sys-blog.local systemd[1]: Started firewalld - dynamic firewall daemon.

Active: active (running)表示firewalld处于工作状态。接下来停止firewalld服务并禁用开机自动启动。

# systemctl stop firewalld
# systemctl disable firewalld

执行 systemctl is-enabled firewalld 确认开机自动启动的状态。如下显示为 disabled 的话,表示已禁用开机自动启动。

disabled

介绍了安装Rocky Linux后,需要的初期设定。