分类
Linux

CentOS6.5 64bit如何安装DNS服务dnsmasq加速网站访问

dnsmasq是个非常小巧的dns服务器,可以解决小范围的dns查询问题,建议内网终端不要超过50台主机为佳。刚刚调整了一下内容,重新发布此文章。
Dnsmasq_icon.svg

Dnsmasq是一个很实用的小工具,解决局域网的需求看来非常合适,特别是网关和防火墙上。ITGeeker建议可以使用它来:

  1. 优先使用本地自定义dns和host,可以针对不同的网站使用不同的DNS,以提高网页打开速度。
  2. 提供dhcp服务,方便内网主机和移动设备管理。

1. YUM安装方法

非常方便,但版本比较低,目前只能安装dnsmasq x86_64 2.48-13.el6,但官方最新版已到2.71

yum install dnsmasq

2. 编译安装dnsmasq

cd /tmp && wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.71.tar.gz 
tar -zxvf dnsmasq-2.71.tar.gz && cd dnsmasq-2.71
make install
#也很容易,安装完成

cp dnsmasq.conf.example /etc/dnsmasq.conf
mkdir -p /etc/dnsmasq.d   #这个目录备用

3. dnsmasq配置

主要有三个文件:

/etc/dnsmasq.conf
/etc/dnsmasq.d/resolv.dnsmasq.conf
/etc/dnsmasq.d/dnsmasq.hosts

第一个是系统默认必须的,后面两个可以自行建立,放置的路径也可以根据自己需要定义。

vi /etc/dnsmasq.conf

自带的配置文件有很多说明,可以直接在上部加入以下内容,保留之前的可以当帮助文件用,也可直接删除原先的内容。

#ITGeeker每次开启都提示错误,目的是让dnsmasq读取目录内所有配置文件
#conf-dir=/etc/dnsmasq.d

#让dnsmasq读取你设定的resolv-file
#no-resolv
resolv-file=/etc/dnsmasq.d/resolv.dnsmasq.conf

no-poll
strict-order

#不读取系统hosts,读取你设定的
no-hosts
addn-hosts=/etc/dnsmasq.d/dnsmasq.hosts

#dnsmasq日志设置
log-queries
log-facility=/var/log/dnsmasq.log

#dnsmasq缓存设置
cache-size=1024

#单设置127只为本机使用,加入本机IP为内部全网使用
listen-address=127.0.0.1,192.168.188.199

在/etc/dnsmasq.d目录下新建2个文件

vi /etc/dnsmasq.d/resolv.dnsmasq.conf

国内快的DNS也就这些了,谷歌的8.8.8.8这两天有点慢,甚至ping不同,可能和香港和越南的光纤断裂有关,所以暂时注销了。

#nameserver 127.0.0.1   不应该添加
nameserver 202.96.209.5
nameserver 202.96.209.133
nameserver 223.5.5.5
nameserver 223.6.6.6
nameserver 114.114.114.114
nameserver 8.8.4.4
#nameserver 8.8.8.8

vi /etc/dnsmasq.d/dnsmasq.hosts

给出以下样本,ITGeeker建议自己制作一个最新好用的。

173.194.120.88   0.docs.google.com
216.239.32.39    0.docs.google.com
173.194.120.88   0.drive.google.com
216.239.32.39    0.drive.google.com
......

dnsmasq启动脚本

编译安装比较麻烦的就是这件事了,当然也可直接手动操作:

启动: /usr/local/sbin/dnsmasq
验证:netstat -tunlp|grep 53
关闭:killall -KILL dnsmasq
重启: pkill -9 dnsmasp && /usr/local/sbin/dnsmasq -h

还是编辑一个启动脚本吧

vi /etc/init.d/dnsmasq

 

#!/bin/sh
#
# Startup script for the DNS caching server
#
# chkconfig: - 49 50
# description: This script starts your DNS caching server
# processname: dnsmasq
# pidfile: /var/run/dnsmasq

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

dnsmasq=/usr/local/sbin/dnsmasq
[ -f $dnsmasq ] || exit 0
RETVAL=0

