云计算百科
云计算领域专业知识百科平台

运维高频故障解决手册:日志定位异常、统一服务器时间、网络配置排错实操

文章目录

  • 引言
  • Linux 日志管理
    • rsyslog 日志配置
      • rsyslog 服务配置
        • 配置文件位置
        • 日志记录规则
        • 配置文件内容
      • 查看日志内容
      • 自定义日志记录规则
      • 补充
    • systemd-journald 日志
      • systemd-journald 日志持久化保存
      • systemd-journald 日志分析
      • 最佳实践
        • 故障1:配置文件丢失
        • 故障2:配置文件参数错误
        • 故障3:配置文件参数错误
  • Linux 时间管理
    • 系统时间设置
      • date 命令
      • hwclock 命令
      • timedatectl 命令
      • tzselect 命令
      • windows 自动对时
      • 自动对时-chronyd 服务
      • 补充:vim 高级用法
    • 部署时间服务器
      • 服务端
      • 客户端
    • 网络基础回顾
      • OSI 模型
      • TCP/IP 模型
      • IPV4 地址
      • IPV4 路由
    • 查看网络配置
      • 网卡信息
      • 查看 link
      • 查看 IP
      • 查看 route
      • 查看 dns
    • 网络连通性测试
      • ping 测试
      • mtr 路由跟踪
      • ss 工具
      • 案例
    • 配置网络
      • 环境准备
      • nmtui 命令
        • 自动配置
        • 手动配置
      • nmcli 命令
        • 网络启停
        • 设备控制
        • 动态获取
  • 修改配置指定获取IP方式
  • 激活配置

引言

服务器故障排查、集群环境统一时间、业务网络连通性校验,是 Linux 运维人员每日高频工作。很多新手遇到服务启动失败、登录异常、日志时间错乱、端口冲突等问题时,无从定位根因,本质是没吃透 Linux 三大底层核心模块:系统日志体系、时间同步服务、网络管理工具。
本文以 CentOS7 为实操环境,完整拆解 rsyslog+systemd-journald 双日志架构、chrony 时间服务(客户端 + 自建时间服务器)、NetworkManager 网络配置全套命令,搭配 sshd、httpd、nginx 真实故障复现案例,从原理、配置命令、日志分析、故障定位到解决方案完整落地,看完即可直接应用到线上服务器日常运维工作中。

Linux 日志管理

操作系统内核和程序记录了发生的事件日志,这些日志用于审核系统并解决问题。日志以文本方式保存在/var/log目录中。可以使用普通文本实用程序(如less和tail)检查这些日志。

Linux 内置了基于Syslog协议的标准日志记录系统。许多程序使用此系统记录事件并将其组织到日志文件中。CentOS 7 中systemd-journald和rsyslog服务负责处理syslog消息。

  • systemd-journald 服务,是操作系统事件记录体系结构的核心,收集系统各方面事件消息,包括内核、引导过程早期阶段的输出、守护程序启动和运行时的输出、syslog事件,然后将它们重组为标准格式,并写入结构化的索引系统日志中。
  • rsyslog 服务,读取systemd-journald日志,然后记录到日志文件,或根据自己的配置将日志保存到不同的文件中,以及转发给其他程序。

rsyslog 日志配置

rsyslog 服务配置

配置文件位置
  • 主配置: /etc/rsyslog.conf。主配置文件中以下配置作用是引入从配置目录中配置文件。

