为了技术,我不会停下学习的脚步,我相信我还能走二十年。
分类:
2012-07-06 20:34:07
原文地址:linux下dhcp服务器配置 作者:g_programming
在一个比较复杂的网络中如果要单独的去对每一台客户机去配置静态的IP地址,这样做不但很麻烦而且在很多时候很容易出错,并且在有的网络中其中的一部分网络可能在一定的时候不会全连入Internet,加上现在ip地址的缺乏,为了更加有效的对ip地址的使用和合理的管理网络于是就出现了DHCP。在这里主要就是针对DHCP的配置和管理。
服务的概况:DHCP 是 Dynamic Host Configuration Protocol(动态主机分配协议)缩写,它的前身是 BOOTP。BOOTP 原本是用于无磁盘主机连接的网络上面的:网络主机使用 BOOT ROM 而不是磁盘起动并连接上网络,BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件地址,而且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 "动态性" ,若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常可观的浪费。 DHCP 可以说是 BOOTP 的增强版本,它分为两个部份:一个是服务器端,而另一个是客户端。所有的 IP 网络设定数据都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境数据。比较起 BOOTP ,DHCP 透过 "租约" 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考虑,DHCP 也完全照顾了 BOOTP Client 的需求。 DHCP 的分配形式 首先,必须至少有一台 DHCP 工作在网络上面,它会监听网络的 DHCP 请求,并与客户端搓商 TCP/IP 的设定环境。
的安装、配置和应用
DHCP是基于c/s模式的,当客户启动时。它会自动的与服务器建立连接并且完成相关的操作,它是以地址租约的方式为DHCP客户端提供服务的,提供的方式主要有两种。
①、限定租约:当客户端向服务器申请到IP后,客户端可以使用一段时间,当租约快要到期时,服务器将收回IP,客户端又要和服务器重新建立新的地址租约,这是一种动态的分配方式,可以很好的解决IP地址不够用的问题。
②、永久租约:当dhcp客户端向dhcp服务器租用到ip后,这个地址就会永久的分配给这个客户端,不过采用这种方式有个前提就是要求企业或单位有足够的ip地址,以便很好分配,采用这种方式是一种静态的方式,这样的话就可以使网络内不需要不间断的发出请求和建立租约,更使网络得到优化。
不管是windows下建立的服务器还是Linux中其实它们的工作过程和原理都是一样的。
1、向dhcp服务器索取新的ip地址
当一个尚未分配ip的客户启动的时候,只有建立的相关的连接和请求才有新的ip获取,这也就是进行一系列的步骤来获取其TCP/IP的配置信息,并得到IP地址的租约,主要的过程可以通过图解来分析,如图1.1
1.1 dhcp工作的过程
过程分析:
1)、dhcpdiscover:该过程中客户端开始建立请求,以0.0.0.0作为自己的ip地址而以255.255.255.255(广播地址)作为服务器的地址,如果在本网络中有这样的服务器那么当dhcp服务器收到这样的请求后会做出响应,在Linux中服务器是以守护进程的方式来响应客户的请求的,如果没有服务来建立请求,那么Linux中服务器以后台的方式等待请求,如果客户发起的请求没有响应那么,客户端将在一定的时间段内重复以上的操作,直到有得到一个应答。
2)、dhcpoffer:当网络中的dhcp服务器收到dhcpdiscover信息后,对自身进行检查,要是有可提供的ip地址,就从该服务器的地址池中随机的取出一个ip广播的方式发送给客户端,在还没有将ip正式的给客户前,服务器会先把这个地址隔离起来,以免其他的客户申请的时候再次被分配而产生冲突,服务器发送给请求客户机的信息中主要包含了ip地址、子网掩码、租约和提供dhcp服务的服务器的ip。
3)、dhoprequset:当dhcp客户收到服务器的返回信息后,就以广播的方式发送一个dhcp请求信息给本网络中的存在或不存在的其他的dhcp服务器,该信息中包含了已选择的dhcp服务器的ip地址。
4)、dhcpack:一旦被选中的dhcp收到客户端的请求信息后,就将以保留的这个ip标识为以租用,然后广播的方式发送一个dhcpack信息给dhcp客户端,当客户端收到了确认信息后就完成了整个的获取ip的过程。
2、更新ip地址租约
当客户得到一个ip后就会有一个租约,当租约到了一定的时间的时候就会续租
1)、当租约过了一半的时候,dhcp客户会向服务器发送一个新的dhcprequest,若服务器没有拒绝,便会发送一个新的dhcpack,当客户收到了这样的确认信息后就又开始了一个新的租约,如此长时间的工作过程中不断的执行这样的过程来不断的完成和更新信息。
2)、dhcp客户机从新启动时,因为这样的租约相当于又失去了,所以应该建立一个新的租约,这个新连接并不是一个全过程,而是客户端发送一个dhcprequest,以便来继续使用以前租约到的地址,如果服务器没有做出应答而以前的租约又还没有过期,那就仍然先继续使用该ip.
3)、ip租约过了一半但是续租失败:要是出现这样的情况,客户仍然还可以继续使用该ip地址,但是该dhcp客户将在租约到达87.5%的时候再次广播一个请求信息,以便来找一太可以继续提供dhcp服务的服务器,如果还是失败客户机就立刻释放这个地址,来从新向dhcp服务器申请一个新的租约(在这里就要完成请求的4个过程了),在上面的续租过程中要是成功的话那么服务器就会发送一个dhcpack给客户机,但是要是失败的话就发送一个dhcpnack,客户机收到这个返回信息后,说明该ip地址已经失效或者被其他的dhcp客户端使用。
3.2.1 dhcp的安装
后台进程:dhcpd
脚本:/etc/rc.d/init.d/dhcpd
使用端口:67
所需RPM包:dhcp
相关RPM包:
1. dhcp-devel-3.0.5-7.el5.i386.rpm
2. dhcpv6-0.10-33.el5.i386.rpm
3. dhcpv6_client-0.10-33.el5.i386.rpm
配置文件:/etc/dhcpd.conf
日志:/var/log/xferlog
再提示一点吧,网络启动方式也叫bootpc,这样获取的IP地址是不会受服务器的租期限制的,它永远有效好了,我们先安装DHCP服务器
运行rpm –q dhcp查看该服务是否配置好(或者//查看系统是否安装了dhcp软件包:rpm -qa | grep dhcp),如果没安装则安装。
3.2.2 dhcp的配置:
1. 复制/usr/share/doc/dhcp*/dhcpd.conf.sample 到/etc目录下,更名为:dhcpd.conf 2. # cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcpd.conf 3. 当然,也可以先vi /etc/dhcpd.conf,然后在末行模式运行以下命令: 4. r /usr/share/doc/dhcp*/dhcpd.conf.sample 5. 这样这个dhcpd.conf.sample文件的内容就导进来了。 6. 打开dhcpd.conf,要修改的几个地方: 7. subnet 后面接的是你所定义的网段,要与本机的IP地址同网段, 8. 每一语句以分号“;”结尾,不要忘记。 9. 例如:我的IP是“192.168.2.11”,下面是我的配置文件: 10. ddns-update-style interim; 11. ignore client-updates; 12. subnet 192.168.2.0 netmask 255.255.255.0 { 13. option routers 192.168.2.1; 14. option subnet-mask 255.255.255.0; 15. option nis-domain "domain.org"; 16. option domain-name "domain.org"; 17. option domain-name-servers 192.168.2.1; 18. option time-offset -18000; 19. range dynamic-bootp 192.168.2.100 192.168.2.254 20. default-lease-time 21600; 21. max-lease-time 43200; 22. filename "/pxelinux.0"; 23. next-server 192.168.2.11; 24. host ns { 25. next-server marvin.redhat.com; 26. hardware ethernet 12:34:56:78:AB:CD; 27. fixed-address 207.175.42.254; 28. } 29. }
3.2.3 详细注解:
1. ddns-update-style interim; #定义所支持的DNS动态更新类型(必选),一般我们设置成关闭,
2. #interim和none都是关闭的意思
3. allow/ignore client-updates; #允许/忽略客户机更新DNS记录
4. allow/deny unknown-clients; #是否动态分配IP给未知的使用者
5. allow/deny bootp; #是否响应激活查询
6. allow/deny booting; #是否响应使用者查询
7. subnet 192.168.2.0 netmask 255.255.255.0 { #设置子网声明
8. # --- default gateway
9. option routers 192.168.2.1; #设置缺省网关为192.168.2.1
10. option subnet-mask 255.255.255.0; #设置客户端的子网掩码
11. option nis-domain "domain.org"; #为客户设置NIS域
12. option domain-name "domain.org"; #为客户设置域名
13. option domain-name-servers 192.168.2.1; #为客户设置域名服务器
14. option time-offset -18000; # Eastern Standard Time #为客户端指定格林威治时间偏移时间,单位秒,
15. # 该选项可以在全局配置、局部配置均可使用
16. # option ntp-servers 192.168.2.1; #NTP是时间服务器
17. # option netbios-name-servers 192.168.2.1; 设置wins服务器
18. # --- Selects point-to-point node (default is hybrid). Don't change this unless
19. # -- you understand Netbios very well
20. # option netbios-node-type 2; #设置netbios节点类型 我不清楚这个netbios节点是什么东西
21. range dynamic-bootp 192.168.2.28 192.168.2.254; #设置动态的地址池
22. default-lease-time 21600; #设置缺省的地址租期
23. max-lease-time 43200; #设置客户端最长的地址租期
24. # we want the nameserver to appear at a fixed address
25. filename "/pxelinux.0"; #开始启动文件的名称,应用于无盘安装,可以是tftp的相对或绝对路径
26. next-server 192.168.2.11; #This is the name of the server they should get it from
27. #tftp服务器,可以和dhcp服务器不在同一机器上,一般是PXE网络使用此参数
28. #设置主机声明
29. host ns {
30. next-server marvin.redhat.com; #设置由于定义服务器从引导文件中装入的主机名,用于无盘站
31. hardware ethernet 12:34:56:78:AB:CD; #指定dhcp客户的mac地址
32. fixed-address 207.175.42.254; #给指定的mac地址分配ip
33. }
34. }
3.2.4 配置好dhcpd.conf文件后就可以启动dhcp服务了:
# service dhcpd restart
这时可以用“netstat –nlutp | gerp dhcp”命令查看dhcp服务是否有启动。
3.2.5 其它相关文件:
1、这个文件/var/lib/dhcpd/dhcpd.leases,可以看到被租出去的IP地址和相关信息。
2、这个文件/etc/sysconfig/dhcpd是指定DHCP服务器监听的网卡,如果只有一个网卡,一般不用设置 DHCPDARGS=eth0 或者是eth1 ,如果全部监听就不用管。
3、这个文件/etc/sysconfig/dhcrelay就是设置DHCP中继的文件,大家打开看看吧。interfaces 就是来自这个端口的DHCP DISCOVER(请求)都会转发到后面的DHCPSERVERS服务器。设置了DHCP中继,需要启动中继服务:service dhcrelay start
3.2.5 Windows主机做客户端测试DHCP
(1)现在到客户端,测试一下它是否正常工作,以XP为例,在控制面板打开“拨号与网络连接”,双击“本地连接”图表察看本地连接状态,选择“属性”:
(2)选择“Internet 协议(TCP/IP)”,点击“属性”按钮:
选中“自动获得IP地址”和“自动获得DNS服务器地址”选项:
(3)点“确定”关闭该对话框。打开一个“命令提示符”窗口(DOS窗口),键入下面的命令:
C:\>ipconfig/renew
C:\>ipconfig/all
Microsoft Windows XP [版本 5.1.2600]
C:\Documents and Settings\Administrator>ipconfig/renew
Windows IP Configuration
No operation can be performed on 无线网络连接 while it has its media disconnecte
d.
Ethernet adapter VMware Network Adapter VMnet8:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.17
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter VMware Network Adapter VMnet1:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.14
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.130
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.1
Ethernet adapter 无线网络连接:
Media State . . . . . . . . . . . : Media disconnected
PPP adapter 宽带连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 222.18.48.215
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 222.18.48.215
C:\Documents and Settings\Administrator>ipconfig/all
Windows IP Configuration
Host Name . . . . . . . . . . . . : PC0409TOX
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter VMware Network Adapter VMnet8:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : VMware Virtual Ethernet Adapter for
VMnet8
Physical Address. . . . . . . . . : 00-50-56-C0-00-08
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.1.17
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter VMware Network Adapter VMnet1:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : VMware Virtual Ethernet Adapter for
VMnet1
Physical Address. . . . . . . . . : 00-50-56-C0-00-01
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.1.14
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Broadcom NetLink (TM) Fast Ethernet
Physical Address. . . . . . . . . : 00-23-5A-69-D6-69
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.1.130
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.1
DHCP Server . . . . . . . . . . . : 192.168.1.1
DNS Servers . . . . . . . . . . . : 192.168.1.1
Lease Obtained. . . . . . . . . . : 2011年4月10日 19:25:34
Lease Expires . . . . . . . . . . : 2011年4月10日 21:25:34
Ethernet adapter 无线网络连接:
Media State . . . . . . . . . . . : Media disconnected
Description . . . . . . . . . . . : Intel(R) WiFi Link 5100 AGN
Physical Address. . . . . . . . . : 00-22-FA-47-78-1E
PPP adapter 宽带连接:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : WAN (PPP/SLIP) Interface
Physical Address. . . . . . . . . : 00-53-45-00-00-00
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 222.18.48.215
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 222.18.48.215
DNS Servers . . . . . . . . . . . : 202.115.64.33
202.115.64.34
NetBIOS over Tcpip. . . . . . . . : Disabled
一切工作正常,我的计算机通过DHCP获得了IP地址192.168.100.9,以及其他相关的网卡参数。
我们希望服务器每次启动时自动启动dhcp服务,这可以用ntsysv来设置,在命令行键入ntsysv:
[root@local]# ntsysv
显示如下对话框:
确定选中了dhcpd项,然后确认,这样每次服务器重起时会自动启动dhcpd进程。
也可以输入下面命令:
[root@local]# setup 在系统服务里面配置
3.2.7 在linux客户机下面,你可以手动配置你的dhcp:
察看你的网络配置文件,如果你没有设置为自动启动联网,则要修改你的网络配置文件。
1. # vi /etc/sysconfig/network
2. 添加“NETWORKING=yes”(让引导的时候启动联网)
3. 或者使用
4. # @echo “NETWORKING=yes”> /etc/sysconfig/network
5. 然后再修改你的网卡配置文件
6. vi /etc/sysconfig/network-scriptes/ifcfg-eth0 文件应该包含这几行:
7. DEVICE=eth0
8. BOOTPROTO=dhcp
9. ONBOOT=yes