大家好,欢迎来到IT知识分享网。
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地址。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11757.html