目录

简介

我接触OpenWrt也不长,之所以关注log这个东西,主要是前段时间路由器总是断线,所以想要分析一下原因.

logread

在OpenWrt中可通过logread命令查看运行时的log日志,我一般都是通过ssh进行远程访问路由器的.
不过每次查看log,都要登陆进去,然后不断的敲logread也是很麻烦的,
正好OpenWrt的web设置界面中有设置上传日志的选项,在我这是 系统—>日志里面

上传到远程rsyslog服务器

由于之前每次看日志都不太方便,我们可以将日志文件上传到本地的Linux机器中,
我一般使用的是Ubuntu/Debian系的,现在一般的Linux发行系统都已经预装了rsyslog了,
因此我们只需要配置一下即可.

配置rsyslog

首先配置服务端,也即是我们使用的Linux系统主机.
$ sudo vim /etc/rsyslog.conf
找到

1
2
3
4
5
6
7
# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")

# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514"

一般只需要打开TCP就好,不过为了还有其他用途可以将UDP的也全部都打开,除去相应的#注释即可.
修改后的样子

1
2
3
4
5
6
7
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514"

这样还没完,我们还需要配置log存放的位置.
进入/etc/rsyslog.d/目录,新建一个router.conf文件
编辑添加

1
2
:fromhost-ip, isequal, "192.168.1.1" /var/spool/rsyslog/router.log
&~

192.168.1.1表示路由器的地址
后面路径就表示了上传到本地主机的log地址了
最后的符号&~表示了一个重定向规则,被用来告知rsyslog守护进程停止对日志消息的进一步处理,并且不要在本地写入。
如果没有使用该重定向规则,那么所有的远程消息都会在写入上述描述的日志文件之外同时被写入到本地日志文件,这就意味着日志消息实际上被写了两次。

然后如果还有什么特殊需求的话,比如:像系统日志一样,自动打包之类的
可以在/etc/logrotate.d/目录下面新建文件,然后进行添加.
在这里我偷个懒,直接写在rsyslog文件里面.

$ sudo vim /etc/logrotate.d/rsyslog
随便找一个规则,将我们路由器log存放的地址写在上面即可

最后还有,需要重启一下rsyslog系统服务
$ sudo systemctl restart rsyslog.service

查看一下是否在监听
$ sudo netstat -tulpn |grep rsyslogd

以上服务端配置好了,客户端也就是路由器那里就很好配了.
可以通过可视化的web界面进行管理,也可以直接命令行登陆进路由器,然后改配置文件的方式.

下面是我的路由器管理界面

log
log

改配置文件的话,就直接ssh连进路由器
# vim /etc/config/system
找到config system在下面添加即可

1
2
3
4
5
6
7
config system
option hostname 'OpenWrt'
option conloglevel '8'
option cronloglevel '8'
option log_ip '192.168.1.247'
option log_port '514'
option log_size '200'

然后保存并应用,过一会就可以在本机上看到路由上的log了

处理问题

上面说了一大堆log的配置,最终的目的只是方便分析日志.而我们分析日志就是为了解决问题的...
分析日志:
发现有很多的这种信息
daemon.warn odhcpd[903]: A default route is present but there is no public prefix on br-lan thus we don't announce a default route!
这个是因为开启了IPv6的原因,我们用不上,关掉即可

总结

我感觉问题不太可能是出现在IPv6上面的,虽然我关掉后确实断线的情况好了很多..
通过这次鼓捣,让我又对OpenWrt熟悉了不少,当然最大的收获还是rsyslog了,
之前虽然知道有这么个东西,但一直没有机会去用上它,配置过一次后感觉以后就熟悉多了.