# See how we were called.
case "$1" in
  start)
        if [ $UID -ne 0 ] ; then
            echo "User has insufficient privilege."
            exit 4
        fi
        echo -n "Starting dnsmasq: "
        daemon $dnsmasq $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dnsmasq
        ;;
  stop)
        if test "x`pidof dnsmasq`" != x; then
            echo -n "Shutting down dnsmasq: "
            killproc dnsmasq
        fi
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dnsmasq /var/run/dnsmasq.pid
        ;;
  status)
        status dnsmasq
        RETVAL=$?
        ;;
  reload)
        echo -n "Reloading dnsmasq: "
        killproc dnsmasq -HUP
        RETVAL=$?
        echo
        ;;
  force-reload)
        # new configuration takes effect only after restart
        $0 stop
        $0 start
        RETVAL=$?
        ;;
  restart)
        $0 stop
        $0 start
        RETVAL=$?
        ;;
  condrestart)
            if test "x`/sbin/pidof dnsmasq`" != x; then
                $0 stop
                $0 start
                RETVAL=$?
            fi
            ;;
  *)
        echo "Usage: $0 {start|stop|restart|reload|condrestart|status}"
        exit 2
esac

exit $RETVAL

Tips:如果你是本地编辑上传的,提示找不到文件记得

set ff=unix

再赋予执行的权限

chmod +x /etc/init.d/dnsmasq

现在可以启动和设置自动启动了

service dnsmasq restart
chkconfig dnsmasq on

验证是否正确启动

netstat -tunlp|grep 53

验证是否正确工作

需要命令dig和nslookup,如果没有,安装一下

yum install bind-utils

记得在iptables防火墙开放53端口,tcp和udp都要开

vi /etc/sysconfig/iptables

-A INPUT -p udp -m state --state NEW --dport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 53 -j ACCEPT

将其他机器的DNS换成dnsmasq所在服务器的IP,这是关键,否则没人使用你的DNS服务。

利用dig或者nslookup参看DNS Server是否是

127.0.0.1或者192.168.188.199

大功告成!!!

/etc/dnsmasq.conf中dns和address配置范例

如果你想使用dnsmasq的泛解析功能,ITGeeker这里提供一些范例供你参考。

设定某些网址使用国内的DNS服务器,这里选用了上海最快的上海电信服务器,你也可以选择适合你的最快DNS服务器地址。

#Specify DNS server China
server=/www.freegeeker.com.cn/202.96.209.5
server=/itgeeker.net/202.96.209.5
server=/geekerconsulting.com/202.96.209.5
server=/baidu.com/202.96.209.5
server=/cn/202.96.209.5
server=/taobao.com/202.96.209.5
server=/weibo.com/202.96.209.5
server=/weibo.cn/202.96.209.5
server=/xunlei.com/202.96.209.5

#Specify DNS server out of china
server=/google.com/8.8.4.4
server=/twitter.com/8.8.4.4
server=/facebook.com/8.8.4.4

dnsmasq广受好评的泛解析,可以设定局域网内的特殊网址解析,禁止的ip解析等

#local itgeeker
address=/local.itgeeker.com/192.168.188.199

#forbid ip list
#1. video play website
address=/.youku.com/192.168.188.199
address=/.tudou.com/192.168.188.199
address=/video.sina.com.cn/192.168.188.199
address=/.ku6.com/192.168.188.199
address=/.funshion.com/192.168.188.199
address=/video.sina.com.cn/192.168.188.199
address=/video.sina.com.cn/192.168.188.199
address=/.youku.com/192.168.188.199
address=/.tudou.com/192.168.188.199
分类
Apple

MacBookPro网络恢复折腾记 如何使用快速Apple DNS

1. 五国界面,不断重启 – 事故的起因

本人使用的是MacBookPro 2012年下半年的型号,因为想调试Python程序,想在Mac OS里部署PyCharm,于是用HomeBrew安装更新,要求重装Xcode才能安装一些依赖,于是乎从APP Store直接安装了最新版本的Xcode7,之前是Xcode6.x.

