资源描述
----------------------------
出自:crazylinux工作室
网址:
时间:2007.12.26
转载请保留此信息
----------------------------
实验环境:AS4默认安装
实验目标:架设DHCP服务器
联系方式:
一,DHCP服务器rpm包的配置
大家好!
这次我们来学习Linux系统中的DHCP服务器的配置。主要目标有两个:
1,配置DHCP服务器给客户端计算机分配IP地址,网络地址,DNS和网关地址
2,为某台客户机保留IP地址
下面我们开始了!首先我们检查是否已经安装了DHCP服务器端的软件
[root@localhost ~]# rpm -qa | grep dhcp à查询DHCP没有安装
dhcpv6_client-0.10-8
[root@localhost ~]# mount /media/cdrom/ à挂载AS4第4张盘
我们服务器上要安装的是dhcp-3.0.1-12_EL.i386.rpm,那么下面我们来安装。
[root@localhost ~]# rpm -ivh /media/cdrom/RedHat/RPMS/dhcp-3.0.1-12_EL.i386.rpm
DHCP服务器的配置文件为/etc/dhcpd.conf,默认情况下此文件不存在,不过当DHCP软件包安装之后会提供一个配置模板:/usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample
[root@localhost RPMS]# rpm -ql dhcp
/usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample (模版配置文件)
[root@localhost RPMS]# cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf
将模板拷贝到/etc/目录下命名为dhcpd.conf,然后在该文件上进行相关的配置即可。
到现在为止,我们的准备工作已经OK,下面我们就正式开始架设DHCP服务器
实例:
目前我的内部网段设定为 192.168.1.0/24 这一段,且默认网关为 192.168.1.1 ,此外,DNS主机的IP为192.168.1.1,所分配的网段内的子网掩码是255.255.255.0我想要让每个使用者默认租约时间为21600s,最大租约时间为43200s;局域网内所有主机的域名为“” 我只想要分配的 IP 只有 192.168.1.100 到 192.168.1.200 这几个,其它的 IP 则保留下来; 我的主机的 MAC 是 00:0C:29:F7:DB:70 ,我要给主机名称为crazylinux IP 为 192.168.1.10 这个。
以下为修改之后的dhcpd.conf文件的内容:
[root@localhost RPMS]# cat /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates; #dhcp服务器不要为它分配ip地址更新本地域名的dns记录
subnet 192.168.1.0 netmask 255.255.255.0 { #申明分配ip的子网范围
# --- default gateway
option routers 192.168.1.1; #定义网关
option subnet-mask 255.255.255.0; #定义子网掩码
option nis-domain "domain.org"; #定义nis域名
option domain-name ""; #定义dns服务器域名
option domain-name-servers 192.168.1.1; #定义dns服务器的ip
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.1.100 192.168.1.200; #分配ip地址的范围
default-lease-time 21600; #定义的默认租约时间6小时
max-lease-time 43200; #定义的最大租约时间12小时
# we want the nameserver to appear at a fixed address
host crazylinux { #定义为客户机绑定ip的主机名
hardware ethernet 00:0C:29:F7:DB:70; #所绑定主机的mac地址
fixed-address 192.168.1.10; #所绑定的ip
}
}
完成之后重启服务:service dhcpd restart,若服务启动成功则可以使用一台客户机进行测试。这样一台最简单的DHCP服务器就架设完毕。
3,租约文件
在DHCP服务器上,/var/lib/dhcp/dhcpd.leases文件中存放着DHCP客户租期数据库。只要DHCP服务器能够成功启动,该数据库就可以自动创建。并且,所有通过该DHCP服务器分配到地址的客户机的地址信息都会存储于该文件中。
该租期数据库文件经常被重建,但是不应该手工修改。
另外如果主机上安装了两个网卡,但是只想让DHCP服务在其中的一个网卡上监听,则需要配置DHCP服务器只在那个设备上启动。在/etc/sysconfig/dhcpd中,把网卡接口的名称添加到DHCPDARGS列表中。
#Command line options here
最后在客户端上使用netconfig命令设置客户端自动获取地址,完成后重启服务即可。
[root@localhost RPMS]# cat /var/lib/dhcp/dhcpd.leases 在服务器上查看已经分配出去的IP
# All times in this file are in UTC (GMT), not your local timezone. This is
# not a bug, so please don't ask about it. There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature. If this is inconvenient or confusing to you, we sincerely
# apologize. Seriously, though - don't 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.1
lease 192.168.1.200 {
starts 6 2007/03/17 04:36:31;
ends 6 2007/03/17 10:36:31;
binding state active;
next binding state free;
hardware ethernet 00:0c:29:67:57:c1;
}
lease 192.168.1.199 {
starts 6 2007/03/17 04:37:13;
ends 6 2007/03/17 10:37:13;
binding state active;
next binding state free;
hardware ethernet 00:0c:29:ef:cc:aa;
uid "\001\000\014)\357\314\252";
client-hostname "cheshi-eeb7e489";
}
嘿嘿 成功。。。
二,DHCP服务器源码包配置
还是和上面的rpm包一样,我们这次用源码包来设置dhcp服务器,在配置之前首先准备工作:
软件:
gcc
dhcp-4.0.0.tar.gz
1,先安装gcc
[root@localhost cdrom]# rpm -ivh gcc* --aid
2,安装dhcp源码包
首先确定系统上没安装rpm包
[root@localhost dhcp-3.0.2]# rpm -q dhcp
package dhcp is not installed
[root@localhost pub]# tar -zxvf dhcp-4.0.0.tar.gz -C /usr/local/src/
[root@localhost pub]# cd /usr/local/src/dhcp-4.0.0/
[root@localhost dhcp-4.0.0]# ./configure
[root@localhost dhcp-4.0.0]# make
[root@localhost dhcp-4.0.0]# make install
[root@localhost dhcp-4.0.0]# find / -name dhcpd.conf #查找dhcp主配置文件
/etc/log.d/conf/services/dhcpd.conf
/usr/local/etc/dhcpd.conf
/usr/local/src/dhcp-4.0.0/server/dhcpd.conf
[root@localhost dhcp-4.0.0]# cp /usr/local/etc/dhcpd.conf /etc/dhcpd.conf
3,dhcp服务器的配置
[root@localhost dhcp-4.0.0]# cat /etc/dhcpd.conf
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# option definitions common to all supported networks...
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
#default-lease-time 600;
#max-lease-time 7200;
# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
#subnet 10.152.187.0 netmask 255.255.255.0 {
#}
# This is a very basic subnet declaration.
#subnet 10.254.239.0 netmask 255.255.255.224 {
# range 10.254.239.10 10.254.239.20;
# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}
# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.
#subnet 10.254.239.32 netmask 255.255.255.224 {
# range dynamic-bootp 10.254.239.40 10.254.239.60;
# option broadcast-address 10.254.239.31;
# option routers rtr-239-32-1.example.org;
#}
# A slightly different configuration for an internal subnet.
subnet 10.0.0.0 netmask 255.0.0.0 {
range 10.10.10.100 10.10.10.200;
option domain-name-servers 10.0.0.253;
option domain-name "";
option routers 10.0.0.253;
option subnet-mask 255.0.0.0;
option broadcast-address 10.255.255.255;
default-lease-time 21600;
max-lease-time 43200;
}
# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.
#host passacaglia {
# hardware ethernet 0:0:c0:5d:bd:95;
# filename "vmunix.passacaglia";
# server-name "";
#}
# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
host crazylinux {
hardware ethernet 00:0C:29:3B:68:25;
fixed-address 10.10.10.150;
}
# You can declare a class of clients and then do address allocation
# based on that. The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.
class "foo" {
match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}
shared-network 224-29 {
subnet 10.17.224.0 netmask 255.255.255.0 {
option routers rtr-224.example.org;
}
subnet 10.0.29.0 netmask 255.255.255.0 {
option routers rtr-29.example.org;
}
pool {
allow members of "foo";
range 10.17.224.10 10.17.224.250;
}
pool {
deny members of "foo";
range 10.0.29.10 10.0.29.230;
}
}
4,服务启动
[root@localhost dhcp-4.0.0]# touch /var/db/dhcpd.leases
[root@localhost dhcp-4.0.0]# dhcpd
三,RH AS4 dhcp 中继代理
如图所示:
Eth0:192.168.100.248
DHCP Server
Client
Eth0:192.168.0.248
DHCP Relay
Eth1:192.168.100.245
1、 如图所示,配置dhcp server ip 地址,eth0:192.168.100.248;网关为:192.168.100.245
2、 安装dhcp server ,用linux RPM包安装;
3、 编辑 /etc/dhcpd.conf 内容如下:
ddns-update-style interim;
ignore client-updates;
option subnet-mask 255.255.255.0;
option nis-domain "";
option domain-name "";
option time-offset -18000; # Eastern Standard Time
default-lease-time 259200;
max-lease-time 777600;
option domain-name-servers 202.102.224.68,202.102.227.68;
option broadcast-address 192.168.5.255;
#网通DNS服务器地址
#下面配置超级作用域
shared-nework mynet{
subnet 192.168.100.0 netmask 255.255.255.0 {
option routers 192.168.100.245
range dynamic-bootp 192.168.100.1 192.168.100.100;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.248;
range dynamic-bootp 192.168.0.1 192.168.0.100;
}
}
4、 编辑/etc/sysconfig/dhcpd ,DHCPDARGS=eth0
5、 启动dhcp 服务,关闭防火墙。
6、 配置,dhcp relay ip 如下:eth0:192.168.0.248,网关可不设;eth1:192.168.100.245 ,网关为:192.168.100.248
7、 启动ip_forward : echo “1”>/proc/sys/net/ipv4/ip_forward(我在rhel4中实验不需要此步骤)
或者在/etc/sysctl.conf中查看net.ipv4.ip_forward = 1
#sysctl –p 立即生效
8、 安装dhcp 软件
9、 编辑:/etc/sysconfig/dhcrelay
INTERFACES=”eth0 eth1”
DHCPSERVERS=”192.168.100.248”
10, 启动dhcrelay:service dhcrelay start, 关闭防火墙
11, 用XP做 client 去自动获取ip
12, 查看 dhcp server 租期数据库:/var/lib/dhcp/dhcp.leases,可以看到已经租出的ip信息
13, 在XP可以获取到ip。
四,使用ether-wake实现远程自动开机
1, 首先在客户机bios中设置网络唤醒功能
2, 连网
3, 记录客户机的MAC地址,关机
在dhcp主机中下载ether-wake.c
ftp://
开始编译:
#gcc -0 –Wall –o ether-wake ether-wake.c
#./ether-wake 11:22:33:44:55:66 (唤醒主机)
#./ether-wake –u (查看帮助)
五,DHCP原理
两台连接到互联网上的电脑相互之间通信,必须有各自的IP地址,但由于现在的IP地址资源有限,宽带接入运营商不能做到给每个报装宽带的用户都能分配一个固定的IP地址(所谓固定IP就是即使在你不上网的时候,别人也不能用这个IP地址,这个资源一直被你所独占),所以要采用DHCP方式对上网的用户进行临时的地址分配。也就是你的电脑连上网,DHCP服务器才从地址池里临时分配一个IP地址给你,每次上网分配的IP地址可能会不一样,这跟当时IP地址资源有关。当你下线的时候,DHCP服务器可能就会把这个地址分配给之后上线的其他电脑。这样就可以有效节约IP地址,既保证了你的通信,又提高IP地址的使用率。
要申请固定IP上网,资费高很多的,所以对于普通客户,一般都是通过DHCP动态分配地址的。如果你不是商业用户,基本上是必须装DHCP才能上网的。
DHCP(Dynamic Host Configure Protocol),
是被广泛应用于TCP/IP协议的网络中的动态主机配置协议,使用dhcp协议,有很多简单、易用的优点,主要表现在:网络管理员可以验证IP地址和其它配置参数,而不用去检查每个主机;DHCP不会同时租借相同的IP地址给两台主机;DHCP管理员可以约束特定的计算机使用特定的IP地址;可以为每个DHCP作用域设置很多选项;客户机在不同子网间移动时不需要重新设置IP地址。
dhcp协议的工作流程
1、DHCP客户机寻找DHCP服务器的阶段,可以称为发现阶段:DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。 udp 68 à udp 67
2、DHCP服务器提供IP地址的阶段,可以称为提供阶段:在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息
3、DHCP客户机选择某台DHCP服务器提供的IP地址的阶段,可以称为选择阶段:如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
4、DHCP服务器确认所提供的IP地址的阶段,可以称为确认阶段:当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址
5、以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
6、DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。如果该客户机在租约规定的时间内一直占用dhcp分配的地址并且在线,则该地址将一直被该客户机所使用。
由于时间匆忙,作者水平有限,难免有不足之处,敬请批评指正,谢谢大家:
--crazylinux
展开阅读全文