SR6608在配置了日志发送,经过抓包看到推送的日志是乱码,在设备配置的日志编码格式为UTF-8,这个是什么原因造成的?
#
info-center loghost source LoopBack0
info-center loghost xx.xx.xx.xx
info-center source NAT console level warning
info-center source NAT monitor level warning
info-center source default loghost level warning
info-center source NAT loghost level informational
info-center source SYSLOG loghost level informational
#
customlog character-encoding utf-8
#
userlog flow export version 5
userlog flow export source-ip x.x.x.x
userlog flow export host xx.xx.xx.xx port 514
#
nat log enable
nat log flow-active 10
nat log flow-begin
nat log flow-end
nat log no-pat ip-usage
nat log port-block-assign
nat log port-block-withdraw
nat log alarm
#
从你的配置来看,你同时开启了两种日志发送方式:
info-center 系统日志:通过 info-center loghost 发送,你配置了 customlog character-encoding utf-8,这会影响 info-center 发送的日志编码。
userlog 流日志:通过 userlog flow export 发送,主要用于 NAT 会话日志等。
乱码的可能原因:
你的设备配置了 UTF-8 编码发送日志,但如果接收日志的服务器(如 syslog 服务器)默认使用其他编码(如 GBK、GB2312 或 ASCII)来解析收到的日志,就会显示为乱码。
检查方法:确认日志服务器的字符集设置是否与设备一致(UTF-8)。
userlog flow export 发送的是二进制格式的日志(如 NetFlow v5 格式),这种日志不是人类可读的文本,直接用文本方式打开必然会显示乱码。
检查方法:确认你抓包看到的乱码是来自 info-center loghost 发送的日志,还是来自 userlog flow export host 发送的流日志。如果是后者,这是正常现象,需要用专门的 NetFlow 采集器解析。
日志从路由器发送到接收端的过程中,如果经过防火墙、负载均衡器等中间设备,这些设备可能对数据进行了处理,导致编码改变。
customlog character-encoding utf-8 配置后,可能需要重启相关进程或设备才能完全生效。
| 日志类型 | 配置命令 | 日志格式 | 处理方法 |
|---|---|---|---|
| info-center 系统日志 | info-center loghost xx.xx.xx.xx | 文本格式(可读) | 检查接收端编码设置 |
| userlog 流日志 | userlog flow export host xx.xx.xx.xx | 二进制格式(NetFlow v5) | 必须使用专用采集器 |
建议:
如果你关注的是 NAT 会话日志,确认接收端是否部署了 NetFlow 采集器(如 H3C IMC、SolarWinds、ntopng 等)。如果没有,收到的必然是乱码。
如果你关注的是系统日志(如接口状态、登录日志),则需排查编码问题。
如果确认是 info-center 日志乱码,按以下步骤排查:
检查接收端编码设置
登录日志服务器,查看其字符集设置(如 Linux syslog-ng/rsyslog 的配置文件,或 Windows Event Collector 的语言区域设置)。
确保接收端使用 UTF-8 编码解析日志。
查看设备完整配置
检查设备系统日志
尝试在接收端抓包确认
在日志服务器上抓包,查看原始数据包的十六进制内容。
如果十六进制内容显示为正常的 ASCII/UTF-8 字符(如 <189> 开头),说明发送正常,问题在接收端解析。
如果十六进制内容本身就是乱码,可能是设备编码未生效。
如果你确实需要接收 NAT 会话日志,必须使用支持 NetFlow v5 的采集器:
| 采集器类型 | 说明 |
|---|---|
| H3C IMC | 官方推荐,需购买 NTA 组件 |
| SolarWinds NetFlow Traffic Analyzer | 商业软件 |
| ntopng | 开源方案 |
| ELK + NetFlow 插件 | 可定制开发 |
为快速判断问题根源,可以:
临时关闭 userlog 流日志(如果不需要)
nc 或 socat 监听 514 端口,保存原始数据hexdump -C /tmp/syslog.raw 查看原始内容,确认是否为可读文本。暂无评论
SR6608日志乱码的可能原因如下:
1. 接收端字符集不匹配(最常见原因)
设备已配置 info-center syslog utf-8 enable 使用UTF-8编码发送日志,但日志服务器或接收软件(如Syslog服务器、终端显示工具)未使用UTF-8解码。
例如:服务器默认使用GB18030/GBK编码解析,导致UTF-8编码的日志显示为乱码。
2. 中间设备篡改编码
日志传输路径中的防火墙、NAT设备或网络代理可能修改了报文编码格式。
3. 配置未生效
UTF-8配置未正确应用(需检查配置是否保存并生效)。
解决方案
第一步:验证接收端配置
在日志服务器检查字符集配置(示例为Linux syslog)
vim /etc/rsyslog.conf
确保添加以下参数:
$ActionFileDefaultTemplate RSYSLOG_FileFormat
$FileDefaultTemplate RSYSLOG_FileFormat
$FileWriteUTF8BOM on 启用UTF-8支持
第二步:检查网络中间设备
排查防火墙/NAT设备的内容编码转换功能,临时禁用相关策略测试。
第三步:确认设备配置
在SR6608上检查配置
display current-configuration | include "info-center
syslog utf-8"
正确输出应显示:info-center syslog utf-8 enable
若配置丢失,重新提交并保存:
system-view
info-center syslog utf-8 enable
第四步:终端软件兼容性
若直接终端查看日志,确保终端软件(如SecureCRT、Xshell)的会话编码设置为UTF-8:
右键会话 属性 终端 编码 选择 "UTF-8"。
关键配置说明(摘自资料)
命令
info-center syslog utf-8 enable
缺省情况
信息中心使用 GB18030 编码方式输出日志。
使用指导
设备与接收端需使用相同字符集,否则中文字符会显示为乱码。
总结建议
优先检查日志服务器的字符集配置,确保与设备UTF-8设置一致。若问题仍存在,通过分段抓包(设备出口、服务器入口)确认传输过程中编码是否被篡改。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论