就在这个时候,笔记本产生假死状况,等待许久后,任何按键还是没有任何反应。于是乎按住电源键5秒强行关机,也不是第一次这么干了,结果重启后,就是下面的5国语言,并不断循环的重启。

macbookpro-5-country

2. 尝试“急求” 修复未果

osx_recovery_command

 

 

按住电源按键5秒钟关机,然后再按一下启动,按住Commond + R键,直到出现苹果logo和loading进度条,放开,进入恢复系统界面。

yosemite-restart-recovery_mode-reinstall_os_x

然后选择“磁盘工具”, 选择系统盘,点击“急救”,过一会系统告诉你已经扫描了巴拉巴拉,修复了巴拉巴拉,然后我就重启电脑,结果不是5国语言了,变成一个带问号的文件夹图标了。

mac-folder-questionmark-screen-icon

重新进入恢复模式,结果找不到原先的系统盘了,于是计划重新安装系统,有两个选择:

  1. 制作USB安装盘进行安装
  2. 使用系统自带的网络恢复进行自动安装

PS:其实这里走了岔路,原因就是过分相信苹果的质量了,查阅苹果官方资料 关于 Mac 启动时您看到的屏幕 里面说这个原因是找不到启动磁盘的原因,到最后我才知道当时我的MacBooKPro的硬盘线出现问题了。如果换了硬盘线都可以不用重装系统了。

3. U盘制作安装盘,无果

尝试了一下网络恢复,30M的光钎电信宽带,速度很慢,只好选择U盘安装,Google一番下载了一些OS X 10.14 EI Capitan DMG文件,按照网上的方法用了很多种方法,试了好几个USB,有3.0的有2.0的,都无法启动安装盘,甚至用了老版本的OS X 10.9 DMG也没成功,在搜索中偶有看到,有人说苹果10.7之后不支持USB安装了。

网上大多教程都是在Mac OS系统里如何制作USB安装盘的,但往往情况是,我们的OS系统已经崩溃,所以只能在Windows底下制作Mac OS X安装盘,网上唯一的工具就是TransMac,网上搜一下就有下载的,每次制作都要花上好长时间。

结果没有一次是成功的,苹果官方也没有关于制作安装U盘的指导文件。

4.无奈选择网络恢复 折磨的开始

不管是Option按键或者Commond+R,都能进入网络恢复,因为此时MacBookPro找不到启动盘,就会自动启动网络恢复功能,只要你选择无线WiFi,输入密码即可。如果是插入有线的网线,记得打开路由器的DHCP,否则容易1202F等类似错误,因为MacBook Pro没被分配IP就无法联网。

乍一看,苹果还是很人性化,免去其他麻烦,直接一联网就解决安装问题了,可这恰恰就是苹果不重视中国用户的地方,在中国实用网络恢复的噩梦。因为速度很慢,Apple也不在中国加个CDN之类。网上一搜关于MacOS网络恢复的问题,都是关于抱怨速度太慢的问题,太多的人都在被苹果蹂躏,花了同样的价格,却享受不到同样的服务质量。(另外不重视中国用户的地方是银联绑定的问题,我们稍后再表。)

  1. 苹果的恢复模式是首先给你安装恢复程序,好了就是上面恢复模式的界面,我试了一下基本要1-3个小时可以下载装好,有时也失败。中间我有一次装好恢复程序后,换了个硬盘,重启后又要重新下载,为什么不能就装到硬盘呢?此处浪费了大把时间。
  2. 装好恢复程序后,就可以点击重新安装OS X了,链接网络,验证后就可以开始安装了。但不是给你安装新版本OS,是你最初笔记本自带的系统版本。这个体积很大,心理早有准备,但苹果服务器的龟速还是打败了我。

试了好多次,Wi-Fi,有线都试了,通常过了很久,然后就告诉你失败,会有XXXXF等错误代码;要不就是告诉你还要100多个小时,实在太慢。后来只好开着电脑整夜的下载,结果到第二天还只有一半多一点点,还预估要50多个小时,崩溃!

