从零开始linux学习--DHCP trouble shooting(七)

        笔者最近在调整DHCP的服务,由于服务器是多网卡,因此涉及到dhcpd.conf的一些配置,在进行dhcpd业务测试重启的时候,笔者发现了一个很神奇的报错:

从零开始linux学习--DHCP trouble shooting(七)_第1张图片

        看到了报错说明是笔者没有在dhcpd.conf中写明创建的dhcp池到底在哪个网卡上分配。

从零开始linux学习--DHCP trouble shooting(七)_第2张图片

        参考了大鸟哥的linux学习手册,dhcpd –V查看了笔者的dhcp版本。

从零开始linux学习--DHCP trouble shooting(七)_第3张图片

        虽然鸟哥在说明中表示5.x以上版本不再需要。那对于笔者4.2.5版本呢?

        cat /etc/sysconfig/dhcpd

从零开始linux学习--DHCP trouble shooting(七)_第4张图片

        看到没有,大写的“WARNING”,还有下面的一段英文注释,找个词典一边翻译一边理解就好了~笔者在yum上找到的4.2的版本也是不需要向鸟哥一样声明端口的。# be aware that dhcpd listens *only* on interfaces for which it finds subnet declaration in dhcpd.conf 所以,如果没有像笔者一样下发服务器所在vlan的IP地址,那么就需要在dhcpd.conf中声明一个接口所在的空subnet就可以了。

        但是更大的问题来了:

从零开始linux学习--DHCP trouble shooting(七)_第5张图片

        笔者为什么园区网卡的地址变掉了???按照之前的笔记,笔者配置的IP地址应该是192.168.101.2啊!而且笔者仍然ssh连接着呢。这个192.168.1.84地址是怎么存在的?

        吓得笔者赶紧回到第一章配置网卡的地方:cd /etc/sysconfig/network-scripts/

从零开始linux学习--DHCP trouble shooting(七)_第6张图片

        发现没有错啊,我确实在第二章把default-gateway给删掉了。

        ip route show看一看:

从零开始linux学习--DHCP trouble shooting(七)_第7张图片

        对比第二章笔者完成的路由表:

        真真正正多出了关于192.168.1.0/24的路由??。

        ip add看一下网卡:

从零开始linux学习--DHCP trouble shooting(七)_第8张图片

        对比第二章笔者完成的网卡:

从零开始linux学习--DHCP trouble shooting(七)_第9张图片

        发现神奇的多了两行,浅色的一行说明笔者网卡上确实有一个192.168.1.84的IP地址;深色的网卡表示这个地址是有租约的,该地址是自动获取的!由于接口IP和路由表都是完整的,因此该网卡上的两个地址都可以被园区访问。

        感叹一下神奇的centos7,比较centos6多了很多新奇的功能。

        为何会出现这个192.168.1.84的IP地址呢?笔者作为网管来看那一定是除了笔者的服务器还有某台dhcp设备!并且该设备趁笔者不注意偷偷的在网络中发送192.168.1.0/24的地址。造成网络中地址混乱。好,下面笔者就打算把它抓出来干掉。

        在服务器上先看一看arp信息:ip neighbor

        发现除了笔者192.168.1.84的地址之外还有几个地址。如何找出是谁在捣乱(笔者姑且称之为捣乱者)呢?按照dhcp请求响应的过程,笔者如何区分捣乱者和受害者呢?

        一个很重要的过程,参考dhcp server的8种报文类型,只有dhcp offer和dhcp ack两种报文是dhcp服务器才会发送给客户端的。那么只要在网络中发现这两个报文,该报文中的src ip address就一定是捣乱者的IP地址。

        下载安装tcpdump:yum install tcpdump.x86_64

        发现安装失败了。yum把整个源都搜了一遍,显示Name or service not known。同时笔者linux服务器尝试解析百度域名也无法解析了。由于捣乱者在dhcp报文中包含了dns的字段信息,因此造成笔者在进行dns解析的时候找到了错误的dns信息。

        cat /etc/resolv.conf

        vi /etc/resolv.conf

        删除错的dns,只保留笔者正确的dns server。Ping一下百度测试,发现正常。

        接下来就比较顺利的利用yum安装tcpdump。

        手动删除192.168.1.0/24的路由,使路由与笔者第二章调整的路由表一致:ip route del 192.168.1.0/24

        其实,笔者看到dns就已经很怀疑这个捣乱者是192.168.1.243这台服务器了,毕竟多数时候没有在网络中搭建dns时,dhcp会发送本地IP地址的dns信息。但是还是抓一下,确认数据包是不是由该设备发送,笔者就从上述的一些地址来抓包吧:

        tcpdump -i enp1s0f0 host 192.168.1.243 orhost 192.168.1.1 or 192.168.1.2 or 192.168.1.200

从零开始linux学习--DHCP trouble shooting(七)_第10张图片

        查看上面的报文,笔者确认就是该设备在网络中发送dhcp报文。

        ip neighbor查看该IP的mac地址,并在网络上通过mac地址找到该设备。将其从网络上踢出,问题结束。

        另外笔者查看了一下centos7的功能,发现是由于NetworkManager这个功能模块使得会出现如上的错误故障,笔者顺手将其关闭:systemctl stop NetworkManager

从零开始linux学习--DHCP trouble shooting(七)_第11张图片

        笔者关闭了一段时间的网卡,使其无法再向已经建立连接的DHCP server续约,一觉醒来这个地址就去掉了。

从零开始linux学习--DHCP trouble shooting(七)_第12张图片

你可能感兴趣的:(从零开始linux学习--DHCP trouble shooting(七))