5.DHCP服务

DHCP的全称是动态主机配置协议(Dynamic Host Configuration Protocol,是由IETF(Internet网络工程师任务小组)。 .它是用来自动给客户机器分配 TCP/IP信息的网络协议。每个DHCP客户都连接到中央位置的DHCP服务器,该服务器包括IP地址、网关、DNS服务器信息的客户网络配置。

共享作用域(超级作用域):对于共享网络其实是一组作用域的集合。在很多的时候在一个物理网络中可能会存在很多逻辑子网,我们在配置没一个子网的时候都是在配置一个单一的作用域。但是如果能碰到每个网络都在某一个部分都是相同的,那么就要对每个网络都进行设置,这样是比较麻烦的。我们可以利用共享网络做用具将不同的作用域放在这个超级域里,这样我们就可以针对不同的作用域进行不同的设置。 

.注:对于共享网络作用域其实只是很多作用域的集合,它并不用于设置具体的作用范围或者具体的参数

DHCP中继代理:不同网络段中能够转发 DHCP请求消息的路由器或者主机

工作过程:

租用请求:当DHCP客户机启动后,向网络内广播一个DHCP请求信息,所有机器都会收到,但不是DHCP服务器的机器会把信息丢掉。 

租用提供:DHCP服务器回应客户机,提供一个网内没有的IP地址

租用选择:如果DHCP服务器有多个,则选择第一个回应的信息,然后向网络中广播一个消息,表明自己已经接受一个DHCP服务器的IP 

租用确认:DHCP服务器接受到客户的选择信息之后,会返回给客户一个消息包,客户机按服务器的信息配置机器IP,服务器记录客户机的IP地址。

配置文件 

/etc/dhcpd.conf主配置文件

dhcpd.conf.sample样本文件,样本文件在 /usr/share/doc/dhcp-3.*pl2目录中) 

/usr/sbin/dhcpd执行文件 

/var/lib/dhcp/dhcpd.leases 租约文件 

/etc/sysconfig/dhcrelay 中继代理配置文件

主配置文件/etc/dhcpd.conf

全局配置项

Subnet语句(网段地址)

选项:选项所定义的参数、值用来应答DHCP请求

range语句:设定地址范围

Host语句:指定的主机保留IP地址

Ddns-update-style interim:动态DNS更新(ad-hoc特殊模式,interim互动草图过渡模式;none不更新)

Ignore client-updates:忽略客户端动态更新

DHCP配置

租期为秒,-1永不过期

是否支持动态更新

