如何在linux服务器上配置DHCP服务
1安装dhcp软件包
#rpm –ivh dhcp-301-12_ELi386rpm
2配置文件dhcpdconf
由于dhcpdconf默认没有包括在软件包中,所以要最近创建
#cp /usr/share/doc/dhcp-302/dhcpdconfsample /etc/dhcpdconf
3编辑dhcpdconf
#vi /etc/dhcpdconf
配置文件的基本格式
Subnet 19216810 netmask 2552552550 { range 1921681100 1921681200}
(声明了网络地址是19216810子网掩码是2552552550的子网中,ip地址从1921681100~1921681200之间的地址用于DHCP客户端进行动态地址分配)
在dhcpdconf配置文件中可以包括声明、参数和选项3种基本格式
Subnet是常用的声明,声明中的设置(大括号中的内容)在整个声明范围中有效;
Subnet关键字后面设置子网的网络地址,netmask关键字后面设置子网掩码
参数由设置项和设置值组成,根据参数所在位置的不同,参数的位置可作用于全局或指定的声明中,参数是以“;”结束的,如:
Default-lease-time 21600;(默认释放时间)
max-lease-time 43200;(最大释放时间)
选项总是由option关键字引导,后面跟具体的选项和选项的设置值,选项根据所在的位置不同可作用于全局或某个声明中,选项也是以“;”结束的,如:
Option routers 19216811 (网关)
Opyion subnet-mask 2552552550 (子网掩码)
使用host声明设置主机属性
host server01{
hardware Ethernet 0:c0:c3:22:46:81;
fixed-address 192168111;
option subnet-mask 2552552550
option routers 19216811;
}
上面的配置实例中使用host声明了名为server01的主机,其MAC地址为0:c0:c3:22:46:81,为主机分配使用的ip地址为192168111,同时为该主机设置的子网掩码是2552552550,网关地址是19216811
多网络接口时需要配置的文件
# vi /etc/sysconfig/dhcpd
DHCPDARGS=eth0
表示dhcp将只在eth0网络接口上提供DHCP服务。
4dhcpd服务的启动与停止
Dhcpd服务的启动脚本位于/etc/initd/dhcpd
启动dhcpd服务
#service dhcpd start
停止dhcpd服务
#service dhcpd stop
修改启动状态
#chkconfig –level 35 dhcpd on
工具/原料
一台Linux主机或虚拟机(这里CentOS 65为例)
编译源码或软件源方式安装dhcp软件
方法/步骤
首先我们先了解下 DHCP,DHCP采用客户端/服务器的工作模式,由客户端向服务器发出获取IP地址的请求,服务器接收到请求后会把网络配置信息发送给客户端,实现IP地址的动态分配。DHCP提供三种地址分配策略:
1:手工分配 在服务器上指定为哪些主机分配固定的IP,也就是说这些主机永远获取的都是给它们设置好的IP。
2:自动分配 地址分配给客户机后,这个地址就永远给了客户机。这样客户机不在线也不会回收IP,会造成浪费,不同于手工分配。
3:动态分配 也是用的最多的策略了,它将IP地址分配出去后会有个租约,等租约时间到了,就会回收IP,如果主机还在线,在租约时间快到时,会向DHCP服务器发送续约请求,以便继续使用。
以上手工分配适合于打印机、其他提供web服务、ftp服务的主机等,因为它们需要一个固定的IP地址。动态分配能有效解决IP地址不够用的问题,租约到期后被回收的IP地址会重新给新请求的客户端使用。
DHCP的安装可以通过从软件源直接安装或自己编译安装。编译安装的话下载地址在:https://wwwiscorg/downloads/
这里选择编译安装DHCP,下图为DHCP源码包的官方下载页面,我们选择最新版dhcp-431targz
首先我们先解压源码包
# tar xf dhcp-431targz
指定安装目录和配置文件目录
# cd dhcp-431
# /configure --prefix=/usr/local/dhcp --sysconfdir=/etc
配置过程非常快,等配置完了可以echo $确定下是否成功
接着就可以编译安装了,请耐心等待编译完成
# make && make install
如果采用软件源安装的话直接 " yum install dhcp "即可,不过版本会比较旧
接着将配置文件复制过去,在安装目录的 server 目录中
# cp server/dhcpdconfexample /etc/dhcpdconf
生产地址池文件,用于记录已经分配出去的IP地址
# touch /var/db/dhcpdleases
接着修改配置文件,在最后添加提供服务的网段
subnet 10000 netmask 255000
{
range 100050 1000100;
}
我这里为10000网段提供服务,range定义了地址池,记得修改成适合你们的,然后就可以试着启动服务了。
# /usr/local/dhcp/sbin/dhcpd
如果是以软件源方式安装的dhcp软件,直接 service dhcpd start
我们可以用" killall dhcpd "来结束服务
服务启动后可以用 " ps aux | grep dhcpd "查看下启动的进程,DHCP服务监听 udp 67 端口,客户端以广播的方式请求IP地址,整个局域网内,没开启DHCP服务的主机就忽视掉了请求,DHCP服务器就会响应这个请求,如果同时有多个DHCP服务器在工作肯定看哪个响应的快喽!
接下来再启动台主机试试效果把,我又启动了一台XP,让其自动获取IP地址,看 是不是获取了地址池中第一个IP "100050"呢
接下来看下dhcpd的配置文件 " /etc/dhcpdconf "
dhcpdconf中由声明、注释、参数、选项四大类语句构成
注释就是"#"开头的注释信息。声明定义网络布局,刚才的subnet就属于声明。参数是定义dhcpd服务的各种网络参数,如租约的时间、主机名等。选项是以option作为开始,为客户机指定主机名、广播地址、子网掩码等
声明:
include "filename" 将指定的文件内容添加到配置文件中
shared-network 名称 {
参数
声明
} 指定共享相同网络的子网
subnet 网段 netmask 子网掩码 {
参数
声明
} 定义哪些IP分配给客户,一般与range结合使用
range 起始地址 终止地址; 定义IP范围,终止地址可以没有
host 主机名 {
参数
声明
} 定义保留地址
group {
参数
声明
} 为一组参数提供声明
参数:
ddns-hostname 名称 指定使用的主机名,不设置默认当前主机名
ddns-domainname 名称 指定域名
ddns-update-style 参数 指定DNS的更新模式 { ad-hoc | interim | none }
default-lease-time 时间 默认租约时间(单位秒)
max-lease-time 时间 最大租约时间
server-name 名称 告诉客户端服务器的名称
hardware 接口类型 硬件地址 指定客户机硬件接口类型和mac地址
fixed-address IP地址 ,IP地址 为客户端提供一个或多个IP地址,该参数只能出现在host声明中
选项: 前面需加option
broadcast-address 广播地址 指定客户端广播地址
domain-name 域名 指定客户端域名
domain-name-servers 地址 指定客户端的DNS服务器
host-name 主机名 指定客户端主机名
ntp-server 地址 指定时间服务器地址
routers 地址 指定默认网关IP
subnet-mask 子网掩码 指定客户端子网掩码
比如我们为10000网段提供服务,DNS服务器为8888,网关为1000254,子网掩码为255000,默认租约时间6小时
subnet 10000 netmask 255000
{
range 100050 1000100;
option subnet-mask 255000;
option routers 1000254;
option domain-name-servers 8888;
default-lease-time 21600;
}
看看是不是网关和DNS也被自动获取了呢。注意都要以分号结束哦
现在再试试为其配置指定的IP地址,我们先把要指定主机的网卡mac地址记下来,然后给他配置10101010这个IP
subnet 10000 netmask 255000
{
range 100050 1000100;
option subnet-mask 255000;
option routers 1000254;
option domain-name-servers 8888;
server-name mydhcp;
default-lease-time 21600;
host winXP {
hardware ethernet 00:0C:29:6E:4B:A1;
fixed-address 10101010;
}
}
这回使用了 ipconfig -all 显示的更详细了,这里连服务器的地址也列出来了,也可以使用这个参数查看网卡的mac地址
11
演示用的是Windows主机,如果是Linux主机需要修改网卡的配置文件,设置"BOOTPROTO=dhcp",然后可以通过 dhclient eth0 来给eth0这块网卡获取IP地址。
配置文件都放在/etc/dhcp目录下,主配置文件为dhcpdconf
编写dhcpdconf (可以复制dhcpdconfexample模板文件来修改,也可以直接编辑dhcpdconf)
## 1、拷贝示例文件覆盖原来的空文件。通过rpm -ql dhcp查看自己模板配置文件(不一定和我一样的版本)
cp /usr/share/doc/dhcp-425/dhcpdconfexample /etc/dhcp/dhcpdconf
## 2、预先处理,去掉 注释和空行,保留 生效语句,和可选语句。
sed -ri '/(^#[[:space:]]+|^#$|^$)/{d}' /etc/dhcp/dhcpdconf
删除没用的那些行,保留内容如下:
主配置文件样板:
#ddns-update-style none;
#authoritative;
log-facility local7;
subnet 10110 netmask 2552552550 {
range 1011100 1011200; ##地址池
option domain-name-servers 20296128166; ##DNS服务器地址
option domain-name "classcom"; ##域名
option routers 10111; ##默认路由
option broadcast-address 1011255; ##广播地址
default-lease-time 300; ##默认租约时间
max-lease-time 7200; ##最大租约时间
}
注意:dhcp服务器必须要有一张网卡在10110/24网络,并且它只会给这张网卡所在网络(广播域)主机分配ip。
安装DHCP包
[root@miner-k ~]# yum -y install dhcp
[root@miner-k ~]# rpm -ql dhcpx86_64
/etc/dhcp
/etc/dhcp/dhcpdconf # DHCP的配置文件
/etc/dhcp/dhcpd6conf
/usr/sbin/dhcpd # DHCP的服务器端的主进程
/usr/sbin/dhcrelay # DHCP的中继服务器的进程
/var/lib/dhcpd/dhcpdleases #DHCP的租约记录
修改配置文件
option domain-name "iscorg"; # 指定/etc/resolvconf 中search后的参数
option domain-name-servers 114114115115, 114114114114; # DNS服务器的地址
subnet 102542390 netmask 255255255224 {
option routers 2042542391; #指定网关
range 1025423910 1025423920; # 指定DHCP的地址池,Linux分配IP地址是由大到小的分配,windows中分配是由小到大分配
option routers rtr-239-0-1exampleorg, rtr-239-0-2exampleorg;
}
# 通过MAC地址指定IP对应的主机
host fantasia {
hardware ethernet 08:00:07:26:c0:a5; #网卡的mac地址
fixed-address 1025423930; # 指定不在Range范围内的地址
DHCP 对应端口
服务器端 UDP 67
客户端 UDP 68
实例部署DHCP服务器
修改配置文件
[root@miner-k ~]# vim /etc/dhcp/dhcpdconf
subnet 1921681000 netmask 2552552550 {
range 192168100200 192168100210;
option domain-name-servers 114114114114,114114115115;
option domain-name "minerexampleorg";
option routers 1921681001;
default-lease-time 600;
max-lease-time 7200;
}
启动DHCP服务器
[root@miner-k ~]# service dhcpd restart
Starting dhcpd: [ OK ]
检查DHCP的监听端口
[root@miner-k ~]# netstat -anlp | grep 67
udp 0 0 0000:67 0000: 4841/dhcpd
dhcp服务器,就一个配置文件,就是/etc/dhcpdconf。它是有模板的,你可以i根据模板进行修改就可以了。
搭建dhcp服务器过程很简单,安装软件、配置主配置文件,重启服务,验证是否生效。
配置文件的配置主要有全局配置、网段声明,还有主机声明(为某一台主机配置保留地址),主机声明是可选的
这个是我做实验的配置文件截下来的
//全局设置
ddns-update-stye none; //动态更新类型
ignore client-updates; //不允许客户端更新,也不要改,而且必须存在
default-lease-time 28800; //默认租期,8个小时
max-lease-time 86400 //最大租期,24个小时
option domain-name "qqcom" //默认搜索域
option domain-name-server19216810254,202106020 //DNS服务器地址,有多个DNS时要用逗号分开
//局部配置
//subnet网段声明(配置一个作用域,可覆盖全局设置参数)
subnet 192168100 netmask 2552552550{
range 1921681050 19216810100;
range 19216810120 19216810200;
option subnet-mask 2552552550;
option routers 19216810254;
}
//host主机声明(为某一台主机配置保留地址,在局部声明内,不可以在全局声明)
host printer{
hardware ethernet 00:50:56:C0:00:01;
fixed-address 192168108;
}
然后重启服务。
如果重启失败,就是配置出错,可用dhcpd命令排错,它会输出你在哪行出错了
#dhcpd建议你去网上去找更详细的配置文件详解~~懂得每个参数配置的含义
祝你好运~~
1 当你配置好DHCP服务器之后,客户端唯一要做的就是在配置IP地址时,选择自动获得IP就是了。WINDOWS是“自动获得IP地址”,LINUX的配置是“BOOTPROTO=dhcp”(其他物理连通性前提必须是好的)
2 主机通讯需要IP地址,当一个客户端的网卡处于激活状态,并且IP配置为自动获得时,那么客户端会自动向网络中的DHCP服务器发起请求,如果网络中有DHCP服务器存在并可用,那么服务器就会从它的IP地址池(地址范围中)选择空闲的IP地址和其他信息,比如租约时间等,一并发送给这个需要IP地址的客户单。这个过程就像我们租房子一样,房东是不会知道谁要租房子,但是你要生活,你就要去找,你找到房东,房东给你看房子,告诉你价格,时间,你们达成协议了,你就租到了,到期了,继续交钱,继续租用。你可以百度一下DHCP服务器的工作原理。
0条评论