DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种有效的IP 地址分配手段,已经广泛地应用于各种局域网管理。它能动态地向网络中每台计算机分配唯一的IP 地址,并提供安全、可靠、简单和统一的TCP/IP 网络配置,确保不发生IP 地址冲突。当在服务器上启用DHCP 后,我们希望了解服务的运行情况,希望看到详细日志。可以通过下面的命令了解到DHCP 服务的日志文件在什么地方。

以CentOS6.9系统为例,查看是否安装了DHCP服务,命令如下:

rpm -qa | grep dhcp

DHCP 服务的默认日志不会输出到指定文件,而是和NFS 服务一样,输出到/var/log/messages 文件中,成了日志的大杂烩,不便于分辨,更不便于查找故障,一旦messages文件遭到破坏,DHCP 日志也跟着受影响。

那么还有没有其他什么文件,记录了DHCP 的分配IP 的信息呢?那就是/var/lib/dhcpd/dhcpd.leases文件,它记录了客户机分配IP的详细信息。下面我们进入/var/lib/dhcpd/dhcpd.leases这个文件看一下。

客户机每次获取地址后会产生如下信息:

每当发生租约变化的时候,都会在文件结尾添加新的租约记录,也就是说这个文件是在不断变化的。

从上面分析看到,DHCP 服务器的日志在messages和dhcpd.leases里分别有一部分,都不全面。如何将DHCP 的日志专门转储到特定文件中呢?下面介绍一种方法。

假设需要将日志记录在/var/log/目录下,则可以先用touch命令创建一个dhcpd.log 文件。

1)创建dhcpd.log 文件

touch /var/log/dhcpd.log

chmod 600 /var/log/dhcpd.log

2)修改/etc/dhcp/dhcpd.conf配置文件,在最后添加“log-facility”参数并赋值为local4,内容如下:

log-facility local4;

然后保存退出(不同Linux 发行版配置文件路径有所不同)。

3)在 /etc/rsyslog.conf 配置文件最后添加

# Save dhcpd messages also to dhcpd.log
local4.* /var/log/dhcpd.log

将下面这条

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

改为:

*.info;mail.none;authpriv.none;cron.none;local4.none      /var/log/messages

目的是把消息传送到/var/log/messages 文件,而不再向local4 传送。

注意要把下面这行语句注销:

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

4)重启Rsyslog 和DHCP 服务

service rsyslog restart

service dhcpd restart

tail -f /var/log/dhcpd.conf   # 即时输出文件变化后追加的数据

tail -f /var/log/messges

重启DHCP 服务即可生效,这时的日志文件就是DHCP服务器出现故障后排除错误的一个重要基础数据。所以需要定期对这个日志文件作好备份工作。否则,当这个日志意外丢失后,就很难查清DHCP 服务器的故障。

更改DHCP服务器默认日志存储位置的更多相关文章

  1. Abp + MongoDb 改造默认的审计日志存储位置

    一.背景 在实际项目的开发当中,使用 Abp Zero 自带的审计日志功能写入效率比较低.其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起.所以我们可以重新实现 Abp 的 IAuditi ...

  2. Docker】如何修改Docker的默认镜像存储位置

    江湖有多大,坑就有多多……我使用的服务器, 系统盘根目录只有20G, 默认Docker 的镜像文件是安装在/var/lib/docker 目录下的, 这样的话我根本装不了太多的镜像,之前遇到一种情况就 ...

  3. Mist 转移默认区块存储位置方法

    http://8btc.com/thread-35325-1-1.html 看了bunaifeiqq 发的帖子“Mist 转移区块存储位置方法”,综合帖子下面的发言,自己做了测试,可行.电脑系统win ...

  4. Python logging模块日志存储位置踩坑

    问题描述 项目过程中写了一个小模块,设计到了日志存储的问题,结果发现了个小问题. 代码结构如下: db.py run.py 其中db.py是操作数据库抽象出来的一个类,run.py是业务逻辑代码.两个 ...

  5. docker之容器日志存储位置及把运行日志记录至文件

    参考:https://www.cnblogs.com/YatHo/p/7866029.html docker启动后日志会在以下位置 /var/lib/docker/containers/容器ID/容器 ...

  6. 如何修改registry的默认的存储位置

    https://github.com/goharbor/harbor/issues/5375 the adminserver only can show the usage of /data, thi ...

  7. Linux下正确修改Docker镜像和容器的默认存储位置,亲测有效

    我们通过 yum 的方式安装完Docker环境后,它默认的存储位置是 /var/lib/docker,默认的 pid 存放位置是 /var/run/docker.pid. 如果仅仅是做测试,我们可能没 ...

  8. OpenStack(企业私有云)万里长征第六步——OpenStack网络及虚拟机存储位置

    一.前言 昨天又装了一遍OpenStack.码农这项工作就如同人生,永远有你想不到的意外在等着你,时而是惊喜时而是悲伤.在装的过程中倒是很顺利,只是在安装完成之后碰到了两个之前没有碰到的问题,这里记录 ...

  9. 修改 Docker容器 自动启动/不自动启动,挂载路径,存储位置

    有时候创建容器时忘了添加参数 --restart=always,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker conta ...

随机推荐

  1. 【SSH进阶之路】Hibernate系列——总结篇(九)

    这篇博文是Hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...

  2. Python的编码规范

    7. 什么是 PEP8? 8号Python增强提案,是针对Python代码格式而编写的风格指南 8. 了解 Python 之禅么? 通过 import this 语句可以获取其具体的内容.它告诉大家何 ...

  3. 如何录制高清GIF格式的图片

    如何录制高清GIF格式的图片 工具:傲软GIF 下载地址:https://www.apowersoft.cn/gif 特点:质量高,能够一帧一帧的修改 使用简单.就不说了.自行尝试.这里只是提供一个制 ...

  4. 如何利用Docker构建基于DevOps的全自动CI

    来自用户的DevOps实践分享,分享从开发代码到生产环境部署的一条龙操作的实践及经验, 包含工具技术的选型及考量.私有代码库与私有镜像库的应用等. (一)容器服务的Rancher选型 1.为什么说是下 ...

  5. 【记录】【MySQL】拼接字符串函数 CONCAT(str1,str2)

    CONCAT(str1,str2) 就是把str1和str2拼接

  6. tp中model加载机制

    $user_model = D('User'); 如果当前模块下面有UserModel,就优先使用当前模块下的UserModel.如果当前模块下没有UserModel,就回去Common模块下找Use ...

  7. Locust 性能测试工具安装使用说明

    1. 介绍     它是一个开源性能测试工具.使用 Python 代码来定义用户行为.用它可以模拟百万计的并发用户访问你的系统. 性能工具对比 LoadRunner 是非常有名的商业性能测试工具,功能 ...

  8. LeetCode 1089. 复写零(Duplicate Zeros) 72

    1089. 复写零 1089. Duplicate Zeros 题目描述 给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移. 注意:请不要在超过该数组长 ...

  9. [转帖]Proof Of Work 工作量证明

    Proof Of Work 工作量证明 https://www.cnblogs.com/zhang-qc/p/10451817.html 借鉴了 哈希现金(Hashcash)-1997年 英国密码学专 ...

  10. 56 容器(十)——Iterator迭代器遍历容器

    迭代器的获取 LIst与Set容器统一使用他们的对象.Iterator()方法获得迭代器对象,然后使用while循环配合迭代器的方法hasNext()及next()来遍历容器. List<Str ...