dhcp服务配置
安装dhcpd包
主要是配置/etc/httpd.conf默认情况是不存在的,可以将/usr/share/doc/dhcp-3.0.5/dhcp.conf.sample复制到/etc/http.conf然后根据需要进行配置。
dhcp配置文件dhcp.conf格式
选项/参数 #这些选项/参数全局有效
声明{
选项/参数 #这些选项/参数局部有效
}
eg:
注意最下面的host ns{}在里面可以设定某台客户端主机的固定dhcp值如我想让我的主机每次在自动获取ip的时候都能获取到192.168.1.100那么在
Host ns{
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 192.168.1.100;
} 这样就可以了。
dhcp.conf文件中常用的声明及功能
Shared-network 名称{....} |
定义超级作用域 |
Subnet 网络号 netmask 子网掩码 {......} |
定义作用域(或ip子网) |
Range 起始ip地址 终止ip地址 |
定义作用域(或ip子网)范围 |
Host 主机名 {......} |
定义保留地址 |
Group {......} |
定义一组参数 |
参数
参数是必选的或控制dhcp服务器行为的值。
Ddns-update-style 类型 |
定义所支持的dns动态更新类型(必选) |
allow/ignore client-updates |
允许/忽略客户机更新dns记录 |
Default-lease-time 数字 |
指定默认的租约期限 |
Max-lease-time 数字 |
指定最大的租约期限 |
Hardware 硬件类型 MAC地址 |
指定网卡借口类型和MAC地址 |
Server-name 主机名 |
通知dhcp客户机服务器的主机名 |
Fixed-address IP地址 |
分配给客户端一个固定的IP地址 |
选项
用来配置dhcp客户端的可选参数。它们全部用option关键字作为开头
Subnet-mask 子网掩码 |
为客户端指定子网掩码 |
Domain-name “域名” |
为客户端指定DNS 域名 |
Domain-name-servers IP地址 |
为客户端指定DNS服务器的IP地址 |
Host-name “主机名” |
为客户端指定主机 |
Routers IP地址 |
为客户端指定默认网关 |
Broadcast-address 广播地址 |
为客户端指定广播地址 |
Netbios-name-servers IP地址 |
为客户端指定WINS服务器的IP地址 |
Netbios-node-type 节点类型 |
为客户端指定节点类型 |
Ntp-server IP地址 |
为客户端指定网络时间服务器的IP地址 |
Nis-server IP地址 |
为客户端指定NIS域服务器的地址 |
Nis-domain “名称” |
为客户端指定所属的NIS域的名称 |
Time-offset 偏差值 |
为客户端指定与格林尼治时间的偏差值 |
设置IP作用域
在DHCP服务器内必须设置一个IP作用域,设置一个IP子网中所有可分配的IP地址的连续范围。
Subnet 子网ID netmask 子网掩码{
Range 起始IP地址 终止IP地址
}
注意:语句中的子网ID必须与DHCP服务器所在的ID相同
实例:
某局域网内有120台机子,但只有100个可用地址为192.168.1.1~192.168.1.100,子网掩码255.255.255.0,其中.1分配给路由器,.2分配给本地DNS服务器,.3~.10为保留地址暂时不用,.20和.30分配给固定主机,如果要使局域网所有的主机都有机会上网,那最好的办法就是配置DHCP服务器来动态分配IP地址。
ddns-update-style interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
Range 192.168.1.1 192.168.1.100
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name “example.com”;
option domain-name-servers 192.168.1.2 61.134.1.4;
option broadcast-address 192.168.1.255
default-lease-time 86400;
max-lease-time 172800;
host pc1 {
hardware ethernet **:**:**:**:**:**;
fixed-address 192.168.1.20;
}
host pc2 {
hardware ethernet **:**:**:**:**:**;
fixed-address 192.168.1.30;
}
}
分配多网段的IP地址:
DHCP中继代理,允许将无DHCP服务器的子网内的DHCP客户请求转发给其他子网内的一个或多个DHCP服务器。
eg: 某公司内部有三个子网192.168.1.0 192.168.2.0 192.168.3.0需要使用DHCP服务,设置使用DHCP服务器向多个网段提供动态IP分配服务。
1.在DHCP服务器上配置dhcp.conf加入如下行
Shared-network 名称{
subnet 子网1的网络ID netmask 子网掩码{
........
}
subnet 子网2的网络ID netmask 子网掩码{
........
}
}
此列中可以如下写
Ddns-update-style interim;
Ignore client-update;
Shared-network mynet{
Option subnet-mask 255.255.255.0;
option domain-name “example.com”;
option domain-name-servers 192.168.1.1,61.134.1.4;
option broadcast-address 192.168.1.255;
Default-lease-time 86400;
Max-lease-time 172800;
Subnet 192.168.1.0 netmsk 255.255.255.0{
Range 192.168.1.11 192.168.1.100
Option routers 192.168.1.1
host pc1 {
hardware ethernet **:**:**:**:**:**;
fixed-address 192.168.1.20;
}
host pc2 {
hardware ethernet **:**:**:**:**:**;
fixed-address 192.168.1.30;
}
}
Subnet 192.168.2.0 netmask 255.255.255.0 {
Range 192.168.2.11 192.168.2.100
Option routers 192.168.2.1
}
Subnet 192.168.3.0 netmask 255.255.255.0 {
Range 192.168.3.11 192.168.3.100
Option routers 192.168.3.1
}
}
对于3个子网中相同的项可以将他们放在subnet语句的括号外边,这样对3个子网都起作用。
利用DHCP与FTP和kickstart文件来进行网络安装
1.安装dhcpd和tftp-server包
2.因为tftp是守护进程vi /etc/xinetd.d/tftp,将里面的disables 项值改为no
3.安装软件完后会在/下产生tftpboot目录,将/usr/lib/sysliux/pxelinux.0 复制到/tftpboot/,然后从光盘中p_w_picpaths中将initrd.img 和vmlinuz拷贝到/tftpboot/,然后mkdir /tftpboot/pxelinux.cfg,再从p_w_picpaths中将defaults拷贝到此处。
4.产生kickstart文件,注意在里面的text行的下加入一行,key —skip
5.Vi /etc/dhcp.conf,在里面定义dhcp服务器上的一些信息,在客户端上通过网络安装系统的时候会访问到此dhcp服务器,然后根据信息设置去安装。
在这里面要注意在上面对全局定义参数。
Allow booting;
Allow bootp;
Next-server 192.168.1.100
Filename "pxelinux.0"
最近想使用dhcp方式上网以解决IP使用方面的瓶颈,以下是用后的总结。
(一)
首先确认系统已经安装了dhcp相关的软件包(不同平台的安装方法请google),选择redhat平台需要:
dhcpv6_client, dhcpdbd,dhclinet等。
(二)
开始设置dhcp host server。由于host server需要通过255.255.255.255(广播)向client端发送信息,因此必须添加指向255.255.255.255的route。使用如下命令:
route add -host 255.255.255.255 dev ethX
如果host server有多个网络接口(网卡)提供dhcp服务,那么自然需要各自添加。
现在开始修改dhcpd.conf。这个文件是dhcdbd的配置文件,可以控制dhcdbd的行为。默认不存在这个文件,需要手动添加。
实例文件:
“#”表示
#examples
#默认租约时间
default-lease-time 86400;
#最大租约时间
max-leases-time 129600;
#子网掩码选项
option subnet-mask 255.255.252.0;
#广播地址
option broadcast-adress 172.16.3.255
#路由器地址
option routers 172.16.0.1;
#DNS服务器地址
option domain-name-servers 192.168.102.66;
#域名
option domain-name “doit.com.cn”;
#子网掩码声明
subnet 172.16.0.0 netmask 255.255.252.0{
#范围
range 172.16.0.10 172.16.3.254;
}
该配置文件将允许DHCP服务器将172.16.0.10~172.16.3.254的IP地址分配给DHCP客户端使用。
如果DHCP客户在申请租约时不请求一个特定的租约失效的时间,则以default-lease-time 86400为租约时间,如果请求一个特定的租约失效的时间,则以max-lease-time 129600为租约时间。
服务器将下面的参数发给DHCP客户端:
子网掩码:255.255.252.0
广播地址:172.16.3.255
网络地址:172.16.0.0
默认网关:172.16.0.1
DNS服务器:192.168.102.66
如果要为一台单独的计算机分配固定的IP地址,可以在/etc/dhcpd.conf文件中加上一条:
host doit{
#doit计算机网卡的硬件地址。
Hardware Ethernet 00:50:DA:72:01:47;
#固定的IP地址
fixed-adress 172.16.0.7;
}
(三)
运行DHCPD守护进程
启动DHCPD服务的方法为:
#/etc/init.d/dhcpd start
停止DHCPD服务的方法为:
#/etc/init.d/dhcpd stop
重新启动DHCPD服务的方法为:
#/etc/init.d/dhcpd restart
当一台终端计算机动态获得IP地址后,在/var/lib/dhcpd/dhcpd.leases文件中建立一条类似下面的记录。记录内容为:
lease 172.16.0.21{
starts 1 2003/04/23 17:25:32;
ends 1 2003/4/25 14:32:01;
hardware Ethernet 00:50:DA:76:00:2A;
uid 00:50:DA:72:01:47;
client-hostname “test”
(四)
dhcpd.conf进一步说明
dhcpd.conf是一个递规的下降的配置文件,由参数、声明两个大的部分组成。参数类型语句主要告诉DHCPD
守护进程网络的参数,如租约时间,子网掩码、网关、DNS域名服务器等。而声明则是描述网络是如何构成的拓扑结构。用来标识网络上客户端计算机、要提供
IP地址资源,提供一个参数族组给一组声明。
描
述网络拓扑结构声明语句分为:shared-network和subnet声明,如果要给一个子网内的客户计算机动态分配IP地址,那么在subnet声
明中必须要有range声明,用来说明地址范围。如果要给一个客户计算机一个静态的指定的IP地址,那么,这样的计算机要用host声明。对于每一个要提
供服务的与DHCP服务器连接的子网,都要有一个subnet声明,即使是一个不提供IP地址动态分配服务的子网。
介绍一个典型的例子加以说明:
#example
#全局参数
shared-network 共享网络名称 {
subnet 172.16.0.0 netmask 255.255.252.0 {
#子网定义参数
#range 172.16.0.0;
}
group {
host test.doit.com.cn {
主机参数:IP地址、Mac地址等。
}
}
语法详解
DHCP的语法参数很多,在这里,我们介绍最常用的最重要的语句。
1、 声明类语句
l shared-network name {
[参数]
[声明]
}
shared
-network用于告诉DHCP服务器哪些IP子网属于一个物理网络。任何一个在共享物理网络的子网都必须声明在shared-network语句中。
属于这个子网中的客户计算机启动的时候,将获得在shared-network语句中指定的参数,除非这些参数被subnet和host参数覆盖。用
shared-network是一种暂时的办法,例如:企业中用一个B类网络129.7,企业内部的部门甲被划在子网129.7.3.0/24中,这里的
网络号码为8个bit,主机号也为8位。但是如果部门甲很快的增长,超过了254台主机,而物理网络来不及增加子网,就要在这个物理网络中运行两个
8bit子网掩码的子网。而这两个子网还同时在一个物理网络中,shared-network可以做如下声明。
shared-network net1 {
subnet 129.7.3.0 netmask 255.255.255.0 {
range 129.7.3.10 129.7.3.254;
}
subnet 129.7.4.0 netmask 255.255.255.0 {
range 129.7.4.10 129.7.4.254;
}
这里的net1是网络共享名称。
l subnet语句
subnet subnet-number netmask {
[参数]
[声明]
}
subnet语句用于提供足够的信息来阐明一个IP地址是否属于该子网的IP地址可以动态的分配给用户,这些IP地址必须在range声明里指定。Subnet number可以是IP地址或能被解析到这个子网的域名。Netmask是子网的掩码。
subnet语句
range [dynamic-bootp] low-address [high-adress]
对于任何一个有动态分配的IP地址的subnet语句中,至少有一个range语句。用来标识要分配的IP地址的范围。
host语句
host hostname {
[参数]
[声明]
}
host语句的作用是给一个特定客户计算机分配指定的IP地址。
group语句
group {
[参数]
[声明]
}
用于给一组声明提供参数。
allow和deny语句
allow和deny语句用来控制DHCPD对客户计算机的请求。
unknown-clients关键字
allow unknown-clients;
deny unknown-clients;
allow unknown-clients;允许DHCPD可以动态的分配IP给位置的客户计算机。而deny unknown-clients;则是不允许。默认为allow unknown-clients。
bootp关键字
allow bootp;
deny bootp;
指明DHCPD是否响应BOOTP的查询,默认是允许的。
参数类语句
default-lease-time语句
语法:
default-lease-time time;
指定默认的租约时间,单位为秒。如果客户计算机在请求一个租约但是没有租约失效时间,租约时间就是默认的租约时间。
max-lease-time语句
语法:
max-lease-time time;
最大租约时间。如果客户计算机在请求租约时间时发出租约失效的请求,则用最大的租约时间。
hardware语句
语法:
hardware hardware-type hardware-adress;
指明物理硬件接口类型和硬件地址,一般为以太网卡。硬件地址由6个8位的组构成,每组之间用“:”分割。例如:00:A0:D2:1A:BE:0E
server-name语句
语法:
server-name “name”;
告诉客户计算机服务器的名字。
fixed-address语句
语法:
fixed-adress address [,address……];
指定一个或者多个IP地址给固定的客户计算机,语句只能出现在host声明中。
选项类参数
这类参数以option开头,后面跟一个选项名称,选项名称后面是选项数据,选项很多,这里列出一些常用的选项。
Option routers ip-adress [,ip-address];
指明在客户计算机子网内的路由器地址,可以为一个,也可以为多个。
Option time-servers ip-address[,ip-address…….];
指明时间服务器的IP地址。
Opton domain-name-servers ip-address [,ip-address…….]
指明DNS域名服务器的IP地址。
Option host-name string;
给客户计算机指定主机名称。
Option domain-name string;
指明服务器和客户计算机所在的域。
Option interface-mtu 1500;
指明网络界面的MTU,这里的MTU是整数。
Option broadcast-address ip-address;
指定子网的广播地址。