声明子网{

指定客户端网关

子网掩码

网络信息服务域名

设定DNS

设定DNS服务器地址,如果多个用“,”隔开

设定偏移时间

设定NTP服务器地址(保持系统时间精准)

设定NETBIOS服务器地址

设定地址范围(可设定多个同网段地址池)

IP租期

IP最大租期

设定主机IP保留{

设置从引导文件装入的主机名称,只有无盘工作站使用

所要进行绑定的客户端MAC地址

定义与上面MAC地址捆绑的IP

}

配置完成后启动DHCP协议服务

#service dhcpd start

/etc/rc.d/init.d/hcpd start

/usr/sbin/dhcpd start

/usr/sbin/dhcpd eth1此服务占用67端口

#cat /etc/srvices |grep bootps

Dhcp前身为bootps

检查进程

#ps ax |grep dhcpd

#service dhcpd status

检查端口

#netstat -naup|grep 67

指定网络接口启动DHCP协议服务器

#echo "DHCPDARGS=eth0">>/eth/sysconfig/dhcpd

如果是双网卡主机,eth1被配置为DHCP客户机从连网上检索IPeth0做内部DHCP服务器。用户无法通过互联网连接dhcpd守护进程。

客户租约文件

文件位于/var/lib/dhcp目录中,rpm安装ISC DHCP协议,该目录已存在,dhcpd.leases文件格式为:Lease address (statement)

若不是ISC DHCP协议安装,则手工建立空文件

#touch /var/lib/dhcp/dhcpd.leases

配置DHCP client

修改/etc/sysconfig/network文件,修改以下行

NETWORKING=Yes

//引导时启动联网

#echo "NETWORKING =yes">>/etc/sysconfig/network

Service network start/stop/restart

修改/etc/sysconfig/network-scripts/ifcfg-eth0

应该包含以下行:

DEVICE=eth0

BOOTPROTO=dhcp

ONBOOT=yes

获取地址

#dhclient#dhclient eth0

释放地址

#dhclient -r

查看租约

#tcpdump -i eth0 -v查看租约 或 vi /var/lib/dhcp/dhclient -eth0.lease

配置DHCP中继代理

配置中继代理可以接受客户端的广播并转发到服务器上,这样客户端就可以利用中继代理把自己所请求的IP地址的广播消息穿过路由器与服务器取得联系

工作原理:

在本地子网的客户端发送广播等待得到IP地址,中继代理截获消极将其发送到另一个子网中

的服务器上,服务器利用一个特殊的数据包对DHCP中继代理做出回应然后中继代理将此数据包回应广播到整个本地子网上。当本地子网的接收到此回应就可以使用所获得的 IP和相关配置

# vi /etc/sysconfig/dhcrelay

修改 

#Command line options here 

INTERFACES="eth0 eth1 eth2"指定中继代理接收到客户端消息的时候用哪个网络设备将消息通知到服务器 

DHCPSERVERS="192.168.1.168"指定dhcp服务器的 IP地址

编辑完成之后启动代理服务 

#servers dhcrelay start 

DHCP冗余 

server1 (192.168.0.2/24) 

vi /etc/dhcpd.conf 

server2 (192.168.1.2/24) 

#vi /etc/dhcpd.conf 

 通过上面可以看出,两个服务器都可以对子网 AB的客户端进行IP地址分配,而且每个服务器所提供的IP地址都可以完全对其它网络中的客户端进行分配IP,还可以看出在两个子网

中各有一台服务器,,这样不仅能减轻网络负载还使服务器拥有了一定的冗余能力 

如果打算为不同地址范围的主机分配不同的网络参数,那么

可以改进配置文件。

配置内核文件开转发

Vim /etc/sysctl.conf

Net.ipv4.ip_forword = 1原来是0

#sysctl -p 查看改的结果

DHCP服务的日志信息从系统的日志服务中分离.在不改变其他配置内容的前提下,在配置文件/etc/dhcpd.conf的全局配置项中加入如下语句: 

log-facility local4; 

修改日志服务的主配置文件为如下所示: 

#vi /etc/syslog.conf 

超级域 

实际上对于超级域来说,它就是同一物理网络中有很多逻辑子网的集合。它本身并没有太多的意义,而是将本来就属于同一个物理网络段中的其它子网归纳在一起。超级域不用做其它而外的设置。如:

server-name "hello"DHCP客户端的租约中能够查看到是那台DHCP服务器给他们分配的IP地址。这里的名字最好与DHCP服务器的计算机名称一致,这样可以让客户端很快就知道哪个是DHCP服务器给自己的计算机分配的IP地址。处于安全考虑不推荐使用。

option netbios-name-servers 192.168.0.2; 

shared-network test {共享网络的配置,在shared-network之后必须自定义一个共享网络名。 

subnet 192.168.0.0 netmask 255.255.255.0{ 

option broadcast-address 192.168.0.255; 

option routers 192.168.0.254; 

range 192.168.0.2 192.168.0.166; 

range 192.168.0.169 192.168.0.254; 

subnet 192.168.1.0 netmask 255.255.255.0{ 

option broadcast-address 192.168.1.255; 

option routers 192.168.1.254; 

range 192.168.1.1 192.168.1.166; 

range 192.168.1.168 192.168.1.254; 

group {可以将类似的条件归为一个组中,这样可以对整个组进行管理 

host hehe { 

option host-name "abc.com";指定所要进行绑定的IP地址的DHCP客户端计算机名称。只是方便管理员在查看租约的时候能够看到哪些IP分配给哪些客户端,但是不能在WindowsDHCP客户端下用

hardware ethernet aa:bb:cc:dd:ee:ff; 

fixed-address 192.168.0.166; 

host winxp { 

hareware ethernet bb:cc:dd:ee:ff:aa; 

fixed-address 192.168.0.160; 

设置DHCP自动启动 

1setup-system service-dhcpd 

2 # ntsysv-dhcpd 

3 # chkconfig-add dhcpd

4.#chkconfig --level 345 dhcpd on/off DHCP服务

作业:

目标功能:

使用一台 RHEL5服务器[Server1]连接 ABC三个网段,A网段中有一台 DHCP服务器[Server2]。需要在 Server1上配置 dhcp中继代理,以使Server2能够给三个网段的客户机自动分配IP地址,给A网段的网络打印机绑定永久 

IP地址。

实验参数如下: 

Server1: 

eth0: 172.17.17.1/24 

eth1: 192.168.1.1/24 

eth2: 192.168.2.1/24 

Server2: 

eth0: 172.17.17.2/24

注意:dhcp也就是 Server2上要配置默认网关172.17.17.1

实验环境:一台有三块网卡的RHEL5充当dhcp中继,eth0vmnet2中,eth1vmnet3中,eth2vmnet5中。分别在三个不同的网段。另一台RHEL5dhcp服务器,eth0的网段在vmnet2中,其中有一台WINDOWS客户机在vmnet3中为动态获取IP,获得192.168.1.0网段中的IP地址。另一台为linux客户机在 vmnet4中为动态获取IP,获得192.168.2.0网段中的ip地址。 

具体配置步骤: 

Server1 

[DHCP中继]: 

1# vi /etc/sysctl.conf 

net.ipv4.ip_forward = 1 

# echo 1 > /proc/sys/net/ipv4/conf/all/bootp_relay 

# echo 1 > /proc/sys/net/ipv4/ip_forward 

//测试一下 

#sysctl –p 

2# vi /etc/sysconfig/dhcrelay 

INTERFACES="eth0 eth1 eth2" 

DHCPSERVERS="172.17.17.2" 

//这里要定写上dhcpIP地址: 

3# chkconfig --level 2345 dhcrelay on 

# /etc/init.d/dhcrelay start

注意:安装 DHCP服务器的软件包,否则下面的dhcrelay命令没法用 

#dhcrelay 192.168.1.2DHCRELAY服务器上需要安装DHCP服务器软件包,不需要创建 

dhcpd.conf主配置文件(因此不用启动dhcp服务器). 

[注:如果仅当次测试可以使用“ 

/usr/sbin/dhcrelay -i eth0 -i eth1 -i eth2 172.17.17.2”命令启动dhcp中继服务

Server2 

[DHCP服务器]: 

1# vi /etc/dhcpd.conf 

ddns-update-style none; 

ignore client-updates; 

default-lease-time 36000; 

max-lease-time 86400; 

option time-offset -18000; 

subnet 172.17.17.0 netmask 255.255.255.0 

{ option routers 172.17.17.1; option subnet-mask 255.255.255.0; 

option domain-name-servers 172.17.17.1,202.106.0.20; 

range 172.17.17.100 172.17.17.200; 

host printer 

{ hardware ethernet 00:12:fc:78:AB:CD; 

fixed-address 172.17.17.250; 

subnet 192.168.1.0 netmask 255.255.255.0 

{ option routers 192.168.1.1; 

option subnet-mask 

255.255.255.0; 

option domain-name-servers 192.168.1.1,202.106.0.20; 

range 192.168.1.100 192.168.1.200; 

subnet 192.168.2.0 netmask 255.255.255.0 

option routers 192.168.2.1; 

option subnet-mask 255.255.255.0; 

option domain-name-servers 192.168.2.1,202.106.0.20; 

range 192.168.2.100 192.168.2.200; 

2# vi /etc/sysconfig/dhcpd DHCPDARGS="eth0" 

3# chkconfig --level 2345 dhcpd on 

   # /etc/init.d/dhcpd start