5.寻求加速方法 勉强安装成功(分享的重点)

尝试了两种比较靠谱的方法:

  1. 使用Apple DNS host加速。作者github:https://github.com/gongjianhui/AppleDNS.git
  2. V2EX DNS加速,据说专门解决苹果速度慢的问题

5.1 Apple DNS

第一种方法,需要python环境,需要一点点技术背景,但是不管电信/联通/移动的网络都可获得最快的苹

果IP地址,具体可参考作者github页面。ITGeeker发现增加这些后,对手机App Store加速明显,但网络恢复加速似乎没多大帮助。

况且这种方法需要能修改路由器的IP地址,或者你的路由器能使用dnsmasq。我的Linksys路由器刷了openwrt,所以可以添加。以下是我的30M中国电信宽带上海获得的IP加速,时间20160502:

# Build Date: 2016-05-02T09:38:55.136000 (UTC)
# API-1-ChinaNetCenter [ChinaNet] (Avg RTT: 7.950ms)
115.231.23.17   se.itunes.apple.com
115.231.23.17   su.itunes.apple.com
115.231.23.17   upp.itunes.apple.com
115.231.23.17   play.itunes.apple.com
115.231.23.17   client-api.itunes.apple.com
# API-2-ChinaCache [ChinaNet] (Avg RTT: 3.700ms)
180.153.126.252 itunes.apple.com
180.153.126.252 init.itunes.apple.com
# API-HK-Akamai-1 [HongKong0] (Avg RTT: 135.150ms)
184.87.97.50    search.itunes.apple.com
# API-HK-Akamai-2-AMRadio [HongKong1] (Avg RTT: 140.421ms)
104.89.141.101  radio.itunes.apple.com
104.89.141.101  radio-activity.itunes.apple.com
104.89.141.101  radio-services.itunes.apple.com
# Appple Music Streaming and iOS/OS X Apps [ChinaNet-ChinaNetCenter] (Avg RTT: 8.650ms)
183.134.12.71   aod.itunes.apple.com
183.134.12.71   mvod.itunes.apple.com
183.134.12.71   streamingaudio.itunes.apple.com

 

5.2 V2EX DNS

官方介绍:如果你的 iPhone,iPad 或是 Mac 访问 App Store 时很慢,下载很慢,那么试试将 DNS 设置为 V2EX DNS 吧,可以大幅度提高你的设备从 App Store 下载数据的速度。

178.79.131.110

只需要把你的本机网络连接的DNS设为此IP地址就可以了。我当时加速心切,两种加速都添加了。

5.3 如何让Mac OS恢复程序通过指定DNS来下载

在电脑启动的时候按住Commond+R、进入系统恢复界面后、打开实用工具、终端、输入:

networksetup setdnsservers wi-fi 178.79.131.110

回车确认

原理就是通过指令修改当前Wi-Fi的DNS.如果是用网线那就需要输入:

networksetup -setdnsservers ethernet 178.79.131.110

如果不知道自己连接网络设备的代号,就用命令查看一下吧:

networksetup -listnetworkserviceorder

现在终于可以比较“快速”的装完恢复程序,大概一个多小时,我试了好几次都差不多这个速度。重新安装OS X的速度也缩短到15个小时左右,终于再开了一个晚上的电脑,第二天一早发现已经安装成功了。也不知道是该开心呢,还是只是幸运而已。

6. 后记 一点提示

装完之后因为版本比较低10.7 Lion版本,那就赶紧APP Store免费升级,结果碰到错误提示:

此版本的OS X 不支持银联。

这时需要在App Store精选页的右上角选择账号进去才能选择 “无” 也就是不绑定信用卡,在其他地方或者apple.com登入账号都是无法去掉信用卡设置的。

这其实是苹果的一个无限循环错误,不让升级,也不让绑定,真不知道这个逻辑谁想出来的。

