如何在Linux下安装配置DHCP服务器
DHCP服务在linux下算是最简单的服务了。
DHCP服务的配置。
DHCP简介:
DHCP动态主机配置协议,在一个小型局域网里可以通过手工指定ip地址的方式,但如有大量的主机,如果还是手工指定,那是一个很大的工作量,而且也容易出错,这时,就可以通过配置一台DHCP服务器来解决,为每台主机分配一个ip地址。DHCP作用域是指DHCP服务器可分配给DHCP客户端的IP地址范围,一个DHCP服务器至少要一个作用域,如有多个作用域,作用域之间的IP地址不能重叠。
DHCP的工作原理:
DHCP工作过程分为四个步骤:
第一步(DHCPDISCOVER):客户端发送广播查找可以给自己提供IP地址的DHCP服务器,
第二步(DHCPOFFER):DHCP服务器发送广播提供一个可用的IP地址,并在地址池中将该地址打上标记,以防再次分配。
第三步(DHCPREQUEST):客户端收到广播后再次发送一个广播请求该地址,如果有多台DHCP响应,则第一个收到的优先。
第四步(DHCPACK):DHCP服务器收到广播后再发送一个广播,确认该地址分配给这台主机使用,并在地址池中将该地址打上标记,以防再次分配。
DHCP的基本配置:
第一步:安装软件:
[root@localhost ~]# rpm -ivh /misc/cd/Server/dhcp-305-18el5i386rpm
第二步:编辑配置文件:
[root@localhost ~]# vi /etc/dhcpdconf
# see /usr/share/doc/dhcp/dhcpdconfsample
当进入到配置文件里面时,这里是空的,有如上一行的提示,说可以参考这个文件来编写配置文件,那就复制一份再编辑。
[root@localhost ~]# cp -rvf /usr/share/doc/dhcp-305/dhcpdconfsample /etc/dhcpdconf
[root@localhost ~]# vi /etc/dhcpdconf
ddns-update-style interim; //配置DHCP和DNS为互动更新模式,
ignore client-updates; //忽略客户端的更新。
subnet 1921681000 netmask 2552552550 { //定义作用域
option routers 1921681001; //默认路由
option subnet-mask 2552552550; //子网掩码
option nis-domain "rhelcom"; //NIS域名
option domain-name "rhelcom"; //DNS域名
option domain-name-servers 19216810010; //DNS服务器地址
option time-offset -18000; # Eastern Standard Time //为客户端设置与格林威治的时间偏移
option ntp-servers 19216811; //网络时间服务器地址
option netbios-name-servers 19216811; //指定WINS服务器地址
range dynamic-bootp 192168100128 192168100254; //动态分配的地址范围
default-lease-time 21600; //默认租约时间
max-lease-time 43200; //最大租约时间
host abc { //指定特定主机
hardware ethernet 00:0C:29:FD:44:C8; //硬件地址
fixed-address 19216810030; //IP地址
}
}
如有多个要绑定的主机时可以把所有主机信息用group{ }包括起来,这样更方便管理。格式如下 :
group {
……这里不可以添加一些佤全局选项,这样就不用在每个里面写了。
host abc {
……
……
}
host xyz {
……
……
}
}
[root@localhost ~]# service dhcpd restart
测试:
在linux下:
首先让地址从DHCP获取:
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
[root@localhost ~]# service network restart //重启一下网络服务,这里不能使用ifdown和ifup,因为要配置路由信息。
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:FD:44:C8
inet addr:19216810030 Bcast:192168100255 Mask:2552552550
这就是绑定的IP地址。
[root@localhost ~]# cat /etc/resolvconf
; generated by /sbin/dhclient-script
search rhelcom
nameserver 19216810010
这里的DNS服务器地址也获取到了。
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
1921681000 0000 2552552550 U 0 0 0 eth0
16925400 0000 25525500 U 0 0 0 eth0
0000 1921681001 0000 UG 0 0 0 eth0
默认路由也获取到了。查看一下端口:
[root@localhost ~]# netstat -tlunp | grep 68
udp 0 0 0000:68 0000 16150/dhclient
查看客户端的租约文件:
lease {
interface "eth0";
fixed-address 19216810030; //固定地址
option subnet-mask 2552552550; //子网掩码
option time-offset -18000; //时间偏移
option routers 1921681001; //默认路由
option dhcp-lease-time 21600; //租约时间
option dhcp-message-type 5;
option domain-name-servers 19216810010;
option dhcp-server-identifier 19216810020;
option nis-domain "rhelcom";
option domain-name "rhelcom";
renew 5 2010/4/9 09:01:40;
rebind 5 2010/4/9 11:34:53;
expire 5 2010/4/9 12:19:53;
}
windows下:
把IP地址设成自动获取。
C:\Documents and Settings\Administrator>ipconfig /all
Connection-specific DNS Suffix : rhelcom
Physical Address : 00-0C-29-D3-C6-B3
Dhcp Enabled : Yes
Autoconfiguration Enabled : Yes
IP Address : 192168100253
Subnet Mask : 2552552550
Default Gateway : 1921681001
DHCP Server : 19216810020
DNS Servers : 19216810010
Lease Obtained : 2010年4月9日 14:44:12
Lease Expires : 2010年4月9日 20:44:12
基本配置完成。
将DHCP移交给专用服务器的另一个好处就是可以建立动态域名服务(DDNS),那样当主机向服务器请求DHCP地址时,新主机的主机名称会被添加到DNS系统中。
第一步:安装及配置ISC DHCP Server
1 想开始搭建这台多宿主服务器这个过程,需要使用“apt”实用工具,通过Debian软件库来安装ISC软件。与所有教程一样,假设你拥有root或sudo访问权限。请对下列几个命令做适当的改动。
# apt-get install isc-dhcp-server[安装ISC DHCP Server软件]
# dpkg --get-selections isc-dhcp-server [证实已成功安装]
# dpkg -s isc-dhcp-server [以另一种方式证实安装]
将ISC DHCP Server安装在Debian中
2 鉴于服务器软件已证实成功安装,现在就有必要为服务器配置它需要分发出去的网络信息。管理员最起码要知道基本DHCP范围的下列信息:
•网络地址
•子网掩码
•将被动态分配的地址范围
让服务器动态分配的其他实用信息包括如下:
•默认网关
•DNS服务器的IP地址
•域名
•主机名称
•网络广播地址
这些仅仅是ISC DHCP服务器所能处理的诸多选项中的几个而已。想获得每个选项的详细描述以及完整列表,安装程序包之后请输入下面这个命令:
# man dhcpdconf
3 一旦管理员确定了该服务器要分发出去的所有必要信息,现在就可以配置DHCP服务器以及必要的池了。不过,在创建任何池或服务器配置之前,必须配置DHCP服务,以便侦听服务器的其中一个接口。
在这一台服务器上,网卡组已建立起来,DHCP会侦听被赋予名称“bond0”的组接口。考虑到服务器和一切已配置好的环境,务必要进行适当的更改。该文件中的默认值适用于本教程。
配置ISC DHCP网络
这一行将指示DHCP服务在指定的一个接口或多个接口上侦听DHCP流量。这时候,可以改动主配置文件,以便启动必要网络上的DHCP池。主配置文件位于/etc/dhcp/dhcpdconf。首先用文本编辑工具打开该文件:
# nano /etc/dhcp/dhcpdconf
该文件含有针对DHCP服务器的选项的配置,以及用户希望配置的所有池/主机。文件顶部以“ddns-update-style”子句开始;就本教程而言,它仍保持被设成“none”;不过在将来的一篇文章中,将会包括动态DNS, ISC-DHCP-Server将与BIND9整合起来,让主机名称转成IP地址的更新成为可能。
4 下一节通常介绍管理员配置全局网络设置,比如DNS域名、IP地址的默认租期、子网掩码及更多选项。想进一步了解所有选项,请务必阅读dhcpdconf文件的参考手册页。
# man dhcpdconf
就这次安装的服务器而言,有几个全局网络选项已在配置文件的顶部配置好,那样它们没必要实施在创建的每一个池中。
配置ISC DDNS
我们不妨稍微抽点时间解释其中一些选项。虽然它们在本例中全局配置,但所有选项同样可以针对每个池来配置。
•option domain-name “comptechlocal”:该DHCP服务器托管运行的所有主机将是DNS域名“comptechlocal”的成员。
•option domain-name-servers 17227106:DHCP将向经配置以托管的所有网络上的所有主机分发DNS服务器IP,即17227106。
•option subnet-mask 2552552550:被分发到每个网络上的子网掩码将是2552552550 或/24。
•default-lease-time 3600:这是租期将自动有效的时间(以秒为单位)。如果时间超时,主机会重新请求同一租期。如果主机已用完租期,就能及早归还地址。
•max-lease-time 86400:这是主机保持租期的最长时间(以秒为单位)。
•ping-check true:这是一个额外测试,确保服务器想要分配出去的地址没有已被网络上的另一个主机所使用。
•ping-timeout:这是指在假设地址未使用之前,服务器为响应ping而等待多长时间(以秒为单位)。
•ignore client-updates:眼下这个选项无关紧要,因为DDNS之前已在配置文件中被禁用,但是当DDNS运行时,这个选项将忽视主机在DNS中更新主机名称的请求。
5 该文件中的下面一行是权威DHCP服务器这行。这一行意味着,如果该服务器将是为该文件中所配置的网络分发地址的服务器,那么就取消注释权威节(authoritative stanza)。
该服务器将是它所网络的所有网络上的唯一权威,那样只要去掉关键字authoritative(权威)前面的“#”,即可取消注释全局权威节。
启用ISC Authoritative
默认情况下,服务器假设不是网络上的权威。这么做是出于安全。如果有人不明就里对DHCP服务器配置不当,或者在不该连接的网络上,这就会引起严重的连接问题。这一行还可以针对每个网络来使用。这意味着,如果服务器不是整个网络的DHCP服务器,authoritative这一行就可以改而针对每个网络来使用,而不是像上面截图看到的那样用在全局配置中。
6 下一步是配置该服务器管理的所有DHCP池/网络。为了简洁起见,本文将只介绍配置的其中一个池。管理员需要收集所有的必要网络信息(即域名、网络地址、多少地址可以分发出去,等等)。
就这个池而言,下列信息从网络管理员处获得:网络ID为17227600,子网掩码为2552552550或/24,子网的默认网关是17227601,广播地址为1722760255。
这些信息对于构建dhcpdconf文件中适当的网络节而言很重要。闲话少说,不妨再次使用文本编辑工具,打开配置文件,然后将新的网络添加到服务器。这必须借助root/sudo权限来完成!
# nano /etc/dhcp/dhcpdconf
配置DHCP协议和网络
这是为了将IP地址分发给用于搭建VMware虚拟服务器的网络而建立的示例。第一行表明了网络以及该网络的子网掩码。然后在括号里面是DHCP服务器应该提供给该网络上主机的所有选项。
第一个节range 172276050 1722760254;是DHCP服务器可以分发给该网络上主机的动态分配地址的范围。请注意头48个地址并不在池中;需要的话,这些地址可以静态分配给主机。
第二个节option routers 17227601;将默认网关地址分发给该网络上的所有主机。
最后一个节option broadcast-address 1722760255;表明该网络的广播地址。该地址不应该是范围节的一部分,因为广播地址无法分配给主机。
一些指针务必总是以分号(;)来结束选项行,始终确保每个创建的网络用花括号{ }包起来。
7 如果有更多的网络要建立,继续以合适的选项来建立,然后保存文本文件。一旦所有配置都完成, ISC-DHCP-Server进程需要重启,以便让新的变更生效。这可以用下面这个命令来实现:
# service isc-dhcp-server restart
这会重启DHCP服务,然后管理员可以通过几种不同的方式,检查服务器是否准备好处理DHCP请求。最简单的方式就是只要通过lsof命令,看看服务器是不是在侦听端口67:
# lsof -i :67
检查DHCP侦听端口
这个输出结果表明,DHCPD(DHCP Server守护程序)在运行,并侦听端口67。由于/etc/services文件中端口67的端口号映射,该输出结果中的端口67实际上被转换成了“bootps”。
这在大多数系统上很常见。至此,服务器应该已为网络连接准备好,只要将机器连接到网络,让它向服务器请求DHCP地址,即可加以证实。
步骤 1:在 Ubuntu 中安装 DHCP 服务器
1、 运行下面的命令来安装 DHCP 服务器包,也就是 dhcp3-server。
$ sudo apt install isc-dhcp-server
2、 安装完成后,编辑 /etc/default/isc-dhcp-server 使用 INTERFACES 选项定义 DHCPD 响应 DHCP 请求所使用的接口。
比如,如果你想让 DHCPD 守护进程监听 eth0,按如下设置:
INTERFACES="eth0"
同样记得为上面的接口配置静态地址。
步骤 2:在 Ubuntu 中配置 DHCP 服务器
1、 DHCP 配置的主文件是 /etc/dhcp/dhcpdconf, 你必须填写会发送到客户端的所有网络信息。
并且 DHCP 配置中定义了两种不同的声明,它们是:
parameters - 指定如何执行任务、是否执行任务,还有指定要发送给 DHCP 客户端的网络配置选项。
declarations - 定义网络拓扑、指定客户端、为客户端提供地址,或将一组参数应用于一组声明。
2、 现在打开并修改主文件,定义 DHCP 服务器选项:
$ sudo vi /etc/dhcp/dhcpdconf
在文件顶部设置以下全局参数,它们将应用于下面的所有声明(请指定适用于你情况的值):
option domain-name "tecmintlan";
option domain-name-servers ns1tecmintlan, ns2tecmintlan;
default-lease-time 3600; max-lease-time 7200;
authoritative;
3、 现在定义一个子网,这里我们为 192168100/24 局域网设置 DHCP (请使用适用你情况的参数):
subnet 192168100 netmask 2552552550
{
option routers 192168101;
option subnet-mask 2552552550;
option domain-search "tecmintlan";
option domain-name-servers 192168101;
range 1921681010 19216810100;
range 19216810110 19216810200;
}
步骤 3:在 DHCP 客户端上配置静态地址
1、 要给特定的客户机分配一个固定的(静态)的 IP,你需要显式将这台机器的 MAC 地址以及静态分配的地址添加到下面这部分。
host centos-node
{
hardware ethernet 00:f0:m4:6y:89:0g;
fixed-address 19216810105;
}
host fedora-node
{
hardware ethernet 00:4g:8h:13:8h:3a;
fixed-address 19216810106;
}
保存并关闭文件。
2、 接下来,启动 DHCP 服务,并让它下次开机自启动,如下所示:
------------ SystemD ------------
$ sudo systemctl start isc-dhcp-serverservice
$ sudo systemctl enable isc-dhcp-serverservice
------------ SysVinit ------------
$ sudo service isc-dhcp-serverservice start
$ sudo service isc-dhcp-serverservice enable
3、 接下来不要忘记允许 DHCP 服务(DHCP 守护进程监听 67 UDP 端口)的防火墙权限:
$ sudo ufw allow 67/udp
$ sudo ufw reload $ sudo ufw show
步骤 4:配置 DHCP 客户端
1、 此时,你可以将客户端计算机配置为自动从 DHCP 服务器接收 IP 地址。
登录到客户端并编辑以太网接口的配置文件(注意接口名称/号码):
$ sudo vi /etc/network/interfaces
定义如下选项:
auto eth0 iface eth0 inet dhcp
保存文件并退出。重启网络服务(或重启系统):
------------ SystemD ------------
$ sudo systemctl restart networking
------------ SysVinit ------------
$ sudo service networking restart
另外你也可以使用 GUI 来在进行设置,如截图所示(在 Fedora 25 桌面中)设置将方式设为自动(DHCP)。
此时,如果所有设置完成了,你的客户端应该可以自动从 DHCP 服务器接收 IP 地址了。
就是这样了!在本篇教程中,我们向你展示了如何在 Ubuntu/Debian 设置 DHCP 服务器。在反馈栏中分享你的想法。如果你正在使用基于 Fedora 的发行版,请阅读如何在 CentOS/RHEL 中设置 DHCP 服务器。
0条评论