美文网首页
从零开始linux学习--DHCP trouble shooti

从零开始linux学习--DHCP trouble shooti

作者: 嵩山奶熊 | 来源:发表于2018-02-06 08:56 被阅读0次

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

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

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

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

            cat /etc/sysconfig/dhcpd

            看到没有,大写的“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就可以了。

            但是更大的问题来了:

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

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

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

            ip route show看一看:

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

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

            ip add看一下网卡:

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

            发现神奇的多了两行,浅色的一行说明笔者网卡上确实有一个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

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

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

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

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

    相关文章

      网友评论

          本文标题:从零开始linux学习--DHCP trouble shooti

          本文链接:https://www.haomeiwen.com/subject/olbwzxtx.html