重新安装的时候,还是没有发现原先的SSD,于是我装到了另外一个分区,而且换了另外一个SSD也找不到,但用硬盘盒装上后插到电脑就能使用,确认硬盘肯定没问题。于是上淘宝买了一根硬盘线,54元,换上后,终于可以找到SSD,然后使用Carbon Copy Cloner 4.1.6 clone了HD硬盘的整个分区到SSD,启动电脑,按住Option,选择SSD的分区,顺利启动。

这时你还会发现一个问题,那就是SSD硬盘速度很慢,原因是Apple对第三方SSD没有自动开启Trim功能,那就在终端输入以下命令吧:

su trimforce enable

如果看到su:sorry错误,那就先打开系统的Root登入权限吧,如何操作?google吧!

 

分类
技术奇客

我为什么从Andriod转投iOS 手机云服务的奇客观点(原创)

选择iOS的原因,主要是iCloud和苹果系统对CalDav&CardDav的原生支持。这里和大家分享一下目前各种手机云服务的差别和使用问题。

主要对比的服务有:

  • iCloud
  • Gmail + Google Calendar + G+ Photo + Google Drive
  • OneDrive + Outlook.com + OneNote
  • 腾讯邮箱+微云+QQ同步助手
  • 百度云

对比的服务包括:

  • 通讯录(包括CardCav)
  • 日历及共享(包括CalDav)
  • 提醒事项(包括IMAP Task列表支持)
  • 邮件
  • 文件存储
  • 照片云同步和分享
  • 在线Office 文档编辑
  • 文件同步
  • 备忘录(记事本)同步

iPhone-ITGeeker

MWC 2015该发布的新手机也差不多了,三星的S6改变了很多,但几乎所有的报道都是谈它的硬件如何如何。但硬件再怎么变,似乎也就那样。从2009年用G1开始,到现在已经6个年头的android了,终于决定要投奔iOS了,终究原因还是因为Google在中国访问不顺畅。

iCloud – 简便的一体化手机云服务

另外,在android系统,至今还没有那个手机云服务能够提供像iCloud这样简便的一体化云服务:通讯录(包括CardCav),日历及共享(包括CalDav),提醒事项(包括IMAP Task列表支持),邮件,文件存储,照片云同步和分享,在线Office 文档编辑,文件同步,备忘录(记事本)同步。

iCloud是iOS内置的,只需一个账号登录就可以完全享受这些服务,而其它的服务都要安装2-3个应用才能实现这些功能,甚至还无法满足这些服务。

Google谷歌 – 强大的云组合Gmail + GPlus Photo + Google Drive

Android的谷歌可以通过:Gmail + G+ Photo + Google Drive来实现,但是在国内很难顺畅使用,如果和我一样使用的是移不动的官方版3G/4G手机,那是阉割的没有半点Google服务。入手行货之后,首先就是Root,然后就是刷入GAPPS(谷歌应用包),然后基站定位功能等等,那是一个折腾啊……而且2014年底开始,翻墙越来越不容易,翻过去了还是不再稳定,家里的路由器刷了DD-WRT,公司的服务器用了dnsmasq,虽然翻墙问题不大,但还是时常不稳定,那是一个无奈……年龄渐长,不愿折腾了……

Google一直号称是开发的平台,本身Gmail也支持CalDav和CardDav,但偏偏android手机应用没有能很好支持这两个服务的。维基百科有一篇专门列出了很多支持这两个协议的软件Comparison of CalDAV and CardDAV implementations  但几乎所有这些对android都不能很好的支持,包括一些收费的应用,实在匪夷所思。难道谷歌认为,android上的就只用Gmail吗?如果我也要使用其它CalDav或者CardDav呢?

现在公司的平台多支持使用CalDav和CardDav,使用android让我大费周折。Caldav需使用sol日历同步才行,有时候不行还得先同步到iCloud,然后再用iCloud同步软件同步到android手机,那是一个曲折……在iPad上试过CalDav和CardDav,原生支持,非常好用。

Microsoft微软 – 蜗牛的速度和外包开发的应 OneDrive + Outlook.com+OneNote

