一、实验环境(rhel7.0版本)
主机环境:rhel7.0
各主机信息
主机名 | IP |
---|---|
server | 172.25.254.1 |
client | dhcp |
二、DHCP 的相关介绍
1、DHCP 服务器的用途
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作。DHCP 服务器最主要的工作,就是
- 【自动地将网络参数正确地分配给网络内的每台计算机】,让客户端地计算机可以在开机地时候就立即自动配置号网络地参数值,这些参数可以包括 IP、netmask、network、gateway 与 DNS 的地址等。
- 配合其他服务,实现集成化管理功能。如:无人执守安装服务器。
2、DHCP 的工作原理
1、客户端:利用广播数据包发送搜索 DHCP 服务器地数据包:
若客户端网络设置使用 DHCP 协议取得 IP,则当客户端开机或者是重启网卡时,客户端主机会发送处查找 DHCP 服务器的 UDP 数据包给所有物理网段内的计算机。此数据包的目标 IP 会是 255.255.255.255,所以一般主机接收到这个数据包后会直接予以丢弃,但若局域网内有 FHCP 服务器时,则会开始进行后续行为。
2、服务器端:提供客户端网络相关的租约以供选择:
DHCP 服务器在接收到客户端的要求后,会针对这个客户端的硬件地址(MAC)与本身的设置数据来进行下列的工作:
- 到服务器的日志文件中查找该用户之前是否曾经用过某个 IP,若有且该 IP 目前五人使用,则提供此 IP 给客户端。
- 若配置文件针对该 MAC 地址提供特定的固定 IP是,则提供该固定 IP 给客户端。
- 若不符合上述两个条件,则随机选取当前没有被使用的 IP 参数给客户端,并记录下来。
总之,服务器端会针对客户端的要求提供一组网络参数租约给客户端选择,由于此时客户端尚未有 IP,因此在服务器端相应的数据包信息中,主要是针对客户端的 MAC 来给予响应的。此时服务器端会保留这个租约开始等待客户端的回应。
3、客户端:决定选择 DHCP 服务器提供地网络参数租约并向服务器确认:
由于局域网内可能并非一台 DHCP 服务器,但客户端仅能接受一组网络参数租约。因此客户端需要选择是否要认可该服务器提供的相关网络参数的租约。当决定好使用此服务器的网络参数租约后,客户端便开始使用这组网络参数来配置自己的网络环境。此外,客户端也会发送一个广播数据包给所有物理网段内的主机,告知已经接受该服务器的租约。此时若有两台一上的 DHCP 服务器,则这些没有被接受的网络服务器会收回该 IP 租约。值与被接受的 DHCP 服务器会继续进行下面的动作。
4、服务器端:记录该次租约行尾并向客户打un发送相应数据包信息以确认客户端的使用:
当服务端收到客户端的确认选择后,服务器会回送确认的响应数据包,并且告知客户端这个网络参数租约的期限,并且开始租约计时。那么该次租约何时会到期而被解约?有以下几种情况:
- 客户端脱机:关闭网络接口(ifdown)、重新启动(reboot)、关机(shutdown)等行为,皆算是脱机状态,这个时候 Server 端就会将该 IP 收回,并放到 Server 的备用区中,以便日后使用。
- 客户端租约到期:DHCP Server 端发放的 IP 有使用的期限,客户端使用这个 IP 到达启贤规定的时间,而且没有重新提出 DHCP 的申请时,Server 端就会将该 IP 收回,这个时候就会造成断线。但用户也可以向 DHCP 服务器再次要求分配 IP。
3、DHCP 服务器给予客户端固定或动态的 IP 参数
- 固定 IP
只要客户端计算机的网卡不换掉,那么 MAC 肯定就不会改变,由于 DHCP 可以根据 MAC 来给予固定的 IP 参数租约,所以该计算机每次都能以一个固定的 IP 连上 Internet。那么如何在 Linux 上知道网卡的 MAC 呢?有很多的方式,最简单的方式就是 ifconfig 和 arp:
1、查看自己的 MAC 可用 ifconfig [root@server ~]# ifconfig eth0 | grep ether ether 52:54:00:6a:13:7d txqueuelen 1000 (Ethernet) 2、查看别人的 MAC 可用 ping 配合 arp [root@server ~]# ping -c 1 172.25.254.2 [root@server ~]# arp -n Address HWtype HWaddress Flags Mask Iface 172.25.254.2 ether 52:54:00:4d:97:d3 C eth0
- 动态 IP
客户端每次连上 DHCP 服务器所取得的 IP 都不是固定的,都是由 DHCP 服务器在未被使用的 IP 地址池中随机选中并提供的。
4、关于租约所造成的问题与租约期限
既然有租约期限,那么是否代表用 DHCP 取得的 IP 就一定要手动在某个时间点去重新取得新的 IP 呢?不需要的。因为目前的 DHCP 客户端程序大多会主动依据租约时间去重新申请 IP(renew)。也就是说,在租约到期前 DHCP 客户端程序就已经重新申请更新租约时间了。所以除非 DHCP 主机宕机。否则你所取得的 IP 应该是可以一直使用下去的。
5、DHCP 的缺点
- 当网络上存在多服务器时,一个 DHCP 服务器不能查出已被其它服务器租出去的 IP 地址;
- DHCP 服务器不能跨路由器与客户机通信,除非路由器允许 BOOTP 协议转发。
三、DHCP 服务器端的配置
1、所需软件与文件结构
(1)所需软件
这个软件名称就是 dhcp,使用 yum 安装即可。
(2)文件结构
安装完毕之后,使用【rpm -ql dhcp】来看看这个软件提供了哪些文件。基本上,比较重要的配置文件如下:
- /etc/dhcp/dhcpd.conf
这个就是 DHCP 服务器的主要配置文件。
其实 dhcp 软件在发布的时候都会附上一个范例文件,可以使用 【cat /etc/dhcp/dhcpd.conf】查询到 dhcpd.conf.sample 这个示例文件,然后将该文件复制称为 /etc/dhcp/dhcpp.conf ,再手动去修改即可。
- /usr/sbin/dhcpd
这是启动 dhcp 服务的脚本文件。其实最详细的执行方式应该要使用【man dhcpd】来查阅一下
- /var/lib/dhcp/dhcpd.leases
DHCP 服务券与客户打un租约建立的起始与到期日就是记录在这个文件当中的。刚安装完 dhcp 之后,该文件中默认是没有内容的,当该 dhcpd 服务成功为客户端提供了 IP 地址之后,这个文件中才会有相应的内容。
2、主要配置文件 /etc/dhcp/dhcpd.conf 的语法
这个文件有下面的这些规范:
- “#” 为注释符号
- 除了右括号 “)” 后面之外,其他的每一行配置最后都要以 “;” 作为结尾。这很重要
- 配置项目的语法主要是“<参数代号><配置内容>”。例如:
default-lease-time 600;
- 某些配置项目必须以 option 来定义,基本形式为 “option <参数代码> <配置内容>”。例如:
option domain-name "example.org";
其实 dhcpd.conf 文件中主要分为两大项目,一个是服务器运行的全局设置(global),一个是 IP 分配的设置(动态或固定),每个项目的设置值大概有一下几项:
1、全局设置(global)
当固定 IP 及 动态 IP内没有定义某些设置时,以全局设置为准。这些参数的设置名称如下:
- default-lease-time 600;
用户计算机也能够要求一段特定长度的租约时间,但若用户没有特别要求租约时间的话,那么就以此为默认的租约时间(600s)。后面的时间参数默认单位为秒。
- max-lease-time 7200;
与上面的默认租约时间类似,不过,这个设置值是在规范用户所能要求的最大租约时间。也就是说,用户要求的租约时间若超过此设置值,则以此值为准。后面的时间参数默认单位为秒。
- option domain-name "example.org";
如果在 /etc/resolv.conf 里面设置了一个 search example.org 的话,这表示当你要查找主机名时,DNS 系统会主动帮你再所要查找的主机名后加上这个域名后缀。
- option domain-name-servers ns1.example.org, ns2.example.org;
这个设置值可以修改客户端的 /etc/resolv.conf 文件,即 nameserver 后面接的 DNS 的域名/IP。特别注意设置参数末尾为 servers (有 s)。
2、IP 分配设置(动态或固定)
由于 dhcp 主要是针对局域网来分配 IP 参数的,因此在设置 IP 之前,我们需要指定一个局域网(即 DHCP 待分配地址的区域)才行。指定局域网的方式使用如下的参数:
subnet NETWORK_IP netmask NETMASK_IP {...}
- range IP1 IP2
在这个局域网当中,给予一个连续的 IP 地址用来发放给客户端使用,IP1 IP2 指的是分配给客户端使用的 IP 范围。举例来说,你想要分配 192.168.100.101 到 192.168.100.200 这 100 个 IP 用来作为动态分配,那就是 range 192.168.100.101 192.168.100.200。
- option domain-name-servers ns1.internal.example.org; # 设置 DNS
- option domain-name "internal.example.org"; # 设置 域名
- option routers 10.5.5.1; # 设置网关 IP 地址
- option broadcast-address 10.5.5.31; # 设置广播地址
- default-lease-time 600; # 设置默认租约时间
- max-lease-time 7200; # 设置最大租约时间
- host 主机名 {...}
这个 host 就是指定固定 IP 对应到固定 MAC 的设置值,主机名可以自己给予。不过在大括号内就需要指定 MAC 与固定的 IP 了。那这两个设置值怎么设置呢?看看下面:
- hardware ethernet 硬件地址 # 亦即这个设置仅针对这个硬件地址有效的意思。
- fixed-address IP地址 # 给予一个固定的 IP地址的意思。
五、一个局域网内的 DHCP 设置动态 IP 的案例
1、对于服务端——172.25.254.1
(1)安装 dhcp
(2)查看 dhcp 的配置文件
(3)修改/etc/dhcp/dhcpd.conf文件
1、将第7行的 example.org 改为 example.com,修改如下
2、第8行改为任意可以ping通的ip地址,修改如下
3、删除文件里的27和28两行
4、将30-32行进行修改,修改如下
5、将33行之后的内容删掉
(4)启动dhcpd服务
服务器端对应的端口是 67。
(5)关闭防火墙
2、对于客户端——172.25.254.2
(1)将 ip 地址设置为 dhcp 获取
(2)重启网络
客户端对应的端口是 68。
(3)查看是否获取到了服务端指定的 IP 地址及服务器端指定的网关地址
3、服务端查看租约文件
其中,hardware ethernet 52:54:00:4d:97:d3 正是 client 端的 MAC 地址
六、一个局域网内的 DHCP 设置静态 IP 的案例
1、对于服务端
(1)安装 dhcp
(2)查看 dhcp 的配置文件
(3)修改/etc/dhcp/dhcpd.conf文件
1、将第7行的 example.org 改为 example.com,修改如下
2、第8行改为任意可以ping通的ip地址,修改如下
3、删除文件里的27和28两行
4、将30-32行进行修改,修改如下
5、将33行之后的内容删掉
(4)启动dhcpd服务
(5)关闭防火墙
2、对于客户端
(1)将 ip 地址设置为 dhcp 获取
(2)重启网络
(3)查看是否获取到了服务端指定的 IP 地址 及服务器端指定的网关地址
3、服务端查看租约文件
其中,hardware ethernet 52:54:00:4d:97:d3 正是 client 端的 MAC 地址