当前位置: 首页 > news >正文

【网络协议】RFC3164-The BSD syslog Protocol

引言

Syslog常被称为系统日志或系统记录,是一种标准化的协议,用于网络设备、服务器和应用程序向中央Syslog服务器发送日志消息。互联网工程任务组(IETF)发布的RFC 3164,专门定义了BSD Syslog协议的规范和实现方式。通过syslog协议,系统管理员可以监控系统的运行状态、诊断问题,并采取相应的措施来确保系统的稳定性和安全性。大部分设备会支持syslog功能,是交换机路由器等产品的必测项。

RFC3164协议介绍

日志格式

syslog使用标准的文本格式来表示日志消息,由PRI字段、Header字段和MSG字段组成。

具体例子如Mar 10 09:11:54 hostapd: wl1: STA ae:43:7b:84:e4:17 IEEE 802.11: associated,对应的wireshark报文如下

PRI字段

优先级字段共8位比特,由设施(facility)和严重性(severity)组成,前者占前5个比特,后者占后3个比特。

设施字段用于表明日志具体是由哪个系统部分产生的,如是内核、系统守护进程、业务进程等,目前定义如下

Numerical Code       Facility       0             kernel messages1             user-level messages2             mail system3             system daemons4             security/authorization messages (note 1)5             messages generated internally by syslogd6             line printer subsystem7             network news subsystem8             UUCP subsystem9             clock daemon (note 2)10             security/authorization messages (note 1)11             FTP daemon12             NTP subsystem13             log audit (note 1)14             log alert (note 1)15             clock daemon (note 2)16             local use 0  (local0)17             local use 1  (local1)18             local use 2  (local2)19             local use 3  (local3)20             local use 4  (local4)21             local use 5  (local5)22             local use 6  (local6)23             local use 7  (local7)

严重性字段用于描述了事件的紧急程度,最高是emergency(紧急,系统宕机或功能不可用的日志),最低是debug(调试,用于协助调试的软件运行过程日志)

Numerical Code        Severity      0       Emergency: system is unusable1       Alert: action must be taken immediately2       Critical: critical conditions3       Error: error conditions4       Warning: warning conditions5       Notice: normal but significant condition6       Informational: informational messages7       Debug: debug-level messages

Hearder字段

syslog报文头部字段,由时间戳(timestamp)和主机名(hostname)两部分组成

时间戳的格式是“Mmm dd hh:mm:ss”

Mmm是月份的英文单词的三位缩写,首字母大写,后两位小写,取值范围是Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec

dd是表示某月的第几天,固定两位数,如果小于10,则第一位填空格。如三月7号,格式是Mar 7,Mar和7之间有两个空格,如3月10号,格式是Mar 10,Mar和10之间只有一个空格

hh:mm:ss表示本地时间,hh取值范围是00~23,mm和ss的取值范围是00~59

主机名字段,协议规定只能填主机名、IPv4地址或IPv6地址,且不能含有空格。不过在实际应用中,很多厂商会把hostname填成其他内容

MSG字段

syslog的消息部分,由TAG字段和CONTENT字段组成。

TAG字段中的值将是生成消息的程序或进程的名称,长度不可超过32个字符。

