APP下载

CentOS部署MRTG出现中文乱码

2020-08-11

网络安全和信息化 2020年8期
关键词:乱码配置文件网页

编者按:笔者在利用CentOS 7部署MRTG软件时,遇到显示中文乱码问题,本文针对这两个问题及解决方法依次展示给大家,当然其中也有部分问题并未得到彻底解决,也希望在这里能与读者分享探讨。

MRTG是一个监控网络链路流量负载的工具软件,原理是用SNMP协议得到设备的流量信息,并将流量信息按天、月或年的时间段绘制成PNG图片,最终通过浏览器访问HTML网页的方式展现给用户,以非常直观的形式显示流量信息。

CentOS 7硬件环境及系统环境

物理机:CPU为Silver 4114,内存为256 GB、系统为ESXI 6.5。

虚拟机:CPU为2核,内存为2 GB,硬盘:50 GB、系统为CentOS 7.X。

网络配置

如下所示:

保存退出并重启网卡,更新系统,更新后显示CentOS Linux release 7.8.2003(Core):

Apache搭建

yum -y install httpd

安装完成后删除默认欢迎页面:

rm -f/etc/httpd/conf.d/welcome.conf

修改默认配置文件:

vi/etc/httpd/conf/httpd.conf

# 行 95:变更

ServerName mrtg.abc.com:80

# 行 151:变更

AllowOverride All

# 新增

ServerTokens Prod

KeepAlive On

保存退出,重启服务,并将服务设置成开机运行:

systemctl start httpd

systemctl enable httpd

将HTTP服务加入防火墙:

firewall-cmd --addservice=http --permanent

重启防火墙配置:

firewall-cmd --reload

创建测试页面查看Apache搭建是否成功:

SNMP搭建

安装SNMP工具及MRTG:

yum -y install netsnmp net-snmp-utils mrtg

修改SNMP配置文件用于为后续MRTG提供准备:

vi/etc/SNMP/snmpd.conf

取消默认的public团体名:

# 行 41:增加注释

#com2sec not Config User default public

设置本地团体名和允许被SNMP客户端访问的网段团体名为HelloWorld:

# 行 74,75:取消注释及变更

# 将需要访问的网络命名为mynetwork

# 更新团体名,为了安全期间建议不使用public和private

图1 第一次生成MRTG详细流量文件可能出现的部分信息

com2sec local localhost HelloWorld

com2sec mynetwork 192.168.1.0/24 HelloWorld

# 行 78,79:取消注释及变更

group MyRWGroup v2c local

group MyROGroup v2c mynetwork

# 行 85:取消注释

view all included .1 80

# 行 93,94:取消注释及变更

access MyROGroup ""v2c noauth exact all none none

access MyRWGroup ""v2c noauth exact all all all

保存退出,重启SNMP服务并设置开机启动:

systemctl start snmp

systemctl enable snmp

将SNMP添加到防火墙,重新加载防火墙配置:

firewall-cmd --addservice=snmp --permanent

firewall-cmd --reload

测试SNMP是否正常。

MRTG部署

通过指令生成MRTG配置文件。

修改MRTG配置文件,保存退出:

vi/etc/mrtg/mrtg.cfg

# 行 8:取消注释及变更

WorkDir:/var/www/html/mrtg

# 行 16:取消注释

Options[_]:grow right,bits

在/var/www/html下新增MRTG文件夹:

mkdir/var/www/html/mrtg

通过指令来生成MRTG详细流量文件:

for ((i=1 ; i <=3 ;i++)); do env LANG=C mrtg/etc/mrtg/mrtg.cfg; done

第一次执行可能出现如图1所示信息,再执行一次就正常了。

通过MRTG工具生成HTML到index.html上,指令无报错即说明成功了:

打开浏览器可以查看到MRTG主页。此时打开http://192.168.1.100/mrtg时是Forbidden状态,此时设置MRTG站点的访问权限。将需要访问MRTG流量监控的客户端添加到网站权限中,保存后退出:

重启httpd服务。然后再次打开http://192.168.1.100/mrtg,访问正常。

此时整体页面不会自动刷新,可以通过增加定时任务刷新MRTG监控流量,设置5分钟刷新一次:

图2 详情页面出现乱码

保存后退出,开启crond服务并开机运行。

问题1:MRTG设置中文显示,但是网页未显示。

整体界面都是英文,用户希望得到汉化,笔者通过查询资料,了解到需要修改配置文件:

vi/etc/mrtg/mrtg.cfg

# 新增

Language:chinese

重新生成MRTG索引页及详情页:

但打开网页后会发现详情页面变成了乱码,如图2所示。

查看该详细页面文件编码,显示ISO-8859,属于中文正常文件编码。再查看该HTML中meta标签,显示charset=“gb2312”也正常。

笔者进一步想到Web容器Apache编码设置:

vi/etc/httpd/conf/httpd.conf

# 行 316:变更

AddDefaultCharset OFF

默认编码是UTF-8,此时将其改成OFF,让Apache以网页源代码中声明的编码格式显示。

保存并退出后,重启httpd服务,查看详细页面,显示正常。如图3所示。

问题2:网页显示出中文,但是通过软件SecureCRT连接后使用vi、vim编辑文件时乱码。

网页已正常访问,通过SecureCRT查看网页代码以及将软件编码设置成UTF-8仍是乱码,如图4所示。

设置vi和vim配置文件追加编码utf-8及gbk:

最后终于成功解决了在secureCRT下使用vi和vim网页源文件乱码问题,如图5所示。

反思

通过MRTG来查看出口核心交换机流量是十分有必要的,它能直观地反映出当前流量状况,为排摸流量异常提供了有效的数据支撑。不仅如此,MRTG还可以通过SNMP协议获取设备OID信息,那么我们也可以加以推广,将部分重要设备CPU、内存及硬盘等信息加入MRTG的监控选项中。

在搭建MRTG系统时,笔者遇到了中文显示问题,在解决问题过程中,了解到文件编码、网页代码中编码申明及容器编码等各类网页前端编码问题,也学习到编辑器相关编码知识,但其中有两方面内容并未解决:

图3 重启httpd服务并查看详细页面显示正常

图4 查看网页代码及设置成UTF-8后仍显示乱码

图5 成功解决乱码问题

1.将MRTG所生成的图片及网页文件存放到其他目录,比如/data/mrtg中,此时会出现手动输入生成文件指令能正常输出,但通过crond定时任务执行相同指令时出现了问题,经过日志查询显示无权限,之后尝试过将/data/mrtg文件夹权限设置成777,但无效。

2.在SecureCRT软件显示中文正常后,通过虚拟机本地tty连接发现中文变成了小方块,尝试修改locale配置文件,但是没有成功。上述两个问题将进一步查找相关资料。

猜你喜欢

乱码配置文件网页
基于Docker的实时数据处理系统配置文件管理软件的设计与实现
从Windows 10中删除所有网络配置文件
基于HTML5与CSS3的网页设计技术研究
对症下药解决多种乱码难题
用软件处理Windows沙盒配置文件
这些真的不是乱码,是汉字
互不干涉混用Chromium Edge
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
搜索引擎怎样对网页排序