[实验] Chrony 客户端的设置 (时间同步)

注意:从 CentOS 7.2&RHEL 7.0 开始实现时间同步的程序默认从 NTP 换成了 Chrony 。 NTP 也可以继续使用,但是需要单独安装 NTP 的安装包

步骤目录:

步骤一:系统环境要求
步骤二:确保 Chrony 已经安装
步骤三:确保系统会使用 Chrony 或 NTP 的时间同步
步骤四:修改配置文件
步骤五:重启客户端的 Chrony 服务
步骤六:显示客户端时间同步的状态

具体的操作步骤:

步骤一:系统环境要求

1) 服务器的系统是 CentOS 8 版本
2) 服务器系统配置好可用的软件源

步骤二:确保 Chrony 已经安装


# yum -y install chrony

步骤三:确保系统会使用 Chrony 或 NTP 的时间同步

# timedatectl set-ntp true
# timedatectl
               Local time: Fri 2020-06-12 09:52:30 EDT
           Universal time: Fri 2020-06-12 13:52:30 UTC
                 RTC time: Fri 2020-06-12 13:51:52
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

(补充:此时 NTP service 的状态可能还不是 active 状态)

步骤四:修改配置文件

# vim /etc/chrony.conf

将部分内容修改如下:

......
pool 2.centos.pool.ntp.org iburst

(说明:在配置文件的开头添加要进行时间同步的服务器)

步骤五:重启客户端的 Chrony 服务

# systemctl restart chronyd
# systemctl status chronyd

步骤六:显示客户端时间同步的状态
6.1 通过 Chrony 命令显示

# chronyc sources -v
210 Number of sources = 4

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* time.rdg.uk.as44574.net       3   8   373   153    +73ms[  +68ms] +/-  233ms

(补充:当出现 ^* 时则代表时间同步成功)

或者:

# chronyc tracking

6.2 通过 timedatectl 命令显示

# timedatectl
               Local time: Fri 2020-06-12 09:52:30 EDT
           Universal time: Fri 2020-06-12 13:52:30 UTC
                 RTC time: Fri 2020-06-12 13:51:52
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

(补充:如果 Chrony 时间同步正常,则此时 Chrony service 的状态肯定是 active 状态)

[实验] VNC 远程桌面服务的搭建

纪念:站主于 2020 年 1 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

软件准备:

在 RealVNC 官网上下载使用 VNC 服务所需软件 VNC View:

https://www.realvnc.com/en/

正文:

步骤目录:

步骤一:规划拓扑
1.1 服务器列表
1.2 服务器列表简介

步骤二:系统环境要求

步骤三:服务端安装 VNC 服务
3.1 服务端 VNC 环境准备
3.1.1 在服务端上安装桌面
3.1.2 在服务端上创建用于使用 VNC 的用户
3.1.2.1 创建用户
3.1.2.2 修改用户密码
3.2 服务端安装 VNC 服务

步骤四:配置 VNC 服务
4.1 创建 VNC 服务进程文件
4.2 编辑 VNC 服务进程文件

步骤五:开机自启 VNC 服务
5.1 刷新所有服务进程文件
5.2 开机自启 VNC 服务

步骤六:启动 VNC 服务
6.1 切换到使用 VNC 的用户
6.2 开启 VNC 服务
6.3 补充:修改 VNC 登陆密码的方法

步骤七:确认 VNC 服务是否启动成功

步骤八:客户端使用 VNC 服务
8.1 客户端使用 VNC 服务的前期工作
8.1.1 在客户端上安装桌面
8.1.2 客户端安装 VNC 服务的客户端
8.1.3 客户端启动桌面
8.2 客户端使用 VNC 服务
8.2.1 客户端启动 VNC 服务的客户端
8.2.2 连接服务端的 VNC IP 地址和端口号
8.2.3 输入服务端 VNC 用户的 VNC 密码
8.2.4 VNC 服务成功

