DHCP服务器简介

来源:互联网 发布:java equals int 编辑:程序博客网 时间:2024/06/06 04:08

1、常识

dhcp概念:全称 Dynamic Host Configuration Protocol

dhcp功能: 动态分配IP地址

dhcp常识:

dhcp是基于udp的服务器监听在67号端口,客户端监听在68号端口上  

UDP:

67/udp

68/udp


计算机想要通信需要具备:

TCP/IP

IPADDR

NETMASK

GATEWAY

DNS



2、DHCP工作原理

dhcp工作原理:

客户端发起广播udp的数据包给服务器

Client--> DHCPDISCOVER

服务器回应客户端的数据包

          DHCPOFFER <-- Server

客户端回复确认包,当有多个dhcp服务器时需要回复确认使用哪个服务器分配过来的ip(广播包)

Client--> DHCPREQUEST

服务器回复确认包。

           DHCPACK <-- Server

客户端续租ip(这里就不是广播包了)   

Client--> DHCPREQUEST

           DHCPACK <-- Server


注释:我们的每台电脑(不管是linux,windows,ios)都会时时刻刻运行着dhcpclient客户端(用于请求ip地址)。这个客户端会在你启动设备时广播发送DHCPDISCOVER数据包,路由器上的dhcpserver(路由器也是一台电脑)服务端接受广播数据包,dhcpserver回送DHCPOFFER数据包(数据包包含给你分配的ip地址,注意这时你的网络中可能不止一台dhcpserver服务器或者这样说你家里不止一个无线网。它们会同时响应你的ip请求报文的),这时dhcpclient接收到数据包然后再次广播发送DHCPREQUEST数据包(如果有多个dhcpserver给你提供ip,你需要选一个,一般来说那个dhcpserver的数据包先到就用那个),这时dhcpserver服务器收到DHCPREQUEST数据包后回复确认包DHCPACK并记录下分配给你的ip地址,这时你就可以上网了。之后每6小时会重新续租(这个ip你只有6个小时的使用权,时间到是需要续租的)。



3、dhcp安装

//查询是否安装

rpm -qi dhcp

//若未安装直接安装

yum install dhcp -y

//查看都生成了那些文件

rpm -ql dhcp

 

//主要的文件

/usr/sbin/dhcpd #服务

/usr/sbin/dhcrelay#中继服务,一般不用。中继服务和dhcpd服务两个只能有一个运行。(当dhcpserver端和decpcilent不在一个网段时一般来说是不能接收到客户端的请求数据包的。因为路由器不会转发广播报文。这时如果路由器上能运行这个dhcrelay服务就能够将这个请求从别的网络转发到dechserver所在的网络中。之后另外网络中的dhcpclient就能获取到ip地址。这里不介绍这个服务,请自行google查询使用方法。)

/etc/dhcpd.conf #配置文件

/var/lib/dhcpd/dhcpd.leases#租约文件,记录了分配出去的ip地址。一般会有一个dhcpd.leases~文件存在,这才是真正记录分配IP地址记录的文件。


当然客户机需要设置成dhcp获取ip地址(具体怎么设置1、直接setup命令设置。2、直接配置网卡(/etc/sysconfig/network-scripts/ifcfg-eth#))


vim   /etc/dhcpd.conf   #dhcp服务的配置文件如下。


注释:

最上边的两行(ddns-update-style interim ignore client-update)是动态改写dns的选项,目前不用了保持不变。

subnet  172.16.0.0 ...这就是你所在的局域网网络(你的这台dhcp服务器的ip和你的客户机们必须都在这个网络中,否则不能启动dhcpd服务)。说白这个就是你要分配的地址池,所有的ip都出自这个网络。

option routers   就是dhcp给你指定的网关

option subnet-mask 就是你这个网络的子网掩码

option domain-name 就是你所在的域的名字。学名叫做搜索域。我还不知道干什么用的呢,这里没什么用不用搭理。

option domain-name-servers   就是给你指定的dns服务器(这个就会被NetworkManager程序写到你的/etc/resolv.conf中,我指的是linux。这就是为什么你的 这个文件经常重启的时候被清空。因为你所在网络中的dhcp服务器没给你指定dns服务器--你的路由器上配置的这条是空的。因此还是把你的dns服务器配置到ifcfg-eth#文件里边去吧,那就不会被更改了。免得你每次域名都没办法解析必须重写这个文件。)


range 172.16.100.10...这行就是你要把这个网段中那些ip分配出去。这里配置的就从10-20一共才11个ip


default-leases-time... #这个就是给你的租期6小时。一般来说每隔3小时就会续租了。


#这个可以给某台计算机指定一个ip,这台机器的ip将一直是这个。注意这个ip不能在上边动态分配出去的地址中(不能再那11个ip中)。如果有多个机器要固定ip就多写几个

host ns {            #ns随便起的名字,你可以随便起一个,不重复就行。

      harderware .....     #要固定ip地址的那台机器的mac地址

     fixd-address....     #给这台机器的ip

}




尝试下在你的局域网中自己启动个dhcp服务器,那么你的小伙伴就有可能从你那里请求ip地址了。如果你通过路由器管理界面获取到它的mac地址,你故意给他配置一个固定的ip(那这里仍然是有可能使用你提供的固定的ip,还是谁先到用谁的。)。并且把他的路由设置成错的。那他的数据包就出不了这个网络了,也就上不了外网了。我在虚拟机上玩过了,是有效果的。但手机上就没有效果,原因我想应该是这样的,手机在广播请求ip的时候,因为我的dechserver在虚拟机上所以肯定会比真正的路由器上的dechserver响应慢,这样就麻烦了,拿手机肯定不会用我给他的固定的那个而是直接用路由器上的那个dhcpserver给它提供的ip。所以就没效果了。不过你可以试一试在真机上启动一个dhcpserver。比如在windows上启动一个,或者你想办法关掉路由器上的dhcpserver那这肯定就会有效果了。因为手机的操作系统也是linux的。


测试的时候可以使用命令:dhclient -d 看看请求ip地址的过程是怎样的,看看是谁给提供的ip地址。





0 0
原创粉丝点击