CONTENT字段包含日志的详细信息,与TAG字段通过左中括号([)、冒号(:)或空格隔开

传输协议

Syslog协议使用UDP协议进行日志消息的传输,默认端口号是514.syslog服务器监听514端口,接收日志信息并进行解析。wireshark也默认会把目的端口号为514的UDP报文按syslog协议进行解析,输入syslog可以过滤出相关报文。如果使用其他端口号或者日志格式不符合规范,wires hark可能无法按syslog进行解析,普通syslog服务器可能无法解析显示收到的日志。

由于UDP是无连接协议,传输过程可能丢失部分日志,加上syslog是明文传输。所以只推荐在稳定的、安全的内部网络使用基于RFC3164的syslog。

RFC 5424

鉴于RFC3164的缺点,IETF发布RFC5424,用来取代RFC3164,其优势包括

结构化数据:可以包含更加丰富的日志信息,并且可读性和解析性更高;

安全性更高:RFC5424可以采用TCP和TLS来传输日志,确保日志的完整和安全。

因此对安全性要求更高的,网络稳定性较差的场景,推荐使用基于RFC5424的syslog。

测试要点

1、启用禁用syslog

目的:验证系统启动syslog后产生日志,禁用syslog后停止产生日志

测试步骤:启用syslog功能,检查系统是否正确生成syslog日志;禁用syslog功能,检查系统是否停止生成syslog

2、syslog格式符合RFC3164

目的:验证系统产生的syslog是否符合RFC3164标准,注意每个厂家可能会对syslog进行小修改,满足设计需求即可

测试步骤:启用syslog,按RFC3164标准或软件设计需求,检查syslog日志的各个字段

3、syslog可以发送到syslog服务器

目的:验证系统可以把syslog传输到远端的syslog服务器

测试步骤:启用syslog功能,配置syslog服务器地址,查看服务器是否收到系统的日志。搭建syslog服务器可以参考之前发布的文章:【手把手教】tftpd64配置成SNTP、syslog、DHCP、DNS服务器的方法(一)-CSDN博客

4、手动操作触发产生日志

目的:手动实施会产生日志的操作,验证系统是否正确产生对应的日志

测试步骤:根据系统的设计,手动实施操作,查看是否产生对应的日志,如手动kill某个进程

syslog抓包

抓包举例1

PRI是141,设施值是3,表示守护进程,紧急程度是6,表示通知信息

时间戳是3月10号,上午7点6分46秒

主机名是hostapd,表示是无线进程hostpad

tag字段是wl1,表示关于无线接口wl1

消息字段,表示这个某个终端从无线接口wl1解关联

抓包举例2

PRI是12,设施值是1,表示用户级,紧急程度是4,表示告警信息

时间戳是3月10号,上午7点6分46秒

主机名是内核,表明由系统内核上报

tag字段是br0,表明跟br0接口有关

消息字段,表明是br0接口收到了自己的mac作为源mac的报文,表明交换机可能存在环路


原创不易,你的支持是我最大的动力,欢迎大家点赞,收藏,关注!

相关文章:

【网络协议】RFC3164-The BSD syslog Protocol

引言 Syslog常被称为系统日志或系统记录,是一种标准化的协议,用于网络设备、服务器和应用程序向中央Syslog服务器发送日志消息。互联网工程任务组(IETF)发布的RFC 3164,专门定义了BSD Syslog协议的规范和实现方式。通…...

SpringCloud -根据服务名获取服务运行实例并进行负载均衡

Nacos注册中心 每个服务启动之后都要向注册中心发送服务注册请求&#xff0c;注册中心可以和各个注册客户端自定义协议实现服务注册和发现。 pom.xml <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-na…...

CentOS 安装Redis

1. 安装 Redis 安装 EPEL 仓库&#xff08;对于 CentOS/RHEL 系统&#xff09;&#xff1a; 首先安装 EPEL 仓库&#xff0c;因为 Redis 存在于 EPEL 仓库中&#xff1a; yum install epel-release安装 Redis 数据库&#xff1a; yum install redis2. 修改 Redis 配置文件 …...

Linux网络 TCP socket

TCP简介 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。它位于OSI模型的第四层&#xff0c;主要为应用层提供数据传输服务。TCP通过三次握手建立连接&#xff0c;确保数据在发送和接收过程中的准确性和顺序…...

(一)相机标定——四大坐标系的介绍、对应转换、畸变原理以及OpenCV完整代码实战(C++版)

一、四大坐标系介绍 1&#xff0c;世界坐标系 从这个世界&#xff08;world&#xff09;的视角来看物体 世界坐标系是3D空间坐标&#xff0c;每个点的位置用 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw​,Yw​,Zw​)表示 2&#xff0c;相机坐标系 相机本身具有一个坐标系&…...

【Linux网络编程】高效I/O--I/O的五种类型

目录 I/O的概念 网络通信的本质 I/O的本质 高效I/O 五种I/O模型 阻塞I/O 非阻塞I/O 信号驱动I/O 多路转接/多路复用I/O 异步I/O 非阻塞I/O的实现 I/O的概念 网络通信的本质 网络通信的本质其实就是I/O I&#xff1a;表示input(输入)O&#xff1a;表示ou…...

企业级NoSQL数据库Redis

1.浏览器缓存过期机制 1.1 最后修改时间 last-modified 浏览器缓存机制是优化网页加载速度和减少服务器负载的重要手段。以下是关于浏览器缓存过期机制、Last-Modified 和 ETag 的详细讲解&#xff1a; 一、Last-Modified 头部 定义&#xff1a;Last-Modified 表示服务器上资源…...

Vscode:问题解决办法 及 Tips 总结

Visual Studio Code&#xff08;简称VSCode&#xff09;是一个功能强大的开源代码编辑器&#xff0c;广泛用于各种编程语言和开发场景&#xff0c;本博客主要记录在使用 VSCode 进行verilog开发时遇到的问题及解决办法&#xff0c;使用过程中的技巧 文章目录 扩展安装失败调试配…...

二十三种设计模式-装饰器模式

一、定义与核心思想 装饰器模式是一种结构型设计模式&#xff0c;其核心思想是动态地给一个对象添加一些额外的职责。通过这种方式&#xff0c;可以在不改变原有对象结构的基础上&#xff0c;灵活地增加新的功能&#xff0c;使得对象的行为可以得到扩展&#xff0c;同时又保持…...

架构思考与实践:从通用到场景的转变

在当今复杂多变的商业环境中&#xff0c;企业架构的设计与优化成为了一个关键议题。本文通过一系列随笔&#xff0c;探讨了业务架构的价值、从通用架构到场景架构的转变、恰如其分的架构设计以及如何避免盲目低效等问题。通过对多个实际案例的分析&#xff0c;笔者揭示了架构设…...

Spring MVC(一)

RestController RestController 是由 Controller 和 ResponseBody 两个注解构成的。 Spring 启动的时候会扫描所有包含 Controller 或者 RestController 注解的类&#xff0c;创建出对外的接口&#xff0c;这样外界就可以从这里与服务器实现交互&#xff0c;如果没有这个注解…...

vue3使用tsx渲染复杂逻辑的表单

前置 目前的应用场景是&#xff1a;检查项目是树结构&#xff0c;有的项目还需要动态显示对应的子集 项目用的是uniappvue3tsvite生成的app tsx模版 统一渲染入口 <script lang"ts">import uniForms from dcloudio/uni-ui/lib/uni-forms/uni-forms.vueimport…...

python助力WRF自动化运行

对大部分人而言&#xff0c;特别是新用户&#xff0c;WRF模式的安装繁琐且不必要&#xff0c;可以作为后续进阶掌握的技能&#xff0c;本学习跳过繁琐的安装步骤&#xff0c;直接聚焦模式的运行部分&#xff0c;通过短平快的教学&#xff0c;快速掌握模式运行。进一步将python语…...

Windows 下 Postgres 安装 TimescaleDB 插件

Windows 下 Postgres 安装 TimescaleDB 插件 一、准备工作 安装 PostgreSQL&#xff1a;首先确保你已经在 Windows 系统中成功安装了 PostgreSQL 数据库。可以从 PostgreSQL 官方网站下载适合你系统的安装包&#xff0c;并按照安装向导进行安装。安装过程中&#xff0c;记住设…...

【Vim Masterclass 笔记21】S09L39:Vim 设置与 vimrc 文件的用法示例(二)

文章目录 S09L39 Vim Settings and the Vimrc File - Part 21 Vim 的配色方案与 color 命令2 map 命令3 示例&#xff1a;用 map 命令快速生成 HTML 代码片段4 Vim 中的 Leader 键5 用 mkvimrc 命令自动生成配置文件 写在前面 本篇为 Vim 自定义配置的第二部分。当中的每个知识…...

【Docker】Supervisor 实现单容器运行多服务进程

本文内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01; 如果对您有帮助&#xff0c;烦请点赞、关注、转发、订阅专栏&#xff01; 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】&#xff08;全…...

【网络协议】【http】【https】ECDHE-TLS1.2

【网络协议】【http】【https】ECDHE-TLS1.2 ECDHE算法 1.客户端和服务器端事先确定好使用哪种椭圆曲线&#xff0c;和曲线上的基点G&#xff0c;这两个参数都是公开的&#xff0c; 双方各自随机生成一个随机数作为私钥d&#xff0c;并与基点 G相乘得到公钥Q(QdG)&#xff0c…...

(十五)WebGL中gl.texImage2D函数使用详解

在 WebGL 中&#xff0c;gl.texImage2D 是一个非常关键的函数&#xff0c;用于将图像数据上传到 WebGL 上下文中并作为纹理对象的一部分。它允许你将图像、视频、画布等作为纹理源。理解如何使用 gl.texImage2D 是在 WebGL 中处理纹理的核心之一。 文章目录 gl.texImage2D 的基…...

CSS 颜色

所有浏览器都支持的颜色名 所有现代浏览器均支持以下 140 种颜色名称&#xff08;单击颜色名称或十六进制值&#xff0c;可查看将以该颜色为背景颜色以及不同的文本颜色&#xff09;&#xff1a; 颜色名十六进制颜色值颜色AliceBlue#F0F8FFAntiqueWhite#FAEBD7Aqua#00FFFFAqu…...

C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果

C#&#xff0c;入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程https://blog.csdn.net/beijinghorn/article/details/123350910 C#&#xff0c;入门教程(02)—— Visual Studio 2022开发环境搭建图文教程https://blog.csdn.net/beijinghorn/article/detail…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...