具体的操作步骤:

步骤一:规划拓扑
1.1 服务器列表

服务端 192.168.100.10
客户端 192.168.100.11

1.2 服务器列表简介

1) 服务器提供 VNC 服务让其他设备可以远程自己的桌面
2) 客户端通过 VNC 服务远程服务器的桌面

步骤二:系统环境要求

1) 所有服务器的系统都需要是 CentOS 7 版本
2) 所有服务器都要关闭防火墙
3) 所有服务器都要关闭 SELinux
4) 所有服务器系统都要配置好可用的软件源
5) 需要按照拓扑图给对应的服务器配置好 IP 地址和主机名
6) 所有服务器都要可以相互 ping 通自己和对方的 IP 地址和主机名

步骤三:服务端安装 VNC 服务
3.1 服务端 VNC 环境准备
3.1.1 在服务端上安装桌面

(只在服务端上执行以下步骤)

# yum -y groupinstall "Server with GUI"
# yum -y groupinstall "GNOME Desktop"

3.1.2 在服务端上创建用于使用 VNC 的用户
3.1.2.1 创建用户

(只在服务端上执行以下步骤)

# useradd zhumingyu

3.1.2.2 修改用户密码

(只在服务端上执行以下步骤)

# passwd zhumingyu

3.2 服务端安装 VNC 服务

(只在服务端上执行以下步骤)

# yum -y install tigervnc tigervnc-server

步骤四:配置 VNC 服务
4.1 创建 VNC 服务进程文件

(只在服务端上执行以下步骤)

# cp /lib/systemd/system/vncserver\@.service /lib/systemd/system/vncserver\@:1.service

4.2 编辑 VNC 服务进程文件

(只在服务端上执行以下步骤)

# vi /lib/systemd/system/vncserver\@:1.service

将其中的:

......
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

修改为:

......
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l zhumingyu -c "/usr/bin/vncserver %i"
PIDFile=/home/zhumingyu/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

步骤五:开机自启 VNC 服务
5.1 刷新所有服务进程文件

(只在服务端上执行以下步骤)

# systemctl daemon-reload

5.2 开机自启 VNC 服务

(只在服务端上执行以下步骤)

# systemctl enable vncserver@:1.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vncserver@:1.service to /usr/lib/systemd/system/vncserver@:1.service.

步骤六:启动 VNC 服务
6.1 切换到使用 VNC 的用户

(只在服务端上执行以下步骤)

# su - zhumingyu

6.2 开启 VNC 服务

(只在服务端上执行以下步骤)

$ vncserver :1

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Verify:

New 'vnc:1 (zhumingyu)' desktop is vnc:1

Creating default startup script /home/zhumingyu/.vnc/xstartup
Creating default config /home/zhumingyu/.vnc/config
Starting applications specified in /home/zhumingyu/.vnc/xstartup
Log file is /home/zhumingyu/.vnc/vnc:1.log

6.3 补充:修改 VNC 登陆密码的方法

# su - zhumingyu
$ vncpasswd

步骤七:确认 VNC 服务是否启动成功

(只在服务端上执行以下步骤)

$ ss -ntulap | grep 5901
tcp    LISTEN     0      5         *:5901                  *:*                   users:(("Xvnc",pid=1152,fd=9))
tcp    LISTEN     0      5      [::]:5901               [::]:*                   users:(("Xvnc",pid=1152,fd=10))

步骤八:客户端使用 VNC 服务
8.1 客户端使用 VNC 服务的前期工作
8.1.1 在客户端上安装桌面

(只在客户端上执行以下步骤)

# yum -y groupinstall "Server with GUI"
# yum -y groupinstall "GNOME Desktop"

8.1.2 客户端安装 VNC 服务的客户端

(只在客户端上执行以下步骤)

# yum -y localinstall VNC-Viewer-6.19.1115-Linux-x64.rpm