OneDrive(之前称SkyDrive)结合Outlook.com(之前称Hotmail)基本也能满足这一要求,当然Task同步还是没有的。备忘录(记事本)可以使用更强大的OneNote。但是速度奇慢,每次应用的登录其实都是web页面的登录,不人性化不说,使用体验很差。另外Outlook一直外包给一家叫Seven的手机应用开发商开发,始终用起来不太顺手,或者功能欠缺,更新升级很慢。2014年开始,Onedrive也被封的差不多,需要翻墙才能使用正常速度访问。加之和win8.1的同步协助几乎没有,体验感就更加若有若无了。OneDrive在android端上传同步图片还是稳定的,但在Win8.1桌面打开的速度是很慢的,而且Morden界面很不友好。

Tencent腾讯 – 功能限制多,弱爆了!邮箱+微云+QQ同步助手

QQ邮箱做的越来越好了,但和Gmail差距那还是一个大,对于里面的标签和邮件规则的操作竟然每天还是有次数限制,而且如果删除一些规则和标签,很容易就会出现会混乱。让人迷惑的是,腾讯竟然还急不可耐的推出收费服务。

去年底Gmail被封之后,QQ邮箱推出可以收发Gmail邮箱的服务,但是速度奇慢,不好的服务,不要推出来了吧!

QQ日历可以和微信的好友分享还不错,适合国情。但是邮箱里建立的日历竟然没法在QQ邮箱内共享给好友,奇葩!Task列表还是不支持,记事本功能还是有简单的,Office文档在线编辑还是不支持的,倒是可以用WPS来代替。

照片和文件同步需要使用微云,神奇的是微云竟然现在手机端只能同步2000张左右照片,就不让同步了,无语……再有就是微云同步速度很慢,很多文件无法同步成功,但也不告诉你为啥?微云很大方,像ITGeeker总共有11282.84G空间,不过不让同步,你也用不着。

QQ邮箱的通讯录编辑功能弱爆了,谷歌通讯录导过来要丢掉好多信息的,不过支持exchange同步,让android手机方便了不少,当然也支持caldav和carddav,但支持同步的及时性比较差,容易出错,搞不清楚有没有同步好,用着还是不放心。

好在后来更新的QQ同步助手速度有了质的提升,但又不支持即时同步,每次要手动同步,那是一个上传,又要下传,出错概率奇高,合并重复候选人功能又似乎是另一个鸡肋,不过倒是觉得在提升,希望继续加油!

百度云

和QQ同步一样除了收集你的通讯录,通话记录,短信息,照片之外,没有什么能帮你提高手机使用效率的。百度云没有日历功能,国人似乎对日历的使用要求比较低,很多人可能都还不习惯使用,所以也没有好的应用软件来引导我们来使用,和日历有些类似的GTD类的应用好的也是国外的为主,比如andy.do。

百度还没有邮箱服务,这个问题不是很大,可以用别的,Task就更不用提了,百度没有想帮你提升效率,是在备份(收集)你的信息。

记事本是有的,也可以收集网上的感兴趣页面,管理方面还是有欠缺,还是用印象笔记比较好。虽然印象笔记也有收费版,但免费版还是非常够用的,同步速度快,几乎不会漏掉收藏的内容。

百度云的照片备份速度是非常值得一提的,快!!!还有空间大,容易分享给朋友。但应用在android手机上的启动速度非常期待提升,每次在android手机打开百度云,那是一个等待啊。

Office同样可以用wps代替,wps功能还不错,而且永久免费。百度云有云管家和同步盘,云管家用来下载网上别人分享的大文件,速度快,很好用,还能备份一些特定目录和文件。但同步盘就没好好同步过,不知是否我的文件太多,几乎同步不动。题外话:

微云至少还能稍微同步一些,世界最好最强的Dropbox不能用,Google Drive不能用,OneDrive抽风越来越严重,国产的都同步不了,只能用自己的Owncloud和BTSync去中心化同步了。

怀念Android的好

