1. 【干货】速度收藏!DHCP服务器简介及配置图文教程
【 干货】速度收藏! DHCP服务器 简介及 配置 图文 教程
想必熟悉局域网的小伙伴,对于DHCP服务器一定不陌生,在一个计算机比较多的网络中,如果网络管理员要亲自为某个部门,甚至整个企业的上百台机器逐一手工分配IP地址,那么这个效率是非常低的,其实可以通过DHCP服务器来实现这个工作。本篇文章就为大家介绍了DHCP服务器的概念、原理以及配置裤喊,快来看看吧!
一、什么是 DHCP服务器 ? DHCP服务器 简介
1、简介
DHCP,(全称Dynamic Host Configuration Protocol),即动态主机配置协议。DHCP主要在局域网使用,对IP地址进行集中管理和分配,使网络环境中的主机动态获得IP地址、网关地址、DNS服务器地址等信息,并提升IP地址使用率。
2、原理
DHCP是一种基于客户/服务器模式的服务协议,工作原理其实很简单,是在安装有DHCP服务器的网络中,客户端启动时自动与DHCP服务器通信,要求服务器提供自动分配IP地址的服务,而安装了DHCP服务器软件的服务器响应这个要求,并向客户端发送出合法的IP地址。所谓DHCP服务器,也就是提供DHCP服务的服务器,它是通过IP地址租约的方式为DHCP客户端提供服务的。
DHCP客户端通过和DHCP服务器的交互通讯以获得IP地址租约。为了从DHCP服务器获得一个IP地址,在标准情况下DHCP客户端和DHCP服务器之间会进行四次通讯。DHCP协议通讯使胡野野用端口UDP 67(服务器端)和UDP 68(客户端)进行通讯,UDP68端口用于客户端请求,UDP67用于服务器响应,并且大部分DHCP协议通讯使用广播进行。
(1) DHCP DISCOVER
当DHCP客户端处于以下三种情况之一时,触发DHCP DISCOVER广播消息:
1)当TCP/IP协议作为DHCP客户端(自动获取IP地址)进行初始化(DHCP客户端启动、启用网络适配器或者连接到网络时);
2)DHCP客户端请求某个IP地址被DHCP服务器拒绝,通常发生在已获得租约的DHCP客户端连接到不同的网络中;
3)DHCP客户端释放已有租约并请求新的租约。
此时,DHCP客户端发起DHCP DISCOVER广播消息,向所有DHCP服务器获取IP地址租约。此时由于DHCP客户端没有IP地址,因此在数据包中,使用0.0.0.0作为源IP地址,然后广播地址255.255.255.255作为目的地址。在此请求数据包中同样会包含客户端的MAC地址,以便DHCP服务器进行区分。
如果没有DHCP服务器答复DHCP客户端的请求,DHCP客户端在等待1秒后会再次发送DHCP DISCOVER广播消息。除了第一个DHCP DISCOVER广播消息外,DHCP客户端还会发出三个DHCP DISCOVER广播消息,等待时延分别为9秒、13秒和16秒加上一个长度为0~1000毫秒之间的随机时延。如果仍然无法联系DHCP服务器,则认为自动获取IP地址失败,默认情况下将随机使用APIPA(自动专有IP地址,169.254.0.0/16)中定义的未被其他客户使用的IP地址,子网掩码为255.255.0.0,但是不会配置默认网关和其他TCP/IP选项,因此只能和同子网的使用APIPA地址的客户端进行通讯脊耐。
(2) DHCP OFFER
所有接收到DHCP客户端发送的DHCP DISCOVER广播消息的DHCP服务器会检查自己的配置,如果具有有效的DHCP作用域和富余的IP地址,则DHCP服务器发起DHCP OFFER广播消息来应答发起DHCP DISCOVER广播的DHCP客户端,此消息包含以下内容:
客户端MAC地址;
DHCP服务器提供的客户端IP地址;
DHCP服务器的IP地址;
DHCP服务器提供的客户端子网掩码;
其他作用域选项,例如DNS服务器、网关、WINS服务器等;
租约期限等。
因此DHCP客户端没有IP地址,所以DHCP服务器同样使用广播进行通讯:源IP地址为DHCP服务器的IP地址,而目的IP地址为255.255.255.255。同时,DHCP服务器为此客户保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址。如果有多个DHCP服务器给予此DHCP客户端回复DHCP OFFER消息,则DHCP客户端接受它接收到的第一个DHCP OFFER消息中的IP地址。
(3) DHCP REQUEST
当DHCP客户端接受DHCP服务器的租约时,它将发起DHCP REQUEST广播消息,告诉所有DHCP服务器自己已经做出选择,接受了某个DHCP服务器的租约。
在此DHCP REQUEST广播消息中包含了DHCP客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等,所有其他的DHCP服务器将收回它们为此DHCP客户端所保留的IP地址租约,以给其他DHCP客户端使用。
此时由于没有得到DHCP服务器最后确认,DHCP客户端仍然不能使用租约中提供的IP地址,所以在数据包中仍然使用0.0.0.0作为源IP地址,广播地址255.255.255.255作为目的地址。
( 4 ) DHCP ACK
提供的租约被接受的DHCP服务器在接收到DHCP客户端发起的DHCP REQUEST广播消息后,会发送DHCP ACK广播消息进行最后的确认,在这个消息中同样包含了租约期限及其他TCP/IP选项信息。
如果DHCP客户端的操作系统为Windows版本,当DHCP客户端接收到DHCP ACK广播消息后,会向网络发出三个针对此IP地址的ARP解析请求以执行冲突检测,确认网络上没有其他主机使用DHCP服务器提供的IP地址,从而避免IP地址冲突。如果发现该IP已经被其他主机所使用(有其他主机应答此ARP解析请求),则DHCP客户端则会广播发送(因为它仍然没有有效的IP地址)DHCP DECLINE消息给DHCP服务器拒绝此IP地址租约,然后重新发起DHCP DISCOVER进程。此时,在DHCP服务器管理控制台中,会显示此IP地址为BAD_ADDRESS。
如果没有其他主机使用此IP地址,则DHCP客户端的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯。至于其他TCP/IP选项,如DNS服务器和WINS服务器等,本地手动配置将覆盖从DHCP服务器获得的值。
二、 DHCP SERVER (RELAY)配置方式
1、相关配置文件
端口号:ipv4 udp 67(源端口:接收客户端请求的)、 udp 68(目的端口:向客户端发送请求成功或失败的回应)、ipv6 udp 546、udp 547
服务名:dhcpd、dhcrelay
主配置文件:/etc/dhcp/dhcpd.conf
模板文件:/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
中继配置文件:/etc/sysconfig/dhcrelay
执行程序:/usr/sbin/dhcpd、/usr/sbin/dhcrelay
服务脚本:/etc/init.d/dhcpd、/etc/init.d/dhcrelay
执行参数配置:/etc/sysconfig/dhcpd
查看租约文件:/var/lib/dhcpd/dhcpd.lease
很多网络服务的排错日志:/var/log/messages
2、配置步骤
(1)操作前的准备
防火墙临时关闭:iptables –F
防火墙永久关闭:/etc/init.d/iptables stop
查看防火墙状态:iptables -L
selinux临时关闭:setenforce 0
selinux永久关闭:sed –i“7s/enforcing/disabled/g”/etc/selinux/config
(2)客户端配置
1、关闭防火墙和selinux
2、自己在虚拟网络编辑器创建一个局域网的网卡,并设置好网段,取消虚拟网络编辑器的DHCP自动分配功能
3、进入客户机设置IP地址为自动获取(就是让DHCP选项生效),然后用service network restart 重启客户机网卡,到这里客户端就设置完成。
(3)服务端配置
1、进入服务机设置IP地址、网关和虚拟网络编辑器那个网卡的网段一致,然后重启网卡;
2、配置yum源,挂载光盘,然后用yum -y install dhcp安装dhcp软件;
3、进入dhcp配置文件/etc/dhcp/dhcpd.conf发现里面是空的,然后把dhcp模板文件中的内容导入dhcp 配置文件;
4、将配置文件的前几个subnet声明注释掉,修改最后一个subnet的声明;
5、修改完成后保存退出,用service dhcpd configtest测试文件是否有错误;
6、然后用service dhcpd start 重启dhcp服务;
7、重启客户机网卡,看能不能获取到服务机地址池的IP地址;
8、为某台主机设置IP地址保留,把要保留IP的MAC地址和要保留的IP地址写入dhcpd.conf的配置文件即可,然后设置客户机为自动获取IP;
9、用ifdown eth0停止服务机网卡,再用ifup eth0开启网卡,然后用service dhcpd start 重启dhcp服务,看客户机能不能获取到指定IP。
3、中继代理配置
interface f0/0
ip helper-address 1.1.1.1
ip dhcp relay information trust
update arp开启定期ARP询问
interfaca g0/0/2
arp authorized禁止动态更新ARP
arp timeout 60 60s无应答则删除ARP条目
ip dhcp snooping vlan 20 vlan20开启snooping
interface f0/0定义信任端口
ip dhcp snooping trust交换机连接DHCP服务器端口设为trusted
dhcp snooping bind-table static ip-address ip-address mac-address mac-address interface g0/0#配置IP与MAC静态绑定表
interface vlan 1
ip add dhcp-alloc #立即发送DHCP-discover报文,1-10s内随机发送,如果没有收到DHCP服务器的回应报文继续发送,直到回应为止
dhcp selsect global all #全局分配地址
dhcp server group dhcp-relay
dhcp-server 10.1.1.1组里有多个dhcp服务器
interface vlan 2
dhcp select relay
dhcp relay server-select dhcp-relay
display dhcp server ip-in-use all #查看地址池可用地址信息
reset dhcp server ip-in-use all #重置正在使用的IP地址
address-check enable dhcp #中继的安全特性
ip dhcp relay information trust-all合法的DHCP服务路由,为了形成一个绑定表
no ip dhcp conflict logging关闭DHCP冲突日志
display ip interface br
2. 怎么在linux安装dhcp
一.首先了解DHCP的概念
DHCP是实现主机IP地址DNS等动态配置的网络协议.
DNCP可以在多种操作系统中实现,包括最常用的LINUX系统和WINDOWS系统
DHCP网络服务的结构中具有服务器和客户机两个角色
DHCP服务器用于为网络中所有的DHCP客户机提供网络配置信息,在同一网络中,
DHCP服务器通常是唯一存在在.
网络中的任何主机都可以配置成为DHCP客户机,向DHCP服务器发出配置请求并按照服务器返回的信息进行网络配置
二.DHCP服务器能够提供的网络配置信息
1.网络接口的IP地址和子网掩码.
2.网络接口的IP地址对应的网络地址和广播地址
3.默认网关地址
4.DNS服务器地址
三.DHCP服务器的配置
1.安装DHCP服务器软件(在RHEL4系统的安装光盘中包括RPM格式的DHCP服务器软件包,包文件的名称是dhcp-3.0.1-12_EL.i386.rpm),在RHEL4的第4安装光盘中,在同一张安装盘中还包括与DHCP相关的其它软件包
# cd /media/cdrom/rehat/rpms/
#ks -l dhcp*
dhcp-3.0.1-12_EL.i386,rpm在REL4中没有被默认安装,需要手动安装
#rpm -qa | grep dhcp
#rpm -ivh dhcp-3.0.1-12_EL.i386.rpm
2.其中/usr/sbin/dhcpd 是DHCP服务器的执行文件,/etc/rc.d/init.d/dhcpd是DHCP服务器的启动脚本,虽然文件名都是DHCPD,但是文件位于不同的目录,功能也不一样.
DHCPD.CONF配置文件以及建立配置文件和配置文件的格式
#ls /etc/dhcp*
#vi /etc/dhcpd.conf
如:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
}
3.全局设置
全局设置是DHCPD.CONF配置文件中不包括在任何声明中的配置项(参数或选项),
作用于整个配置文件.当声明中没有相应的配置项时将使用全局配置项的设置,当声明
中有相应的设置项时将使用本声明中设置,而不采用全局设置项的值.
DHCP.CONF配置文件中常用的全局设置如下:
1) ddns-update-style参数用来设置DHCP服务器与DNS服务器的动态信息更新模式.
2) 默认租约时间使用default-lease-time参数设置,参数值的单位是秒.
3) 最大租约时间使用max-lease-time参数设置,参数值的单位是秒.
4) 主机所在域的名称使用domain-name先项进行设置,设置的域名将与主机名称一起组成
主机全名
5)DNS服务器地址使用domain-name-servers选项进行设置,设置的值为DHCP客户端需要使用的DNS服务器的IP地址.
6)使用subnet声明设置子网属性
subnet 是DHCP.CONF文件中最常用的声明,用于在子网中设置动态分配的地址的网络属性,subnet声明中可包括其他的参数.就不再说了.
4.DHCP服务器的启动与停止及重起\和DHCP服务的状态
#service dhcpd start
#service dhcpd stop
#service dhcpd restart
#service dhcpd status
三.DHCP配置实例
如
默认租约时间为21600S
最大租约时间为43200S
局域网内所有主机动的域名为abc.com
客户机使用的DNS服务器的IP地址是192.168.1.1
声明在子网192.168.1.0/24中用于动态分配的IP地址范围是192.168.1.100~~~192.168.1.200所分配的子网掩码是255.255.255.0默认网关是192.168.1.1
在子网192.168.1.0/24中有名为server01的服务器主机,需要的固定分配IP地址是192.168.1.1,
#vi /etc/dhcpd.conf
ddns-update-style interim;
default-lease-time 21600;
max-lease-time 43200;
option domaion-name "abc.com;
option domain-name-servers 192.168.1.1;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
host server01 {
hardware ethernet bo:co:c3:22:46:81;
fixed-address 192.168.1.11;
}
}
3. Linux下怎样安装DHCP服务和使用说详细点。
1.安装dhcp软件包 #rpm –ivh dhcp-3.0.1-12_EL.i386.rpm 2.配置文件dhcpd.conf 由于dhcpd.conf默认没有包括在软件包中,所以要最近创建 #cp /usr/share/doc/dhcp-3.0.2/dhcpd.conf.sample /etc/dhcpd.conf 3.编辑dhcpd.conf #vi /etc/dhcpd.conf 配置文件的基本格式 Subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200} (声明了网络地址是192.168.1.0子网掩码是255.255.255.0的子网中,ip地址从192.168.1.100~192.168.1.200之间的地址用于DHCP客户端进行动态地址分配高慎) 在dhcpd.conf配置文件中可以包括声明、参数和选项3种基本格式 Subnet是常用的声明,声明中的设置(大括号中的内容)在整个声明范围中有效; Subnet关键字后面设置子网的网络地址,netmask关键字后面岩猛设置子网掩码 参数由设置项和设置值组成,根据参数所在位置的不同,参数的位置可作用于全局或指定的声明中,参数是以“;”结束的,如: Default-lease-time 21600;(默认释放时间) max-lease-time 43200;(最大释放时间) 选项总是由option关键字引导,后面跟具体的选项和选项的设置值,粗念桥选项根据所在的位置不同可作用于全局或某个声明中,选项也是以“;”结束的,如: Option routers 192.168.1.1 (网关) Opyion subnet-mask 255.255.255.0 (子网掩码) 使用host声明设置主机属性 host server01{ hardware Ethernet 0:c0:c3:22:46:81; fixed-address 192.168.1.11; option subnet-mask 255.255.255.0 option routers 192.168.1.1; } 上面的配置实例中使用host声明了名为server01的主机,其MAC地址为0:c0:c3:22:46:81,为主机分配使用的ip地址为192.168.1.11,同时为该主机设置的子网掩码是255.255.255.0,网关地址是192.168.1.1. 多网络接口时需要配置的文件 # vi /etc/sysconfig/dhcpd DHCPDARGS=eth0 表示dhcp将只在eth0网络接口上提供DHCP服务。 4.dhcpd服务的启动与停止 Dhcpd服务的启动脚本位于/etc/init.d/dhcpd 启动dhcpd服务 #service dhcpd start 停止dhcpd服务 #service dhcpd stop 修改启动状态 #chkconfig –level 35 dhcpd on
4. linux每次系统启动时也启动DHCPD,要执行什么命令
Linux启动时执行命令
1. Linux 启动顺序:
(1)BIOS自检 www.2cto.com
(2)运行系统内核并检测硬件
(3)运行系统的第一个进程init
(4)init读取系统引导配置文件:
/etc/inittab中的信息进行初始化
/etc/rc.d/rc.sysinit------系统初始化脚本
/etc/rc.d/rcX.d/[KS]*------根据运行级别配置服务
/etc/rc.d/rc.local---------执行本地特殊配置
其它---------不同运行级别的特殊服务
Linux启动运行init程序来启动相关程序初始化,与启动相关的一个概念是运行级,
运行级是操作系统当前运行的级别,在不同运行级别上可以定义属于该运行级的启
动程序,系统的运行级别可以在/etc/inittab文件指定,与运行级相关运行程序通
过从源/etc/rc.d/init.d下链接到目的/etc/rcX.d,这里X为系统的默认运行级别,
因此,默认的启桥耐动脚本放在/etc/rc.d/init.d下。
有人建议在.login中执行相应命令,或在.bashrc(用tcsh shell,碧烂在.tcshrc)里
写命令。这是不行的,.login是在用户登录时执行,用户可能在本地无需登录,或
者在远程多个用户登悔消漏录,多次登录;而.tcshrc是在shell启动时执行,登录后用户
一般会多次打开shell,这样该命令或程序就会被多次执行。
2. 缺省的运行级,Linux用到的级别如下:
# 0 - 停机(千万不要把initdefault 设置为0 )
# 1 - 单用户模式
# 2 - 多用户,但是没有 NFS
# 3 - 完全多用户模式
# 4 - 没有用到
# 5 - X11
# 6 - 重新启动 (千万不要把initdefault 设置为6 )
对各个运行级的详细解释:
0 为停机,机器关闭。
1 为单用户模式,就像Win9x 下的安全模式类似。
2 为多用户模式,但是没有NFS 支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。
例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是 X11 ,进到 X Window 系统了。
6 为重启,运行 init 6 机器就会重启。
3. 如何让系统在启动是运行指定程序,根据启动顺序中的第四步,有两种方式。
一种方式是根据运行级别配置服务。 www.2cto.com
一种方式是执行本地特殊配置。
举例,任务在启动是运行命令cvslockd:
方式一:
(1)建立自启动脚本/etc/rc.d/init.d/cvslockd,内容为:
#!/bin/bash
/usr/local/bin/cvslockd
设置文件的属性为可执行:
#chmod +x /etc/rc.d/init.d/cvslockd
(2)查看计算机运行级别,在文件/etc/inittab里看到id:5:initdefault:,
则此系统运行级别为5。
(3)到/etc/rc5.d目录下,把你要执行的可执行文件做一个软连接,而且在
命名的时候要以大写S字母开头,S之后的数字大小代表执行顺序的先后,
数字越大越后执行。
#ln -s /etc/rc.d/init.d/cvslockd /etc/rc5.d/S100cvslockd
#ln -s /etc/rc.d/init.d/cvslockd /etc/rc0.d/K20cvslockd
方式二:
在/etc/rc.d/rc.local 添加 exec /usr/local/bin/cvslockd
该方式是在最后启动cvslockd。
还有一个论坛,也有关于这个的讨论:http://bbs.chinaunix.net/thread-2171011-1-1.html
5. 求救,熟悉在linux中配置dhcp服务器的进!!
LINUX dhcp服务器
一.dhcp介绍:
* dhcp称为 动态主机配置协议.
* 运行dhcp服务的计算机或设备,称为dhcp服务器,该服务器可以为网络中的工作站自动分配
IP地址,子网掩码,网关,DNS等参数.
* dhcp,可应用于网吧,机房,办公室以及网络管理中.
* dhcp服务器为客户机分配IP,是有相应的携敬时间限制的,计算机可能每次启动所获取的地址均不一样.
把这种地址获取称为动态地址获取.
二.使用DHCP原因:
* 初学者以及在某种网络环境下不了解IP设定情况
* 用户在输入网络参数时,手误造成参数出错
* 在经常梁隐磨发生IP冲突的环境.
* 网络中有大量计算机需要更改网络参数.
三.dhcp服务器的条件:
* 服务器必须有相应的dhcp软件,在linux计算机中,要求已经安装了dhcp软件包
* 服务器必须要求具有静态的IP地址
* 服务器为工作站分配IP地址,前提是服务器必须有可用的空闲IP地址.
四.linux中dhcp服务器安装及启动:
1.dhcp服务器软件包安装:
rpm -qa | grep dhcp
软件包名为 dhcp-3.0pl1-23
2.dhcp服务器主进程名称为 dhcpd
控制脚本为 /etc/rc.d/init.d/dhcpd
3. dhcp服务器启动:
默认情况下,无法启动dhcp服务器,原因在于 /etc目录下不存在dhcp服务器的配置文件dhcpd.conf
从目录 /usr/share/doc/dhcp-3.0pl1 下,将文件 dhcpd.conf.sample 复制到 /etc 目录下,并
改名为 dhcpd.conf
复制完成后,通过对 dhcpd.conf 文件做配置,再由命令 service dhcpd start 启动服务器即可
4.使每次启动计算机后,dhcp服务器自动启动
chkconfig --level 35 dhcpd on
五.配置dhcp服务器,使得服务器为网络中其它计算机分配IP:
在配置dhcp服务器之前,首先确定服务器IP地址,以及网络号等信息
如服务器IP为 10.0.0.219 ,则网络号为 255.0.0.0
打开 /etc/dhcpd.conf 文件,做如下项目设定
subnet 10.0.0.0 netmask 255.0.0.0 { =>指定dhcp服务器的作用域范围在10.0.0.0网络
[服务器IP所在的网络应与上述网络一致]
option subnet-mask 255.0.0.0; =>指定分配IP地址时所使用的掩码
range dynamic-bootp 10.0.0.240 10.0.0.249; =>指定分配的IP地址范围[地址1 小于 地址2]
完成后,保存橡斗退出,并重启dhcpd进程 [ service dhcpd restart ]
六.配置计算机从dhcp服务器获取IP地址等:
[以windows为例]
将tcp/ip协议中的IP地址,更改为自动获取
完成后,可以通过命令
ipconfig /all -->查看网络信息
ipconfig /release -->丢弃所获取的IP
ipconfig /renew -->重新获取IP
七.为dhcp服务器做进一步配置:
1.配置IP地址的租用期限:
[默认租用期限为 6 小时]
在配置文件中
default-lease-time 21600; -->21600秒,即六小时
max-lease-time 43200; -->续约地址最大使用 十二小时
2. 在服务器配置为工作站分配的网关与dns参数.
option routers 10.0.0.1; ->网关选项,工作站获取IP同时,也
获取了网关地址.
option domain-name-servers 202.103.224.68; ->dns选项,工作站获取IP同时,也
获取了dns服务器地址.
3. 为网络中特定的计算机添加地址保留;
为网络中特定的计算机绑定IP,使其无论在何时,均从服务器获取同一个IP地址,而且不会
受租用期限的限制.
配置文件中有如下配置
host ns { =>ns 为本次绑定的名称标识,可任意,最好填写对方
计算机名称
next-server marvin.redhat.com; =>当前服务器无IP时,用下一服务器分配.通常可省略 hardware ethernet 12:34:56:78:AB:CD; =>对方计算机的网卡卡号,注意格式
fixed-address 207.175.42.254; =>要分配给对方计算机的IP地址
}
完成后,重启dhcp服务器即可.
工作站可以采用命令刷新,或者重启计算机
八. 工作站向服务器请求分配IP地址的过程:
* dhcp discovery[搜索:工作站向整个网络发送广播,搜索dhcp服务器]
* dhcp offer[回应:dhcp服务器收到广播后,检测自身IP地址池是否有空闲IP,有则分配一个地址给
工作站]
* dhcp request[请求:工作站收到服务器分配的地址后,立刻应用,并发一确认信息给服务器,请求
服务器确认所使用的IP地址]
* dhcp pack [确定:服务器收到请求信息,将分配的地址标识为已用,完成地址分配]
九. dhcp中继:
计算机x ,y ,z 发送广播请求分配地址,此时服务器s 收到请求
但服务器S并不是dhcp服务器,由于配置了dhcp中继,则服务器S会向网络其它dhcp服务器
发送请求分配IP, dhcp服务器收到请求后,立刻分配IP地址给服务器S,而服务器S再将
所得到的地址分配给计算机 x, y, z
在linux中配置dhcp中继方法如下:
采用vi 打开 /etc/sysconfig/dhcrelay 文件
INTERFACES ="" -->填写上采用哪个接口接收工作站的广播
DHCPSERVERS="" -->填写网络中dhcp服务器IP地址
如 INTERFACES="eth1"
DHCPSERVERS="10.0.0.219"
完成以后保存,并启动独立进程 dhcrealy 即可
祝你好运.
6. DHCP 怎样设置
设置和使用DHCP
在FreeBSD的Packages Collection中,有两个不同的DHCP客户机和服务器软件,一个为ISC-DHCP,另一个为WIDE-DHCP,两个软件都包括了DHCP客户软件和服务器软件,其中ISC-DHCP 更为常用一些,这里就以ISC-DHCP为例介绍在FreeBSD上安装和设置DHCP。
为了支持DHCP,首先要确认系统内核支持伪设备bpfilter,如果没有,就需要重新编译内核。伪设备bpfilter 是一个允许应用程序接收网络的原始数据包的界面,这样应用程序就能接收目的地址非本机IP地址的数据包了。DHCP使用bpfilter的原因是在DHCP设置好计算机的TCP/IP之前,由于计算机本身没有定义IP地址,而TCP/IP堆栈本身不会接收不具备本机IP地址的数据包。要接收DHCP服务器发送回客户的数据亏或包,就需要绕过TCP/IP堆栈,而必须使用伪设备bpfilter。
pseudo-device bpfilter 4
定制内核之后,还要保证/dev/目录下具有对应bpfilter的设备文件。
# cd /dev
# sh MAKEDEV bpf0 bpf1 bpf2 bpf3
从Packages Collecion中安装DHCP软件,这将DHCP软件中的dhcpd,dhclient和dhcprelay 安装到/usr/local/sbin目录下。
$ ls /usr/local/sbin/dhc*
/usr/local/sbin/dhclient /usr/local/sbin/dhcpd
/usr/local/sbin/dhcrelay
设置服务器
为了设置DHCP服务器dhcpd,首先就要设置其配置文件/etc/dhcpd.conf。这个配置文件语法简单,比较容易理解。
server-identifier 192.168.3.1;
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.10 192.168.3.20;
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.3.255;
option routers 192.168.3.1;
option domain-name-servers 192.168.3.1;
option domain-name "exampleorg.org.cn";
}
host a1 {
hardware ethernet 00:90:27:4e:92:09;
fixed-address 192.168.3.32;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.3.255;
option routers 192.168.3.1;
option domain-name-servers 192.168.3.1;
option domain-name "exampleorg.org.cn";
}
基本的dhcpd.conf首先使用server-identifier定义了本服毕空伏务器的IP地址,这对于有多个IP地址的服务器系统十分重要,一般不必设置这个参数,dhcpd能自动侦测。然后定义要分配IP地址的客户机组,每组拥有一个可用的IP地址范围。有两种客户机组的划分方式,一种为指定子网段来区分,一种为指定主机来区分。
这个例子中的第一组定义了一个子网192.168.3.0/24,这个子网段内,可供DHCP服务器分配的I P地址范围为192.168.3.10到192.168.3.20,这手携个地址范围也可以不是连续的,不连续的地址可以使用多个range设置参数来设置。此外,还设置了这一组内分配的IP地址的租期限制default-lease-time 和max-lease-time,可以使用缺省值,而不必改动。后面的option参数设置DHCP的附加功能,例如设置DHCP客户的网络掩码、广播地址、DNS服务器、域名等等。事实上这些option设置选项也可以被用作全局选项设置,即放置在server-identifier之后,对所有的客户机组起作用。
例子的第二组是针对某个特定主机a1进行的设置,这个主机被限定为以太网地址为hardware ethernet 参数值的计算机,将给这个计算机分配一个固定地址。这种分配方式实际等价于固定地址分配方式,唯一的好处就是能够对IP地址进行集中管理,不必每个计算机分别设置了。这里同样也可以使用option参数,设置TCP/IP的参数。
dhcpd.conf中还能有更多的组,包括对非本网段的子网上的客户机指定的组。
当设置了dhcpd.conf之后,就能启动dhcpd守护进程了,由于计算机会有多个网络界面,需要指定dhcpd 服务器的网络界面,以便回应相应界面上的DHCP请求。
# /usr/local/sbin/dhcpd fxp0
在调试阶段,可以使用-d参数,这样dhcpd就不会进入后台运行,而一直保留在前台,并显示各个与客户计算机通信的过程。当一切都调试完毕之后,就能去除-d参数,并将执行命令放入rc.local启动脚本中,以便系统能够自动执行。
此后,dhcpd正常运行的时候,会将每一次客户请求及其回应的IP地址分配的记录,都记录在/var/run/dhcpd.leases 文件中。为了使dhcpd能正常进行日志记录,应该在启动dhcpd之前使用touch 命令,生成一个新的日志文件。以后就可以查看这个日志文件的内容,以得到当前DHCP服务器的状态和客户机IP地址分配的情况。以下是一个日志文件的部分内容。
lease 192.168.3.11 {
starts 3 1998/11/26 05:46:28;
ends 4 1998/11/27 05:46:28;
hardware ethernet 0:80:c2:12:fd:d;
uid 1:0:80:c2:12:fd:d;
}
touch命令的优点是在存在相关的文件时,不删除或更改文件内容,只更新其访问时间设置,只有在文件不存在时才生成新文件。
然后就能设置网络中的客户计算机使用DHCP协议,获取合法的IP地址了。通常Windows计算机的TCP/IP设置中能直接设置支持DHCP协议,如果为Unix(包括FreeBSD)设置DHCP客户软件,就需要dhclient的支持。
设置客户软件
ISC-DHCP中同样也提供了一个客户程序dhclient,用于FreeBSD系统从DHCP服务器上动态获取一个IP地址。这个程序同样也要求内核支持bpfilter伪设备。
dhclient使用的配置文件为/etc/dhclient.conf,然而最一般的情况下可以不使用它,软件本身的缺省配置就满足一般情况下请求IP地址的需要了。缺省设置下dhclient在获得了IP地址之后,会自动执行/etc/dhclient-script 这个脚本程序,以针对刚获取的动态IP地址进行必要的设置。很多依赖于IP地址的网络服务,就可以在这个脚本中启动,或者针对重新分配的动态IP地址对已有的网络服务进行修正。虽然使用者也许不希望使用这个脚本设置网络,但如果不存在这个脚本程序,或者这个程序不可执行,那么dhclient就不能正常执行。
因此对于最一般的客户机,一般只连接到一个网络上,仅具备一个网络界面,可以使用一个空的dhclient.conf 和空的declient-script文件,就能完成设置IP地址和其他TCP/IP参数的任务了。
# touch /etc/dhclient.conf
# touch /etc/dhclient-script
# chmod +x /etc/dhclient-script
# /usr/local/sbin/dhclient fxp0
Listening on BPF/fxp0/00:90:27:4e:92:09/unattached
Sending on BPF/fxp0/00:90:27:4e:92:09/unattached
Sending on Socket/fallback/fallback-net
DHCPDISCOVER on fxp0 to 255.255.255.255 port 67 interval 22
DHCPOFFER from 192.168.3.1
DHCPREQUEST on fxp0 to 255.255.255.255 port 67
DHCPACK from 192.168.3.1
bound to 192.168.3.32 -- renewal in 3600 seconds.
在更复杂的情况下,就要指定更多的内容,例如当系统有多个网卡时,要指定dhclient应该从哪个子网中获得IP地址设置,就需要使用设置文件dhclient.conf。一般除非有多个局域网网络界面,都应该使用空设置文件,避免产生配置错误。以下为一个简单的dhclient.conf的例子,可以用于多网络界面的情况:
# Defaults
timeout 60;
reboot 10;
retry 60;
select-timeout 5;
initial-interval 2;
script "/etc/dhclient-script";
interface "fxp0" {
request subnet-mask, broadcast-address, routers, domain-name-servers,
domain-name, host-name;
require domain-name-servers;
}
这个设置文件主要用于重新定义一些参数,比较容易理解,更改也比较容易。
成功的手工执行dhclient之后,就可以考虑将其和系统启动文件相结合了。因为很多网络服务是依赖于网络配置的,应该在启动这些网络服务之前使用DHCP配置好TCP/IP。使用dhclient-script启动服务的想法虽然也能解决问题,然而这就不能使用系统的启动rc文件中的相关设置启动网络服务,而在这个dhclient-script 中重新启动,因此比较麻烦。更简便的做法是仅仅在dhclient-script中设置hostname,而让系统启动文件完成其他网络服务的启动。这样就要求将dhclient与系统rc文件结合起来。
#hostname="my.domain.name"
network_interfaces="fxp0 lo0" # List of network interfaces (lo0 is
loopback).
ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration.
#ifconfig_fxp0="inet 192.168.3.12 netmask 255.255.255.0"
defaultrouter="NO" # Set to default gateway (or NO).
这样就需要更改rc.conf文件,更改一些设置语句。首先要注释hostname设置,而在dhclient.script中进行设置,也不必设置defaultrouter,它通过DHCP协议自动设置。同时要保证network_interfaces参数中,设置了要通过dhclient来获取IP地址的网络界面fxp0,以允许rc系统文件能启动该与该界面相关的设置文件,然而却必须注释设置该界面的参数ifconfig_fxp0,因为这个设置参数是用于设置静态IP地址的选项,因此要屏蔽它,而使用start_if.fxp0配置脚本来设置网络界面。
缺省情况下,不存在start_if.fxp0等start_if设置网络脚本,但是这些脚本在rc.network已经做好了设置,针对每个网络界面启动,而不需要在rc.conf中做特别设定。对于dhclient,可以创建一个简单的启动脚本start_if.fxp0为:
#! /bin/sh
/usr/local/sbin/dhclient fxp0
这样,dhclient就和系统启动文件结合起来了,在系统启动的时候会自动设置好TCP/IP,此后再启动相关的网络服务。此时需要注意的是删除原来可能在rc.local或者在/usr/local/etc/rc.d目录中的dhclient启动命令,以避免冲突。
在FreeBSD系统上不推荐使用动态IP地址,因为FreeBSD能提供大量有用的网络服务,都会与IP地址或域名有关,不适合使用动态IP地址。如果必须要作为DHCP客户以保持IP地址的统一管理,建议使用dhcpd针对硬件地址的设置方式,在DHCP服务器上为FreeBSD系统设定一个固定IP地址。
设置DHCP中转
当网络中存在多个子网的时候,由于客户计算机只能通过广播发送DHCP请求,这些请求一般不能跨越路由器。为了在DHCP服务器存在的子网之外的DHCP客户分配IP地址,可以设置路由器转发DHCP请求,即转发相应的UDP 端口67和68的广播数据包。但这样设置就增加了网络广播,不利于减少网络流量。
此外,还有另外一种方法来使得DHCP客户计算机能使用子网之外的DHCP服务器来分配IP地址。这就是使用 DHCP中转计算机来转发DHCP的请求。DHCP中转计算机能听取DHCP广播,由于它了解DHCP服务器的IP地址,因此能通过正常的IP数据包将原广播包转发到服务器中,然后再将服务器的回应信息回复客户机。这样DHCP客户机就以为本子网中也存在一个DHCP服务器。
在ISC-DHCP软件中,提供的中转程序为dhcrelay,这是一个简单的程序,不需要额外的设置。启动 dhcrelay的标准方式为使用命令行指定将DHCP服务请求中转到的目的DHCP服务器,由于DHCP中允许多个 DHCP服务器同时为客户提供地址,而不会产生冲突,就可以使用多个DHCP服务器进行中转。
# dhcrelay dhcpsrv1 dhcpsrv2
如果这台中转服务器为多网络界面计算机,那么dhcrelay将侦听所有网络界面的DHCP请求,有时不希望 dhcrelay中转某些界面上的请求,就可以设置dhcrelay侦听的网络界面,这需要指定-i参数。
# dhcrelay -i xl0 dhcpsrv1
提供备份的DHCP设置
在一个具备多个子网的大型网络中,提供冗余是一个非常重要的问题。由于DHCP协议中DHCP服务器负责分配 IP地址,一旦DHCP服务器出现故障,那么所有的客户就无法正确获得IP地址,从而不能访问网络。
但可以同时设置多个DHCP服务器来提供一个冗余能力。然而DHCP服务器本身是不提供备份能力的,不能互为备份。他们占用的IP地址资源也不能重叠,以免发生客户机IP地址冲突的现象。提供容错能力是通过分割可用的IP地址到不同的DHCP服务器上,通过多个DHCP服务器同时为一个网络服务,从而使得一个服务器发生故障还能正常执行操作。通常为了进一步增强可靠性,还可以将不同的DHCP服务器放置在不同子网中,互相使用中转提供服务。
例如在两个子网上各自有一个DHCP服务器,标准的做法可以不使用DHCP中转,各个子网上的服务器为各个子网服务就行了。然而为了达到容错的目的,可以互相为另一个子网提供服务,通过设置中转或路由器转发广播以达到互为服务的目的。
例如位于192.168.3.0网络上的srv1的配置可能为:
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.10 192.168.3.199;
}
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.200 192.168.4.220;
}
位于192.168.4.0网络上的srv2的配置可能为:
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.10 192.168.4.199;
}
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.200 192.168.3.220;
}
注意,上述设置都是设置样例,标准情况下还需分别指定各个option,用于设置IP地址及其相关设置。
可以看出两个服务器都能对两个网络上的客户机分配IP地址,而各自又有一个主要服务的网络。每个网络上的IP 地址主要放在本地的服务器上,但也有少部分地址放在另一个子网中的服务器上(地址资源不能冲突),这样提供了一定的容错能力。
实际的多子网网络中,并不必要每个子网都设置一个服务器,并使用另外的服务器备份,一般网络中有2-3个DH CP服务器就够用了。其他子网可以通过DHCP中转的方式,给该子网提供DHCP服务。
7. .DHCP服务的启动脚本是 ,主配置文件是位于/ete/dhop目录下的什么
配置文件是/etc/dhcpd.conf
启动圆携槐服橘友务:service dhcpd start或/etc/init.d/隐卖dhcpd start
停止服务:service dhcpd stop或/etc/init.d/dhcpd stop