# Include all config files in /etc/rsyslog.d/ include(file="/etc/rsyslog.d/*.conf" mode="optional")

  • 从配置:/etc/rsyslog.d/*.conf。
日志记录规则

每一条日志消息都可以通过消息类型facility和priority分类,参考rsyslog.conf(5)。

日志记录规则格式:

facility+连接符号+priority 处理方式

例如 cron.info

  • facility(设备类型)
facility说明
auth pam产生的日志
authpriv ssh,ftp等登录信息的验证信息
cron 周期性任务计划相关
kern 内核
Ipr 打印
mail 邮件
news 新闻组
user 用户程序产生的相关信息
local 0~7 自定义的日志设备,本地使用
  • priority(优先级)
优先级优先级名称严重性
0 emerg 系统不可用
1 alert 必须立即采取措施
2 crit 临界情况
3 err 非验证错误状况
4 warning 警告情況
5 notice 正常但重要的事件
6 info 信息性事件
7 debug 调式级别消息
8 none 代表什么都不存储
  • 连接符号
连接符号作用
. 表示大于等于xxx级别的信息
.= 表示等于xXx级别的信息
.! 表示在xXx之外的等级的信息
  • 处理方式
  • 记录到文件
  • 发送到终端
  • 转发给其他服务器
配置文件内容

/etc/rsyslog.conf 中部分内容如下:

### RULES ####
# Log all kernel messages to the console.
#kern.* /dev/console
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log

日志存储位置:

  • /var/log/messages,大多数系统日志消息记录在此处,不包括与身份验证、电子邮件处理和调度作业执行相关的消息以及纯碎与调试相关的消息。
  • /var/log/secure,与安全性和身份验证事件相关的syslog消息。
  • /var/log/maillog,与邮件服务器相关的syslog消息。
  • /var/log/cron,与调度作业执行相关的syslog消息。
  • /var/log/boot.log,与系统启动相关的非syslog控制台消息。

查看日志内容

[root@server ~ 13:40:35]# tail -f /var/log/messages
Jul 26 13:40:01 server systemd: Created slice User Slice of root.
Jul 26 13:40:01 server systemd: Started Session 8 of user root.
Jul 26 13:40:01 server systemd: Removed slice User Slice of root.
Jul 26 13:40:34 server dbus[766]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprintd.service'
Jul 26 13:40:34 server systemd: Starting Fingerprint Authentication Daemon...
Jul 26 13:40:34 server dbus[766]: [system] Successfully activated service 'net.reactivated.Fprint'
Jul 26 13:40:34 server systemd: Started Fingerprint Authentication Daemon.
Jul 26 13:40:35 server su: (to root) yy on pts/0
Jul 26 13:40:35 server dbus[766]: [system] Activating service name='org.freedesktop.problems' (using servicehelper)
Jul 26 13:40:35 server dbus[766]: [system] Successfully activated service 'org.freedesktop.problems'

日志内容说明:

  • Nov 10 10:23:34,代表日志产生时间。
  • centos7,产生日志的主机名。
  • systemd-logind,产生日志的进程。
  • 最后一个区域是日志内容,例如,“Removed session 15.”。

[root@server ~ 13:41:03]# tail -f /var/log/secure
Jul 26 13:40:35 server su: pam_unix(su-l:session): session opened for user root by yy(uid=1000)

自定义日志记录规则

[root@server ~ 14:17:22]# vim /etc/rsyslog.d/yy.conf
local5.* /var/log/yy.log

[root@server ~ 14:18:37]# systemctl restart rsyslog.service
[root@server ~ 14:19:23]# ls /var/log/yy.log
ls: 无法访问/var/log/yy.log: 没有那个文件或目录

# 手动生成一个消息
[root@server ~ 14:19:34]# logger -p local5.info "test my log"
[root@server ~ 14:20:02]# cat /var/log/yy.log
Jul 26 14:20:02 server yy: test my log

补充

  • 虽然系统提供了日志服务,但并不会记录所有内容。
  • 系统中的应用程序是否使用 rsyslog 服务记录日志,取决于应用程序设计。

例如:

  • httpd 服务使用自己的日志记录。
  • sshd 服务使用 rsyslog 服务记录登录和退出日志。

[root@server ~ 14:40:04]# grep AUTHPRIV /etc/ssh/sshd_config
SyslogFacility AUTHPRIV

[root@server ~ 14:40:21]# grep ^authpri /etc/rsyslog.conf
authpriv.* /var/log/secure

[root@server ~ 14:40:27]# tail -1 /var/log/secure
Jul 26 14:37:45 server sshd[6688]: pam_unix(sshd:session): session opened for user yy by (uid=0)

systemd-journald 日志

systemd-journald 日志持久化保存

systemd-journald 配置文件 /etc/systemd/journald.conf

详情参考 journald.conf(5)

Storage 参数,更改参数值后需要重启systemd-journald服务。

  • persistent:将日志存储在/var/log/journal目录中,这可在系统重启后持久保留。如果/var/log/journal目录不存在,systemd-journald服务会创建它。
  • volatile:将日志存储在易失性/run/log/journal目录中。因为/run文件系统是临时的,仅存在于运行时内存中,存储在其中的数据(包括系统日志)不会在系统启后持久保留。
  • auto:如果/var/log/journal目录存在,那么rsyslog会使用持久存储,否则使用易失性存储。如果未设置Storage参数,此为默认操作。

[root@server ~ 14:40:34]# vim /etc/systemd/journald.conf
......
[Journal]
# Storage=auto
Storage=persistent
......
[root@server ~ 14:43:23]# systemctl restart systemd-journald

systemd-journald 日志分析

[root@server ~ 14:43:27]# ls /var/log/journal/
ce1dae347ec849aab52650e0e86cb970

# systemd-journald日志是以二进制方式存储,不能使用常规文本工具查看
# 查看所有日志条目,默认使用less查看文档
[root@server ~ 14:43:52]# journalctl

# 动态查看所有日志条目
[root@server ~ 14:44:03]# journalctl -f

# 查看本次系统启动到现在所有日志条目
[root@server ~ 14:44:33]# journalctl -b 0
# 1 第1次启动的日志
# 2 第2次启动的日志
# N 第n次启动的日志

# 查看最近5条日志
[root@server ~ 14:44:43]# journalctl -n 5

# 查看error级别日志
[root@server ~ 14:45:16]# journalctl -p err
[root@server ~ 14:45:25]# journalctl -p err | cat

# 根据时间查看日志
[root@server ~ 14:45:46]# journalctl –since today
[root@server ~ 14:46:18]# journalctl –since "2019-02-10 20:30:00" –until "2019-02-13 12:00:00"
— Logs begin at 日 2026-07-26 12:41:39 CST, end at 日 2026-07-26 14:43:27 CST. —
[root@server ~ 14:46:41]# journalctl –since "-1 hour"

# 详细查看所有日志
[root@server ~ 14:46:52]# journalctl -o verbose

# 查看特定unit日志
[root@server ~ 14:47:07]# journalctl -u sshd.service

最佳实践

故障1:配置文件丢失

[root@server ~ 14:20:47]# mv /etc/ssh/sshd_config .
[root@server ~ 14:20:49]# systemctl restart sshd

处理过程:通过日志发现 /etc/ssh/sshd_config: No such file or directory,文件丢失。

# 重启服务时,动态监控日志
[root@server ~ 14:21:19]# tail -f /var/log/messages
Jul 26 14:20:01 server systemd: Removed slice User Slice of root.
Jul 26 14:20:02 server yy: test my log
Jul 26 14:21:19 server systemd: Stopping OpenSSH server daemon...
Jul 26 14:21:19 server systemd: Stopped OpenSSH server daemon.
Jul 26 14:21:19 server systemd: Starting OpenSSH server daemon...
####################################################################################
Jul 26 14:21:19 server sshd: /etc/ssh/sshd_config: No such file or directory
####################################################################################
Jul 26 14:21:19 server systemd: sshd.service: main process exited, code=exited, status=1/FAILURE
Jul 26 14:21:19 server systemd: Failed to start OpenSSH server daemon.
Jul 26 14:21:19 server systemd: Unit sshd.service entered failed state.
Jul 26 14:21:19 server systemd: sshd.service failed.

# 移动回来,并重启服务
[root@server ~ 14:22:39]# mv sshd_config /etc/ssh/
[root@server ~ 14:22:55]# systemctl restart sshd

故障2:配置文件参数错误

[root@server ~ 14:47:45]# echo 'PermitRootLogin hahaha' >> /etc/ssh/sshd_config
[root@server ~ 14:49:01]# systemctl restart sshd
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.

处理过程:通过日志发现/etc/ssh/sshd_config line 141: unsupported option "hahaha".

# 重启服务时,动态监控日志
[root@server ~ 14:49:07]# journalctl -f
— Logs begin at 日 2026-07-26 12:41:39 CST. —
726 14:49:07 server.yy.cloud systemd[1]: Stopping OpenSSH server daemon...
726 14:49:07 server.yy.cloud sshd[6010]: Received signal 15; terminating.
726 14:49:07 server.yy.cloud systemd[1]: Stopped OpenSSH server daemon.
726 14:49:07 server.yy.cloud systemd[1]: Starting OpenSSH server daemon...
726 14:49:07 server.yy.cloud sshd[7285]: /etc/ssh/sshd_config line 140: unsupported option "hahaha".
726 14:49:07 server.yy.cloud systemd[1]: sshd.service: main process exited, code=exited, status=255/n/a
726 14:49:07 server.yy.cloud systemd[1]: Failed to start OpenSSH server daemon.
726 14:49:07 server.yy.cloud systemd[1]: Unit sshd.service entered failed state.
726 14:49:07 server.yy.cloud systemd[1]: sshd.service failed.
726 14:49:07 server.yy.cloud polkitd[739]: Unregistered Authentication Agent for unix-process:7277:765087 (system bus name :1.113, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)

# 清理对应无效记录,并重启服务
[root@server ~ 14:49:52]# sed -i '/hahaha/d' /etc/ssh/sshd_config
[root@server ~ 14:50:02]# systemctl restart sshd

故障3:配置文件参数错误

[root@server ~ 14:50:11]# yum install -y httpd
[root@server ~ 14:52:26]# sed -i 's/Listen 80/Listen 80000/g' /etc/httpd/conf/httpd.conf
[root@server ~ 14:53:25]# systemctl restart httpd
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

处理过程:通过日志发现 AH00526: Syntax error on line 42 of /etc/httpd/conf/httpd.conf

# 重启服务时,动态监控日志
[root@server ~ 14:53:30]# journalctl -f
— Logs begin at 日 2026-07-26 12:41:39 CST. —
726 14:50:11 server.yy.cloud polkitd[739]: Unregistered Authentication Agent for unix-process:7342:771419 (system bus name :1.116, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)
726 14:53:30 server.yy.cloud polkitd[739]: Registered Authentication Agent for unix-process:7472:791360 (system bus name :1.117 [/usr/bin/pkttyagent –notify-fd 5 –fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)
726 14:53:30 server.yy.cloud systemd[1]: Starting The Apache HTTP Server...
726 14:53:30 server.yy.cloud httpd[7479]: AH00526: Syntax error on line 42 of /etc/httpd/conf/httpd.conf:
726 14:53:30 server.yy.cloud httpd[7479]: Invalid address or port
726 14:53:30 server.yy.cloud systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
726 14:53:30 server.yy.cloud systemd[1]: Failed to start The Apache HTTP Server.
726 14:53:30 server.yy.cloud systemd[1]: Unit httpd.service entered failed state.
726 14:53:30 server.yy.cloud systemd[1]: httpd.service failed.
726 14:53:30 server.yy.cloud polkitd[739]: Unregistered Authentication Agent for unix-process:7472:791360 (system bus name :1.117, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)

# 修改回来,并重启服务
[root@server ~ 14:54:04]# sed -i 's/Listen 80000/Listen 80/g' /etc/httpd/conf/httpd.conf
[root@server ~ 14:54:07]# systemctl restart httpd

Linux 时间管理

系统时间设置

date 命令

# 设置语言为英语
[root@server ~ 17:01:16]# LANG=en_US.utf8 date
Fri Jul 24 17:11:15 CST 2026
# 中文语言代码为zh_CN.utf-8

# 设置为特定时间,时间字符串必须是英文格式
[root@server ~ 17:11:15]# date -s '2022年 11月 11日 星期四 11:30:10 CST'
date: 无效的日期"2022年 11月 11日 星期四 11:30:10 CST"

[root@server ~ 17:11:26]# date -s 'Thu Nov 11 11:30:59 CST 2022'
20221111日 星期五 11:30:59 CST

hwclock 命令

# 读取硬件时钟
[root@server ~ 11:30:59]# hwclock -r
2022年11月11日 星期五 11时35分56秒 -0.320836

# 将硬件时钟时间设置与系统时间一致
[root@server ~ 11:31:14]# hwclock -w

# 将系统时间设置与硬件时钟时间一致
[root@server ~ 11:31:22]# hwclock -s

timedatectl 命令

[root@server ~ 11:31:31]# timedatectl
Local time: 五 2022-11-11 11:33:08 CST
Universal time: 五 2022-11-11 03:33:08 UTC
RTC time: 五 2022-11-11 03:33:08
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a

# RTC real time clock,也就是硬件时钟时间。
# NTP enabled: yes,代表对时服务chronyd应开机自启。

# 关闭自动对时
[root@server ~ 11:33:08]# timedatectl set-ntp no
[root@server ~ 11:33:23]# timedatectl
Local time: 五 2022-11-11 11:33:29 CST
Universal time: 五 2022-11-11 03:33:29 UTC
RTC time: 五 2022-11-11 03:33:29
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a

[root@server ~ 11:33:29]# timedatectl set-time '2022-11-10 11:42:54'

# 如果自动对时未关闭,显示如下
[root@server ~ 11:42:54]# timedatectl set-time '2022-11-10 11:42:54'
Failed to set time: Automatic time synchronization is enabled

# 设置时区
[root@server ~ 11:42:54]# timedatectl set-timezone Asia/Shanghai

tzselect 命令

查询时区名称。

[root@server ~ 11:45:00]# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none – I want to specify the time zone using the Posix TZ format.
#? 5
Please select a country.
1) Afghanistan 18) Israel 35) Palestine
2) Armenia 19) Japan 36) Philippines
3) Azerbaijan 20) Jordan 37) Qatar
4) Bahrain 21) Kazakhstan 38) Russia
5) Bangladesh 22) Korea (North) 39) Saudi Arabia
6) Bhutan 23) Korea (South) 40) Singapore
7) Brunei 24) Kuwait 41) Sri Lanka
8) Cambodia 25) Kyrgyzstan 42) Syria
9) China 26) Laos 43) Taiwan
10) Cyprus 27) Lebanon 44) Tajikistan
11) East Timor 28) Macau 45) Thailand
12) Georgia 29) Malaysia 46) Turkmenistan
13) Hong Kong 30) Mongolia 47) United Arab Emirates
14) India 31) Myanmar (Burma) 48) Uzbekistan
15) Indonesia 32) Nepal 49) Vietnam
16) Iran 33) Oman 50) Yemen
17) Iraq 34) Pakistan
#? 9
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time
#? 1

The following information has been given:

China
Beijing Time

Therefore TZ='Asia/Shanghai' will be used.
Local time is now:Thu Nov 10 11:47:24 CST 2022.
Universal Time is now:Thu Nov 10 03:47:24 UTC 2022.
Is the above information OK?
1) Yes
2) No
#? 1

You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai

windows 自动对时

在这里插入图片描述

自动对时-chronyd 服务

# 安装软件包
[root@server ~ 14:55:07]# yum install chrony

# 修改对时服务器
[root@server ~ 15:00:12]# vim /etc/chrony.conf
# 与时间池对时
# 时间池是包含多个时间服务器的服务器组
pool 2.rocky.pool.ntp.org iburst

# 与单个服务器 ntp.aliyun.com 对时
server ntp.aliyun.com iburst

# 启用并启动chronyd服务
[root@server ~ 15:00:55]# systemctl enable chronyd –now

# 如果之前已经启动,需要重启
[root@server ~ 15:01:08]# systemctl restart chronyd

# 验证对时情况
[root@server ~ 15:01:19]# chronyc sources -v
210 Number of sources = 1

.– 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
===============================================================================
^* 203.107.6.88 2 6 17 24 +7295us[+9435us] +/- 30ms

补充:vim 高级用法

vim 高级用法,可视化模式: 功能1:批量增加内容,例如注释多行内容

  • 光标定位到目标位置,ctrl+v
  • 向下移动光标,按需选中多行
  • I 进行插入,写入#
  • esc
  • 功能2:列删除,例如批量解除注释 1. 光标定位到目标位置,ctrl+v 2. 向下移动光标,按需选中多行 3. x或d

    功能3:列复制并粘贴,例如批量增加主机名后缀 1. 光标定位到目标位置,ctrl+v 2. 向下移动光标(可以上下左右同时移动,选冲矩形块),按需选中 3. y复制 4. 光标定位到目标位置,p粘贴

    部署时间服务器

    chrony 既可以作为客户端,也可以作为服务端(为客户端提供对时服务)。

    服务端

    [root@server ~ 11:38:59]# vim /etc/chrony.conf
    # 最后添加两条记录

    # 配置监听地址
    bindaddress 10.1.8.10

    # 配置允许哪些网段主机同步
    allow 10.1.8.0/24

    [root@server ~ 13:33:37]# systemctl restart chronyd

    # 停止防火墙服务
    [root@server ~ 13:38:45]# systemctl stop firewalld.service

    必须确保服务端时间的准确性、有效性。

    客户端

    # 修改对时服务器
    [yy@client ~ 13:40:51]$ sudo vim /etc/chrony.conf
    # 与单个服务器 10.1.8.10 对时
    server 10.1.8.10 iburst

    [yy@client ~ 13:42:18]$ sudo systemctl restart chronyd
    [yy@client ~ 13:42:39]$ chronyc sources -v
    210 Number of sources = 1

    .– 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
    ===============================================================================
    ^* server.yy.cloud 3 6 17 13 -123us[ -54us] +/- 21ms

    # 修改时间验证
    [yy@client ~ 13:42:58]$ date
    2026年 07月 24日 星期五 13:44:12 CST
    [yy@client ~ 13:44:12]$ sudo date -s '2026-7-24 13:30:00'
    2026年 07月 24日 星期五 13:30:00 CST
    [yy@client ~ 13:30:00]$ date
    2026年 07月 24日 星期五 13:30:02 CST
    [yy@client ~ 13:30:02]$
    [yy@client ~ 13:30:06]$
    [yy@client ~ 13:30:06]$
    [yy@client ~ 13:30:06]$
    [yy@client ~ 13:30:07]$
    [yy@client ~ 13:30:07]$ sudo systemctl restart chronyd
    [yy@client ~ 13:30:20]$ date
    2026年 07月 24日 星期五 13:30:24 CST
    [yy@client ~ 13:30:24]$ date
    2026年 07月 24日 星期五 13:45:34 CST

    网络基础回顾

    OSI 模型

    在这里插入图片描述

  • 物理层:提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。
  • 数据链路层:在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。
  • 网络层:控制分组传送系统的操作、路由选择、拥护控制、网络互连等功能,它的作用是将具体的物理传送对高层透明。
  • 传输层:提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。
  • 会话层:提供两进程之间建立、维护和结束会话连接的功能;提供交互会话的管理功能,如三种数据流方向的控制,即一路交互、两路交替和两路同时会话模式 。
  • 表示层:代表应用进程协商数据表示;完成数据转换、格式化和文本压缩。
  • 应用层:提供OSI用户服务,例如事务处理程序、文件传送协议和网络管理等。
  • TCP/IP 模型

    在这里插入图片描述

    在这里插入图片描述

    IPV4 地址

    在这里插入图片描述
    在这里插入图片描述

    IPV4 路由

    在这里插入图片描述

    查看网络配置

    网卡信息

    网卡名称:

    • 旧名称,eth0 eth1 (Ethernet)
    • 新名称,根据网卡的拓扑类型命名。例如ens192,eno4。

    **linux 网络接口传统的名称为eth0 eth1 eth2 …ethN。**然而这种机制会引起一些问题,例如网络接口的增加和删除。

    在rhel7或者更高版本中,接口命名规则如下:

    • 前2个字符:Ethernet 接口以en开头,WLAN接口以wl开头,WWAN接口以ww开头。
    • 下一个字符:o(onboard)代表板载设备,s(slot)代表PCI热插拔,p代表pci接口网卡。
    • 最后N表示index ID或者port。

    例如

    • eno1,代表Ethernet 类型、板载设备、端口号是1的网卡。
    • wlp4s0,代表位于PCI总线4上插槽0中的WLAN卡。如果该卡是一个多功能设备(具有多个端口或者具有一些其他功能)。示例,enp0s1f0代表位于PCI总线0上插槽1中的以太网卡的功能0。
    • 如果无法分配固定接口名,将使用传统方式ethN命名。

    查看 link

    关注mac地址。

    # 查看网络设备清单
    [root@server ~ 15:01:49]# ip -br link
    lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
    ens33 UP 00:0c:29:30:3e:9c <BROADCAST,MULTICAST,UP,LOWER_UP>
    virbr0 DOWN 52:54:00:ce:78:da <NO-CARRIER,BROADCAST,MULTICAST,UP>
    virbr0-nic DOWN 52:54:00:ce:78:da <BROADCAST,MULTICAST>
    ... ...

    # 查看单个网络设备信息
    [root@server ~ 15:03:10]# ip link show ens33
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:30:3e:9c brd ff:ff:ff:ff:ff:ff

    查看 IP

    关注IP地址和掩码位数:10.1.8.10/24。

    [root@server ~ 15:03:14]# ip -br a
    lo UNKNOWN 127.0.0.1/8 ::1/128
    ens33 UP 10.1.8.10/24 fe80::f2f9:f2a5:e575:f206/64 fe80::86e9:3e6:4381:2502/64 fe80::ace4:b0f5:8b59:9db0/64
    virbr0 DOWN 192.168.122.1/24
    virbr0-nic DOWN

    [root@server ~ 15:03:54]# ip addr show ens33
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:30:3e:9c brd ff:ff:ff:ff:ff:ff
    inet 10.1.8.10/24 brd 10.1.8.255 scope global noprefixroute ens33
    valid_lft forever preferred_lft forever
    inet6 fe80::f2f9:f2a5:e575:f206/64 scope link tentative noprefixroute dadfailed
    valid_lft forever preferred_lft forever
    inet6 fe80::86e9:3e6:4381:2502/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
    inet6 fe80::ace4:b0f5:8b59:9db0/64 scope link noprefixroute
    valid_lft forever preferred_lft forever

    查看 route

    default代表主机的网关,也就是10.1.8.2。

    [root@server ~ 15:04:07]# ip route
    default via 10.1.8.2 dev ens33 proto static metric 100
    10.1.8.0/24 dev ens33 proto kernel scope link src 10.1.8.10 metric 100
    192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1

    # 还可以使用以下命令
    [root@server ~ 15:05:03]# route -n
    # 或者
    [root@server ~ 15:05:12]# netstat -nr
    Kernel IP routing table
    Destination Gateway Genmask Flags MSS Window irtt Iface
    0.0.0.0 10.1.8.2 0.0.0.0 UG 0 0 0 ens33
    10.1.8.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
    192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

    说明:

  • 直连网络10.1.8.0/24和192.168.122.0/24,可以 直接通信。
  • 其他网络中主机,通过默认路由发送到目标,这里是default对应的条目,也就是10.1.8.2。
  • 查看 dns

    /etc/resolv.conf 文件中nameserver指明服务想哪个DNS服务器查询域名对应IP。

    [root@server ~ 15:05:19]# cat /etc/resolv.conf
    # Generated by NetworkManager
    search yy.cloud
    nameserver 223.5.5.5
    nameserver 223.6.6.6

    网络连通性测试

    ping 测试

    # ping 测试,选项-c控制ping次数,选项-w控制ping超时时间
    [root@server ~ 15:06:39]# ping baidu.com -c 4 -w 2
    PING baidu.com (124.237.177.164) 56(84) bytes of data.
    64 bytes from 124.237.177.164 (124.237.177.164): icmp_seq=1 ttl=128 time=27.9 ms
    64 bytes from 124.237.177.164 (124.237.177.164): icmp_seq=2 ttl=128 time=27.9 ms

    — baidu.com ping statistics —
    2 packets transmitted, 2 received, 0% packet loss, time 1001ms
    rtt min/avg/max/mdev = 27.958/27.969/27.981/0.167 ms

    # 说明:
    # 1- 能够解析出ip 说明DNS配置正确
    # 2- 能ping 通说明我们的网关配置正确

    mtr 路由跟踪

    # ping 主机不通,此时跟踪路由,查看数据最远到达的位置
    [root@server ~ 15:07:04]# mtr -n 1.1.1.1

    在这里插入图片描述

    思考:从这张图中能获取哪些信息?

    ss 工具

    /etc/services 文件存储常见端口和服务对应关系。

    [root@server ~ 15:07:37]# vim /etc/services
    ...
    ftp-data 20/tcp
    ftp-data 20/udp
    # 21 is registered to ftp, but also used by fsp
    ftp 21/tcp
    ftp 21/udp fsp fspd
    ssh 22/tcp # The Secure Shell (SSH) Protocol
    ssh 22/udp # The Secure Shell (SSH) Protocol
    telnet 23/tcp
    telnet 23/udp
    ...
    domain 53/tcp # name-domain server
    domain 53/udp
    ...
    http 80/tcp www www-http # WorldWideWeb HTTP
    http 80/udp www www-http # HyperText Transfer Protocol
    ...
    https 443/tcp # http protocol over TLS/SSL
    https 443/udp # http protocol over TLS/SSL
    ...

    ss 命令用于查看系统中网络状态信息。

    以前使用 netstat 查看网络状态信息,使用方法等效与 ss 命令。

    # 默认显示是 ESTAB 状态
    [root@server ~ 15:08:04]# ss | grep :ssh
    tcp ESTAB 0 0 10.1.8.10:ssh 10.1.8.1:55532
    tcp ESTAB 0 36 10.1.8.10:ssh 10.1.8.1:54849

    # 只看 LISTEN,包含IPv4和IPv6
    [root@server ~ 15:08:34]# ss -l | grep :ssh
    tcp LISTEN 0 128 *:ssh *:*
    tcp LISTEN 0 128 [::]:ssh [::]:*

    # 查看 ipv4 所有(LISTEN和ESTAB)网络状态
    [root@server ~ 15:08:42]# ss -a4 | grep :ssh
    tcp LISTEN 0 128 *:ssh *:*
    tcp ESTAB 0 0 10.1.8.10:ssh 10.1.8.1:55532
    tcp ESTAB 0 36 10.1.8.10:ssh 10.1.8.1:54849

    # -n 将服务的名称显示为数字
    [root@server ~ 15:08:58]# ss -an4|grep :22
    tcp LISTEN 0 128 *:22 *:*
    tcp ESTAB 0 0 10.1.8.10:22 10.1.8.1:55532
    tcp ESTAB 0 36 10.1.8.10:22 10.1.8.1:54849

    # -p 显示相应的进程
    [root@server ~ 15:09:34]# ss -lnp4|grep :22
    tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=7348,fd=3))

    模拟环境

    [root@server ~ 15:09:52]# yum install -y nginx
    [root@server ~ 15:10:39]# systemctl start nginx.service
    Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
    [root@server ~ 15:11:19]# cd /usr/share/nginx/html/
    [root@server html 15:11:33]# ls
    404.html 50x.html en-US icons img index.html nginx-logo.png poweredby.png
    [root@server html 15:11:37]# mv index.html index.html.ori
    [root@server html 15:12:08]# echo "Hello World" > index.html
    [root@server html 15:12:34]# curl http://10.1.8.10
    Hello World

    [root@server ~ 15:13:26]# yum install -y httpd
    [root@server ~ 15:14:18]# systemctl start httpd
    [root@server ~ 15:14:24]# systemctl status httpd.service|grep use
    Jul 25 17:14:47 server.yy.cloud httpd[14016]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
    Jul 25 17:14:47 server.yy.cloud httpd[14016]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80

    查找端口被哪个程序使用

    [root@server ~ 15:16:07]# ss -lnp4|grep :80
    tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=14009,fd=6),("nginx",pid=14008,fd=6),("nginx",pid=14007,fd=6))

    解决方法

    [root@server ~ 15:16:18]# systemctl stop nginx
    [root@server ~ 15:16:31]# systemctl start httpd

    案例

    模拟:

    [root@server ~ 15:16:35]# systemctl stop sshd
    [root@server ~ 15:16:46]# /sbin/sshd

    现象:

  • 重启sshd服务,状态是inactive。
  • 客户端可以正常ssh登录服务器
  • 处理过程:

  • 确认服务状态。
  • [root@server ~ 15:16:52]# systemctl status sshd.service
    ● sshd.service – OpenSSH server daemon
    Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
    Active: inactive (dead) since 日 2026-07-26 15:16:46 CST; 17s ago
    Docs: man:sshd(8)
    man:sshd_config(5)
    Process: 7348 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=0/SUCCESS)
    Main PID: 7348 (code=exited, status=0/SUCCESS)

    726 14:50:11 server.yy.cloud systemd[1]: Stopped OpenSSH server daemon.
    726 14:50:11 server.yy.cloud systemd[1]: Starting OpenSSH server daemon...
    726 14:50:11 server.yy.cloud sshd[7348]: Server listening on 0.0.0.0 port 22.
    726 14:50:11 server.yy.cloud sshd[7348]: Server listening on :: port 22.
    726 14:50:11 server.yy.cloud systemd[1]: Started OpenSSH server daemon.
    726 15:16:46 server.yy.cloud systemd[1]: Stopping OpenSSH server daemon...
    726 15:16:46 server.yy.cloud systemd[1]: Stopped OpenSSH server daemon.

  • 尝试重启,确认重启失败原因。
  • [root@server ~ 15:17:04]# systemctl restart sshd.service
    Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
    # 查看

  • 查看日志
  • [root@server ~ 15:47:25]# journalctl -u sshd
    ....
    #################################################################################################
    726 15:20:13 server.yy.cloud sshd[8877]: error: Bind to port 22 on 0.0.0.0 failed: Address already
    726 15:20:13 server.yy.cloud sshd[8877]: error: Bind to port 22 on :: failed: Address already in us
    726 15:20:13 server.yy.cloud sshd[8877]: fatal: Cannot bind any address.
    #################################################################################################
    726 15:20:13 server.yy.cloud systemd[1]: sshd.service: main process exited, code=exited, status=255
    726 15:20:13 server.yy.cloud systemd[1]: Failed to start OpenSSH server daemon.
    726 15:20:13 server.yy.cloud systemd[1]: Unit sshd.service entered failed state.
    726 15:20:13 server.yy.cloud systemd[1]: sshd.service failed.
    726 15:20:28 server.yy.cloud systemd[1]: Stopped OpenSSH server daemon.
    726 15:20:28 server.yy.cloud systemd[1]: Starting OpenSSH server daemon...
    726 15:20:28 server.yy.cloud systemd[1]: sshd.service: main process exited, code=exited, status=255
    726 15:20:28 server.yy.cloud systemd[1]: Failed to start OpenSSH server daemon.
    726 15:20:28 server.yy.cloud systemd[1]: Unit sshd.service entered failed state.
    726 15:20:28 server.yy.cloud systemd[1]: sshd.service failed.

    日志表明:22端口被占用。

  • 查看谁占用22端口:发现sshd已经运行了。可以理解当前客户端为什么能够登录。
  • [root@server ~ 15:20:43]# ss -lntu4p|grep :22
    tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=8717,fd=3))

  • 但是不受systemd管理了。解决办法:kill 当前sshd进程,通过systemctl start sshd。
  • [root@server ~ 15:21:47]# pkill -9 sshd
    # 尝试重启sshd服务:正常重启
    [root@server ~ 15:22:42]# systemctl restart sshd

    配置网络

    网络配置是由 NetworkManager 服务管理的,确保该服务开机自启。

    环境准备

  • 虚拟机新增加一个NAT网卡。
  • 自动获取的前提条件是直连的网络中有dhcp服务器。
  • 对于 vmware workstations:

    在这里插入图片描述

    nmtui 命令

    自动配置

    # 服务器配置
    [root@centos7 ~]# nmtui

    使用上下键、tab进行移动,回车选中条目。

    在这里插入图片描述
    在这里插入图片描述

    使用方向键,下移到最下面

    在这里插入图片描述

    返回
    在这里插入图片描述
    在这里插入图片描述

    更改完成后,选择启用连接,重新激活ens192。

    手动配置

    部分截图

    在这里插入图片描述

    更改完成后,重新激活ens192。

    **思考:**什么情况下用自动配置和手动配置?

    • 自动配置:无静态IP地址需求的其他情况。例如:办公环境员工的电脑,公共场所无线。
    • 手动配置:需要一个静态IP地址,例如:对外提供服务的数据库服务器,需要一个静态的IP地址。

    nmcli 命令

    网络启停

    如果网络停用,右上角网络链接图标消失。

    # 停用网络,并不会停止 NetworkManager 服务。
    [yy@server ~ 20:18:43]$ nmcli networking off
    # 网卡状态变化:activated -> deactivating -> disconnected -> unmanaged -> unavailable

    # 启用网络
    [yy@server ~ 20:19:30]$ nmcli networking on
    # 网卡状态变化:unavailable -> disconnected -> auto-activating

    设备控制
    • DEVICE,是设备,也就是网卡。
    • CONNECTION,是连接,也就是网卡的配置。

    一个 DEVICE 可以有多个配置,同一时刻只能激活一个配置。

    # 显示设备列表状态信息
    [root@server ~ 21:26:41]# nmcli device
    DEVICE TYPE STATE CONNECTION
    ens33 ethernet 已连接 ens33
    ens36 ethernet 已连接 ens36
    virbr0 bridge 已连接 virbr0
    lo loopback 未托管 —
    virbr0-nic tun 未托管 —

    # 断开设备链接
    [root@server ~ 21:27:23]# nmcli device disconnect ens36
    成功断开设备 "ens36"
    [root@server ~ 21:27:47]# nmcli device
    DEVICE TYPE STATE CONNECTION
    ens33 ethernet 已连接 ens33
    virbr0 bridge 已连接 virbr0
    ens36 ethernet 已断开 —
    lo loopback 未托管 —
    virbr0-nic tun 未托管 —

    # 连接设备
    [root@server ~ 21:27:55]# nmcli device connect ens36
    成功用 "ens36122adafe-2003-32c5-b533-67e340878e20" 激活了设备 ""
    [root@server ~ 21:28:23]# nmcli device
    DEVICE TYPE STATE CONNECTION
    ens33 ethernet 已连接 ens33
    ens36 ethernet 已连接 ens36
    virbr0 bridge 已连接 virbr0
    lo loopback 未托管 —
    virbr0-nic tun 未托管 —

    # 显示特定设备详细信息
    [root@server ~ 21:28:27]# nmcli device show ens36
    GENERAL.DEVICE: ens36
    GENERAL.TYPE: ethernet
    GENERAL.HWADDR: 00:0C:29:30:3E:A6
    GENERAL.MTU: 1500
    GENERAL.STATE: 100(已连接)
    GENERAL.CONNECTION: ens36
    GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/9
    WIRED-PROPERTIES.CARRIER: 开
    IP4.ADDRESS[1]: 10.1.1.10/24
    IP4.GATEWAY: —
    IP4.ROUTE[1]: dst = 10.1.1.0/24, nh = 0.0.0.0, mt = 101
    IP6.ADDRESS[1]: fe80::4ee5:95af:781c:9025/64
    IP6.GATEWAY: —
    IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 101
    IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255

    [root@server ~ 21:35:49]# nmcli device show ens36 | grep IP4
    IP4.ADDRESS[1]: 10.1.1.10/24
    IP4.GATEWAY: —
    IP4.ROUTE[1]: dst = 10.1.1.0/24, nh = 0.0.0.0, mt = 101

    动态获取

    # 查看connection清单
    [root@server ~ 21:36:07]# nmcli connection
    NAME UUID TYPE DEVICE
    ens33 2a378fad-4e9f-4569-af12-6bda93ae427f ethernet ens33
    ens36 122adafe-2003-32c5-b533-67e340878e20 ethernet ens36
    virbr0 8dc07ce0-4188-4259-8811-3d7c993578fa bridge virbr0

    # 删除连接
    [root@server ~ 21:36:43]# nmcli connection delete ens36
    成功删除连接 "ens36" (122adafe-2003-32c5-b533-67e340878e20)
    [root@server ~ 21:37:01]# nmcli connection
    NAME UUID TYPE DEVICE
    ens33 2a378fad-4e9f-4569-af12-6bda93ae427f ethernet ens33
    virbr0 8dc07ce0-4188-4259-8811-3d7c993578fa bridge virbr0

    # 添加网卡配置:自动获取IP地址
    [root@server ~ 21:37:09]# nmcli connection add type ethernet ifname ens192 con-name ens192-dynamic
    连接 "ens192-dynamic" (27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1) 已成功添加。

    [root@server ~ 21:37:51]# nmcli connection show
    NAME UUID TYPE DEVICE
    ens160 5f61d96b-a284-41e9-9bf6-5cf3de6250cd ethernet ens160
    ens192-dynamic 27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1 ethernet ens192

    [root@server ~ 21:37:59]# nmcli connection show ens192-dynamic
    connection.id: ens192-dynamic
    connection.uuid: 27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1
    connection.stable-id: —
    connection.type: 802-3-ethernet
    connection.interface-name: ens192
    ...
    ipv4.method: auto
    ...
    ipv6.method: auto
    ...

    # 修改配置指定获取IP方式
    [root@server ~ 21:39:09]# nmcli connection modify ens192-dynamic ipv4.method auto

    # 激活配置
    [root@server ~ 21:39:41]# nmcli connection up ens192-dynamic
    连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/18)

    nmcli connection add type ethernet ifname ens192 con-name ens192-dynamic
    连接 “ens192-dynamic” (27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1) 已成功添加。

    [root@server ~ 21:37:51]# nmcli connection show
    NAME UUID TYPE DEVICE
    ens160 5f61d96b-a284-41e9-9bf6-5cf3de6250cd ethernet ens160
    ens192-dynamic 27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1 ethernet ens192

    [root@server ~ 21:37:59]# nmcli connection show ens192-dynamic
    connection.id: ens192-dynamic
    connection.uuid: 27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1
    connection.stable-id: –
    connection.type: 802-3-ethernet
    connection.interface-name: ens192

    ipv4.method: auto

    ipv6.method: auto

    修改配置指定获取IP方式

    [root@server ~ 21:39:09]# nmcli connection modify ens192-dynamic ipv4.method auto

    激活配置

    [root@server ~ 21:39:41]# nmcli connection up ens192-dynamic
    连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/18)

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 运维高频故障解决手册:日志定位异常、统一服务器时间、网络配置排错实操
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!