(补充:这里以安装 VNC-Viewer-6.19.1115-Linux-x64.rpm 为例)

8.1.3 客户端启动桌面

(只在客户端上执行以下步骤)

# startx
(图:1)

8.2 客户端使用 VNC 服务
8.2.1 客户端启动 VNC 服务的客户端

(只在客户端上执行以下步骤)

(图:2)
(图:3)
(图:4)

8.2.2 连接服务端的 VNC IP 地址和端口号

(只在客户端上执行以下步骤)

(图:5)
(图:6)

8.2.3 输入服务端 VNC 用户的 VNC 密码

(只在客户端上执行以下步骤)

(图:7)

8.2.4 VNC 服务成功

(只在客户端上执行以下步骤)

(图:8)

[工具] Shell 批量检测域名的 DNS 解析是否正确

介绍:

作者:朱明宇
名称:批量检测域名的 DNS 解析是否正确
作用:批量检测域名的 DNS 解析是否正确

使用方法:
1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量:
1. main_domain=eternalcenter.com #此处填写网站的“主域名”,网站一般会有几个域名,其中“主域名”直接指向 ip 地址,其他的域名都指向主域名
2. ip=192.154.240.64 #域名指向的 ip 地址
3. nginx=1.16.0 #web 程序的对应版本的版本
4. content1=”eteranlcenter” # 随即填写一个具有代表性的网站首页的内容
5. content2=”Mingyu” # 随即填写一个具有代表性的网站首页的内容,但是要和前面的 content1 在同一行
6. domain=”eternalcenter.com eternalcentre.com zhumingyu.com mingyuzhu.com eternalcenter.org eternalcentre.org” #需要检测的域名

脚本:

#!/bin/bash

####################### Separator ########################

main_domain=eternalcenter.com
ip=144.48.142.148
nginx=1.16.0
content1="eternalcenter"
content2="Mingyu"
domain="eternalcenter.com eternalcentre.com zhumingyu.com mingyuzhu.com eternalcenter.org eternalcentre.org"

####################### Separator ########################

check_domain_name(){
if [ $1 == $main_domain ];then
	
	ping -c4 -i0.4 $1 | grep $ip &> /dev/null
	if [ $? -ne 0 ];then
		echo -e "\033[31m $1 is error !!!!! ip is error !!!!! \033[0m"
	else
		curl $1 | grep $nginx &> /dev/null
		if [ $? -ne 0 ];then
			echo -e "\033[31m $1 is error !!!!! software is error !!!!! \033[0m"
		else	
			elinks $1 | grep "$content1" | grep "$content2" &> /dev/null
			if [ $? -ne 0 ];then
				echo -e "\033[31m $1 is error !!!!! web is error !!!!! \033[0m"
			else
				echo -e "\033[32m $1 is ok \033[0m"
			fi
		fi
		
	fi
else
	elinks $1 | grep "$content1" | grep "$content2" &> /dev/null
	if [ $? -ne 0 ];then
		echo -e "\033[31m $1 is error !!!!! web is error !!!!! \033[0m"
	else
		echo -e "\033[32m $1 is ok \033[0m"
	fi


fi
}

for i in $domain
do
	check_domain_name $i
done

[步骤] Linux 时间同步的设置 (通过 NTP 实现)

注意:从 CentOS 7.2&RHEL 7.0 开始实现时间同步的程序默认从 NTP 换成了 Chrony 。 NTP 也可以继续使用,但是需要单独安装 NTP 的安装包。

步骤一:系统环境要求

服务器系统要配置好可用的软件源

步骤二:确保 NTP 已经安装

# yum -y install ntp

步骤三:确保系统会使用 Chrony 或 NTP 的时间同步

# timedatectl set-ntp true
# timedatectl
               Local time: Fri 2020-06-12 09:52:30 EDT
           Universal time: Fri 2020-06-12 13:52:30 UTC
                 RTC time: Fri 2020-06-12 13:51:52
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

