Linux下DHCP服务器的配置.doc
.*Linux下DHCP服务器的配置1、实验目的(1)掌握DHCP的基本概念,如:作用域、地址池、租约、保留地址等(2)掌握DHCP的工作原理,主要是IP地址的获取过程(3)掌握DHCP服务器的配置方法(4)掌握DHCP客户端的配置方法2、实验内容(1)配置DHCP服务器(2)配置Linux下的DHCP客户端(3)使用dhclient工具来验证IP地址的获取正确性3、理论知识DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,是一个简化主机IP地址分配管理的TCP/IP标准协议。DHCP是BOOTP协议的扩展,基于C/S模式,提供了一种动态指定IP地址和配置参数的机制,主要用于大型网络环境和配置比较困难的地方。一些基本概念(1)DHCP客户机:一台通过DHCP服务器获取网络配置参数(包括网关、DNS服务器等网络配置)的计算机,通常是普通的工作站。(2)DHCP服务器:提供网络设置参数(主要指IP地址、默认网关、DNS服务器等网络配置)给DHCP客户机的主机。(3)作用域:网络中的所有可分配的IP地址的连续范围。(4)地址池:可供DHCP客户机使用的IP地址范围。(5)租约:DHCP服务器指定客户机所获得的IP地址的时间长度(允许使用的时间),在租约到期前,客户机需要更新IP地址的租约,否则不能继续使用该IP地址。(6)保留地址:子网中指定硬件设备使用的IP地址。(7)排除范围:不用于dhcp分配的IP地址范围。DHCP的工作原理第一次登录1)DHCP工作的第1步:DHCP发现。 指的是客户端启动网卡时,获取IP地址的第一步。 DHCP客户端使用0.0.0.0作为自己的IP地址,255.255.255.255作为服务器的地址,然后在UDP的67或68端口广播一个DHCP发现信息。然后等待服务器的响应2)DHCP工作的第1步:DHCP提供指网络中的任何一个DHCP服务器在收到客户端的DHCP发现信息时,如能够提供IP地址,就从该DHCP服务器中的IP地址池中选取一个没有出租的IP地址,然后利用广播方式提供给DHCP客户端。3)DHCP第三个过程是DHCP请求 DHCP客户端收到第一个DHCP服务器的应答信息后,就以广播的方式发送一个DHCP请求信息给网络中所有的服务器。通知服务器已经接收到IP地址,同时通知其他服务器不用再给他分配IP地址。4)DHCP第三个过程:DHCP应答分配IP地址DHCP服务器收到DHCP请求信息后,就将该IP地址标识为已租用,然后以一个广播方式发送一个DHCP应答信息给DHCP客户端。客户端接收到DHCP应答信息后,就完成了IP地址的获取过程,可以使用该IP和其他计算机进行通信了。4、实验步骤1)安装DHCP服务器rootazuo root# rpm -qa | grep dhcp /检查网络是否安装了DHCP软件包 注:-q : 查询安装的软件包 -a : 所有的软件包如果没有出现任何信息,则证明没有安装过dhcp软件包。则先下载和DHCP有关的软件包,然后使用以下命令安装rootazuo root# rpm ivh dhcp-3.0-12-6.14.i386.rpmrootazuo root# rpm ivh dhcp-devel-3.0p12-6.14.i386.rpmrootazuo root# rpm ivh dhclient-3.0p12-6.14.i386.rpmrootazuo dhcp software# rpm -Uvh dhcp-3.0.1-54.EL4.i386.rpm出现两处进度条显示为100方为安装成功。warning: dhcp-3.0.1-54.EL4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60ePreparing. # 100% 1:dhcp warning: /etc/dhcpd.conf created as /etc/dhcpd.conf.rpmnew# 100%rootazuo dhcp software# rpm -Uvh dhcp-devel-3.0.1-54.EL4.i386.rpmwarning: dhcp-devel-3.0.1-54.EL4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60ePreparing. # 100% 1:dhcp-devel # 100%rootazuo dhcp software# rpm -Uvh dhclient-3.0.1-54.EL4.i386.rpmwarning: dhclient-3.0.1-54.EL4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60ePreparing. # 100% 1:dhclient # 100%2)DHCP重要的配置文件1)/etc/dhcpd.conf (DHCP的主配置文件,包括DHCP的最主要的配置信息)2) var/lib/dhcp/dhcp.lease (租赁文件,用于查看当前DHCP客户端的情况)3) /usr/sbin/dhcpd (DHCP服务程序的执行文件)4)/etc/rc.d/init.d (DHCP 的启动脚本)5)/var/log/message(日志文件)6)/etc/sysconfig/dhcpd(定义DHCP广播网卡文件)7)/etc/sysconfig/dhcrelay(中继代理服务文件)8)/etc/init.d/dhcrelay(中继代理服务启动脚本)9) /usr/sbin/dhcrelay(中继代理执行文件)在实验中我们主要掌握dhcpd.conf主配置文件的配置内容和用法就可以了,其他的可以课后自己研究。3)DHCP服务器端的配置 1、快速配置DHCP Server。在/usr/share/doc/dhcp<version-number>目录下,存在一个名为dhcpd.conf.sample的文件,该文件提供了一个很好的DHCP配置的范例,我们可以将这个文件拷贝到/etc目录下,再对该文件进行修改即可。具体步骤如下:1)cp /etc/dhcpd.conf /etc/dhcpd.conf.bak /将原来的dhcp.conf文件做一个备份,这是一个良好的作风2) cp /usr/share/doc/dhcp<version>/dchp.conf.sample 拷贝范例文件3) vi /etc/dhcpd.conf / 使用vi编辑器来对DHCP主配置文件来进行配置下面是一份dhcpd.conf配置文件及其解析ddns-update-style interim; /动态与DNS联合更新ignore client-updates; /忽略客户端更新subnet 192.168.0.0 netmask 255.255.255.0 /设置子网# - default gateway option routers192.168.0.1; /定义分配给客户机的默认网关option subnet-mask255.255.255.0; /定义分配给客户机的子网掩码option nis-domain"domain.org" /指明客户端的NIS域option domain-name"domain.org" /定义分配给客户机的域名option domain-name-servers192.168.1.1; /定义分配给域名解析服务器地址option time-offset-18000;# Eastern Standard Time /设置与格林威治时间的偏移时间#option ntp-servers192.168.1.1;#option netbios-name-servers192.168.1.1;# - Selects point-to-point node (default is hybrid). Dont change this unless# - you understand Netbios very well#option netbios-node-type 2;range dynamic-bootp 192.168.0.128 192.168.0.254; /设置地址池default-lease-time 21600; /定义缺省的租期,单位是smax-lease-time 43200; /定义最大租约时间,单位是s# we want the nameserver to appear at a fixed addresshost ns /为某台主机固定分配IP地址,实现MAC地址和IP地址绑定next-server marvin.redhat.com;hardware ethernet 12:34:56:78:AB:CD;fixed-address 207.175.42.254;subnet 239.252.197.0 netmask 255.255.255.0 range 239.252.197.10 239.252.197.250; Multiple address ranges may be specified like this: subnet 239.252.197.0 netmask 255.255.255.0 range 239.252.197.10 239.252.197.107; range 239.252.197.113 239.252.197.250; 在上述配置文件中,红色字体的配置为必须掌握的配置,其他的了解即可。我们主要要掌握默认网关、子网掩码、DNS服务器地址、地址池、保留IP地址的配置,其他不相关内容可以使用“”注释掉。在配置文件中,optional的项为全局项,也可以放在括号的外面。如果系统中连接的不止一个网卡,可是想DHCP服务器在其中之一上启动,那么可以配置DHCP服务器只在指定的接口设备上启动。这时,需要修改/etc/sysconfig/dhcpd文件。使用以下命令往该文件后添加如下项。 rootazuo root# echo "DHCPDARGS" >> /etc/sysconfig/dhcpd“>>”是在文件后面追加的意思,千万不要写成了”>”,则变成把原来的文件全部覆盖了DHCP服务器端的启动在服务器端,使用rootazuo root# service dhcpd start启动dhcpd:来完成dhcp服务器的启动。然后,使用netstat命令来查看dhcp服务是否正确启动了。rootazuo root# netstat -anp|grep :67udp 0 0 0.0.0.0:67 0.0.0.0:* 1712/dhcpddhcp服务对应的端口号为UDP的67。如果看到有67端口开放,则证明dhcp服务已经启动了。3、客户端的配置dhcp的客户端大致可以分为windows 和linux两种系统。Linux下的DHCP服务器的地址池在分配IP地址的时候,是从最后面的IP地址先开始分配的。所以,在下面第一个被获取到的IP地址为192.168.1.204。对于windows的客户端,只需要设置为“自动获取IP地址”即可,设置比较简单。然后,在命令DOS窗口中使用ipconfig /all 来查看获取到的IP地址和DHCP服务器的地址。Windows DHCP客户端的配置C:> ipconfig /all /查看获取到的IP地址Ethernet adapter home: Connection-specific DNS Suffix . : Description . . . . . . . . . . . : AMD PCNET Family PCI Ethernet Adapter Physical Address. . . . . . . . . : 00-0C-29-C6-37-DE DHCP Enabled. . . . . . . . . . . : Yes Autoconfiguration Enabled . . . . : Yes IP Address. . . . . . . . . . . . : 192.168.1.204 /获取到的IP地址 Subnet Mask . . . . . . . . . . . : 255.255.255.0 /获取到的子网掩码 Default Gateway . . . . . . . . . : 192.168.1.1 /获取到的默认网关地址 DHCP Server . . . . . . . . . . . : 192.168.1.30 /DHCP服务器的地址 DNS Servers . . . . . . . . . . . : 192.168.1.1 /获取到的DNS服务器地址 Lease Obtained. . . . . . . . . . : 2006年8月16日 12:29:16 Lease Expires . . . . . . . . . . : 2006年8月16日 18:29:16 对于Linux的客户端,则需要修改以下网络配置文件,设置网卡的IP地址为自动获取。查看/var/lib/dhcp/dhcp.lease,可以看到dhcp客户端获取IP地址的情况。rootazuo etc# cat /var/lib/dhcp/dhcpd.leases# All times in this file are in UTC (GMT), not your local timezone. This is# not a bug, so please dont ask about it. There is no portable way to# store leases in the local timezone, so please dont request this as a# feature. If this is inconvenient or confusing to you, we sincerely# apologize. Seriously, though - dont ask.# The format of this file is documented in the dhcpd.leases(5) manual page.# This lease file was written by isc-dhcp-V3.0.1lease 192.168.1.204 starts 3 2006/08/16 04:27:20; ends 3 2006/08/16 10:27:20; binding state active; next binding state free; hardware ethernet 00:0c:29:c6:37:de; uid "001000014)3067336" client-hostname "SERVER"选做内容:PXE中的DHCP的配置DHCP-PXE的配置#vi /etc/dhcpd.confddns-update-style interim;ignore client-updates;allow booting; allow bootp; option routers192.168.1.1;option subnet-mask255.255.255.0;option domain-name"zsc.edu.cn"option domain-name-servers192.168.1.1;subnet 192.168.1.0 netmask 255.255.255.0 default-lease-time 21600;max-lease-time 43200;range dynamic-bootp 192.168.1.100 192.168.1.200; /IP地址分配范围filename "/pxelinux.0" /指向文件pxelinux.0,该文件位于/tftpboot目录下网络安装原理:客户端PXE网卡启动>从DHCP服务器获取IP地址>从TFTP服务器下载pxelinux.0,根据配置文件下载指定的vmlinux、initrd>启动系统内核>到指定地点去下载ks.cfg文件>根据ks.cfg去(HTTP、FTP或者NFS)服务器下载RPM包并安装系统>完成安装网络安装服务器的部属方法完全安装以太RHEL4.0作为服务器配置DHCP服务,支持pxe启动配置TFTP服务(传输文件)配置PXELinux(bootloader)配置NFD或HTTP或FTP服务若要实现自动安装,还需配置kickstartDHCP服务器配置完成后,就完成了客户机在进行网络启动时候时能够正确的获取到IP地址的工作,那么既然客户端已经获取了IP的地址,它就可以利用IP地址来进行相互的通信。这样我们就可以通过TCP/IP协议把启动内核从服务器端传送到客户机端,这样,客户机获得内核之后,就可以完成系统的启动安装了。那么启动内核的传送是通过什么协议来进行的呢?在这里我们是采用tftp协议来完成,因为网卡里面的固化有了tftp的客户端(这里我们也可以做出比较,类似在交换机和路由器的系统更新和重刷时,也是采用了tftp协议的)。好,既然要采用tftp协议,那么我们必须在服务器端配置一个tftp服务器,然后把系统的内容放在服务器端,由客户端自动去获取这个系统启动内核。下面我们就接着介绍tftp服务器的安装。 我们这里给出了tftp客户端和服务器软件包的安装过程,当然,你可以只安装tftpd服务器即可。具体内容如下:安装ftp服务器rootazuo root# rpm -aq | grep tftp /查看是否安装tftp服务器rootazuo root# rpm -ivh tftp-0.39-1.i386.rpm /安装tftp客户端warning: tftp-0.39-1.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60ePreparing. # 100% 1:tftp # 100%rootazuo root# rpm -ivh /mnt/cdrom/RedHat/RPMS/tftp-server-0.32-4.i386.rpmwarning: /mnt/cdrom/RedHat/RPMS/tftp-server-0.32-4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60ePreparing. # 100% 1:tftp-server # 100%如上面所示,安装成功。修改 /etc/xinetd/tftd,主要是把tftp服务进程托管给xineted进程,这里只要把disable=no,该为yes即可代码:service tftpsocket_type = dgramprotocol= udpwait= yesuser= rootserver= /usr/sbin/in.tftpdserver_args = -s /tftpbootdisable = no /把原来的yes改为no per_source= 11cps = 100 2flags = IPv4修改disable即是把tftp服务归为xinetd守护进程托管。修改完之后,重起xinetd服务 代码:/etc/rc.d/init.d/xinetd restart测试tftp服务器代码:测试tftp服务是否开启rootazuo tftpboot# netstat -anp|grep tftpunix 2 DGRAM 40082 2610/in.tftpd往 /tftpboot目录里放了一个文件 test.txt Linux下测试本地测试代码:rootazuo tftpboot# tftp 127.0.0.1tftp> get test.txttftp> qrootazuo tftpboot# lstest.txt测试tftp服务器。windows测试C:Documents and Settingshe>tftp -i 192.168.1.30 get test.txttftp服务器配置成功之后,就是告诉客户机应该去哪里读取启动文件了,那么我们现在要做的工作就是把启动文件放到指定的位置上。到底启动文件要包括哪些文件和文件夹呢?请看下面 (1)pxelinux.0 (2)vmlinuz (3)initrd.img (4)pxelinux.cfg目录配置完了,结果应如下rootazuo tftpboot# lsinitrd.img pxelinux.0 pxelinux.cfg vmlinuz 如下截图在pxelinux.cfg的目录下文件如下:下面分别介绍这些文件是如何得来的pxelinux.0 这个文件是在DHCP服务器中指定的文件,要得到该文件,必须安装syslinux包,rootazuo tftpboot# rpm -ivh syslinux-2.11-1.i386.rpm安装成功后,将位于/usr/lib/syslinux/目录下的pxelinux.0文件拷贝到/tftpboot目录下rootazuo tftpboot# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/这样的完成了第一个文件pxelinux.0的制作接着我们可以在以下地方找到其他两个文件,在Redhat光盘的第一章光盘中的/images/pxeboot/目录下,我们就发现所需要的initrd.img 和vmlinuz文件。好了,现在我们只剩下pxelinux.cfg目录下的文件了。我们现在/tftpboot目录下新建pxelinux.cfg目录。rootazuo tftpboot# mkdir pxelinux.cfg然后新建一个default文件,文件内容如下:defaultprompt 1timeout 30display boot.msgF1 boot.msgF2 options.msgF3 general.msgF4 param.msgF5 rescue.msgF7 snake.msglabel local localboot 0label linux kernel vmlinuz append initrd=initrd.img devfs=nomount ramdisk_size=9216label text kernel vmlinuz append initrd=initrd.img text devfs=nomount ramdisk_size=9216label expert kernel vmlinuz append expert initrd=initrd.img devfs=nomount ramdisk_size=9216label ks kernel vmlinuz至于其他.msg文件可以从Redhat的第一张光盘的/isolinux/目录下找到。然后把它们都拷贝到该目录下即可。这样就完成了网络启动的全部过程。完成启动之后,我们可以选择NFS、FTP和HTTP三种方式来完成Linux的远程安装,这里我们选择的NFS方式。具体步骤如下:配置NFS服务 #vi/etc/exports /home/iso/192.168.10.0/24(ro,sync) #mkdir/home/iso 拷贝安装LINUX的ISO文件到这个目录远程安装截图:1、在开机的时候按住F12键,选择远程启动的方式来启动主机。2、剩下的操作和Linux时安装时候的操作一样,就不再详细介绍了。