虽然使用了iOS可能会失去一些非常喜欢的应用,比如gReaderPro,结合feedly使用,是一个比谷歌残忍杀害的Google Reader还好用的Feed阅读器,ITGeeker一直使用这个阅读器,加星标后同步到Pocaket二次处理,非常方便又稳定,国外的feed都能打开。使用iOS后只能凑合使用feedly不怎么友好界面的原生应用了。

展望将来的Android

如果谷歌服务能回到中国,我觉得还是会用回android的,毕竟谷歌的服务还是很完整,体验相当到位的,如果拆分了各项服务,谷歌的应用还是比苹果强的。

为表示期待,在更换到iOS之前,用钛备份完整备份了Android的资料,等G回来啊!

分类
日志分析

如何使用logrotate分割管理dnsmasq的日志 CentOS6.5 64bit

logrotate 程序是一个日志文件管理工具,Centos系统基本都默认已安装。它可以用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。也可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。

logrotate

目前logrotate的版本是logrotate-3.7.8,它的默认配置文件及中文说明:
cat /etc/logrotate.conf

 

# see "man logrotate" for details
# 所有的日志文件每周转储一次
weekly

# 转储的文件保留4份,也就是4周的文件
rotate 4

# 转储日志后,logrotate自动创建新的日志文件
create

# 给转储的日志文件加上日期后缀
dateext

# 压缩日志文件。默认是注释掉的
#compress

# 读入/etc/logrotate.d目录下的日志转储参数,当系统中安装了RPM软件包时,RPM包的日志转储参数一般会自动建立在/etc/logrotate.d目录下
include /etc/logrotate.d

# 对/var/log/wtmp日志转储的配置
/var/log/wtmp {
    monthly
    create 0664 root utmp
     minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

 

dnsmasq日志分割案例

1. 首先需要开启dnsmasq的日志记录

vi /etc/dnsmasq.conf

log-queries
log-facility=/var/log/dnsmasq/dnsmasq.log

2. 建立logrotate的配置文件

vi /etc/logrotate.d/dnsmasq
输入:
/var/log/dnsmasq/dnsmasq.log {
notifempty
weekly
dateext
rotate 58
sharedscripts
postrotate
[ ! -f /var/run/dnsmasq.pid ] || kill -USR2 `cat /var/run/dnsmasq.pid`
endscript
}

参数说明:

notifempty :如果是空文件的话,不转储。
weekly :日志文件每天转储一次。
rotate 5 ;转储文件分为5份。
postrotate/endscript :日志转储后执行的脚本。

完整参数参考

compress            通过gzip 压缩转储以后的日志
nocompress        不需要压缩时,用这个参数
copytruncate       用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate   备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate              不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address     专储时的错误信息发送到指定的Email 地址
ifempty                 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty            如果是空文件的话,不转储
mail address         把转储的日志文件发送到指定的E-mail 地址
nomail                  转储时不发送日志文件
olddir directory     转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir                转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript     在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript   在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily                     指定转储周期为每天
weekly                 指定转储周期为每周
monthly                指定转储周期为每月
rotate count          指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
size size               当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB(sizek)或者MB (sizem).

3. 执行logrotate

/usr/sbin/logrotate -vf /etc/logrotate.conf

logrotate命令格式解释:
logrotate [OPTION...] <configfile>
-d, --debug :debug模式,测试配置文件是否有错误。
-f, --force :强制转储文件。
-m, --mail=command :发送日志到指定邮箱。
-s, --state=statefile :使用指定的状态文件。
-v, --verbose :显示转储过程。

如果没有报错,生成了转储文件,dnsmasq正常运行,就OK了。

4. cron定时自动执行logrotate

在/etc/cron.daily目录下有logrotate执行的脚本。你可以通过crontab程序每天执行一次。也可以自己设定特定的计划来执行自己的日志切割脚本。
测试一下脚本先:
sh /etc/cron.daily/logrotate
vi /etc/crontab
33 3 * * * root run-parts /etc/cron.daily