(补充:此时 NTP service 的状态可能还不是 active 状态)

步骤四:修改配置文件

# vim /etc/sysconfig/ntp

将部分内容修改如下:

......
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

(说明:在配置文件的末尾添加要进行时间同步的服务器)

步骤五:重启客户端的 NTP 服务

# service ntpd restart

步骤六:显示客户端时间同步的状态
6.1 通过 NTP 命令显示

# ntpq -p


补充:
1) 此命令可能会显示多行,每一行显示一个时钟源的状态
2) 最左边有一个星号 “*” 的行代表目前正在被使用的时钟源,这代表这个时钟源可以被使用且最精确

6.2 通过 timedatectl 命令显示

# timedatectl
               Local time: Fri 2020-06-12 09:52:30 EDT
           Universal time: Fri 2020-06-12 13:52:30 UTC
                 RTC time: Fri 2020-06-12 13:51:52
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

(补充:如果 NTP 时间同步正常,则此时 NTP service 的状态肯定是 active 状态)

[步骤] Red Hat Satellite 客户端设置 (软件源)

步骤一:软件源所对应的系统版本设置
1.1 显示客户端服务器现在正在使用的软件源库所对应的系统版本

(只在 client servers 上执行以下步骤)

# subscription-manager release --show

1.2 显示客户端服务器所有可以使用的软件源所对应的系统版本

(只在 client servers 上执行以下步骤)

# subscription-manager release –-list

步骤二:修改客户端服务器的软件源对应的系统版本
2.1 修改对应系统版本的格式

(只在 client servers 上执行以下步骤)

# subscription-manager release --set=<system version number>

2.2 修改对应系统版本的案例

(只在 client servers 上执行以下步骤)

# subscription-manager release -–set=7.5 

(补充:这里的 7.5 是 1 个系统的版本号)

(注意:这里如果低版本的系统选择了高版本的软件源库,则在更新软件的过程中可能会直接升级系统)

步骤三:在选择了 1 个系统版本之后选择里面的软件源
3.1 显示软件源
3.1.1 显示客户端服务器目前正在使用的软件源

(只在 client servers 上执行以下步骤)

# subscription-manager repos --list-enable

3.1.2 显示客户端服务器所有可以用的软件源和正在使用的软件源

(只在 client servers 上执行以下步骤)

# subscription-manager repos --list

3.2 让客户端服务器启用 1 个软件源
3.2.1 启用 1 个软件源的格式

(只在 client servers 上执行以下步骤)

# subscription-manager repos --enable=<software source name>

3.2.2 启用 1 个软件源的案例

(只在 client servers 上执行以下步骤)

# subscription-manager repos --enable=rhel-7-server-satellite-tools-6.3-rpms

(补充:这里以启动 rhel-7-server-satellite-tools-6.3-rpms 软件源为例)

3.3 让客户端服务器禁用 1 个软件源
3.3.1 禁用 1 个软件源的格式

(只在 client servers 上执行以下步骤)

# subscription-manager repos --disable=<software source name>

3.3.2 禁用 1 个软件源的案例

(只在 client servers 上执行以下步骤)

# subscription-manager repos –disable=rhel-7-server-satellite-tools-6.2-rpms

(补充:这里以禁止 rhel-7-server-satellite-tools-6.3-rpms 软件源为例)

3.4 让客户端服务器同时启用或禁用 1 个或多个软件源

# subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms;subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms;subscription-manager repos --disable=satellite-tools-6.10-for-rhel-8-x86_64-rpms

(补充:这里以启动 rhel-8-for-x86_64-baseos-rpms;subscription-manager 软件源和 rhel-8-for-x86_64-appstream-rpms;subscription-manager 软件源,禁用 satellite-tools-6.10-for-rhel-8-x86_64-rpms 软件源为例)

3.5 刷新所有的设置

# subscription-manager refresh