CentOS7.9 搭建DHCP服务器 - DHCP中继代理

一、DHCP概述

1.DHCP的简介

  • DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。

  • DHCP前身是BOOTP,在Linux的网卡配置中也能看到显示的是BOOTP,DHCP引进一个bootp没有的概念:租约。bootp分配的地址是永久的,而dhcp分配的地址是可以有期限的。

2.DHCP的作用及特点

  • DHCP可以自动分配IP、子网掩码、网关、DNS。
  • DHCP客户端使用的端口68,服务端使用端口67,使用的UDP应用层的协议。
  • DHCP一般不为服务器分配IP,因为他们要使用固定IP,所以DHCP一般只为办公环境的主机分配IP。
  • DHCP服务器和客户端需要在一个局域网内,在为客户端分配IP的时候需要进行多次广播。但DHCP也可以为其他网段内主机分配IP,只要连接两个网段中间的路由器能转发DHCP配置请求即可,但这要求路由器配置中继功能。

3.DHCP报文

  • DHCP DISCOVER :客户端开始DHCP过程发送的包,是DHCP协议的开始
  • DHCP OFFER :服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息
  • DHCP REQUEST :客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。
  • DHCP ACK :服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。
  • DHCP NAK :DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。
  • DHCP RELEASE :一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址
  • DHCP INFORM :客户端发出的向服务器请求一些信息的报文
  • DHCP DECLINE :当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。

4.DHCP中继

  • 用DHCP Relay代理可以去掉在每个物理的网段都要有DHCP服务器的必要,它可以传递消息到不在同一个物理子网的DHCP服务器,也可以将服务器的消息传回给不在同一个物理子网的DHCP客户机。

二、配置DHCP服务器

1.事先准备

准备三台主机,分别是DHCP服务器、中继服务器、测试客户机
中间的中继服务器两个网络适配器,分别连接服务器和客户机的网段

2.安装DHCP服务

在DHCP服务器和中继服务器上都要安装DHCP服务,先保证服务器都能正常上网

//这里我安装了所有有关DHCP的软件包,可根据需要自行选择
[root@MengXin ~]# yum install -y dhcp-*

3.修改主机的IP地址(请先关闭VMware的DHCP服务)

这里为最终的地址配置,首先需要修改DHCP服务器的网络1的IP和服务器的网络2的IP,均为静态IP,网关配置可忽略
中继设备的网络1的地址为DHCP请求,这里先忽略。

设备 网络1 网络2
服务器 192.168.255.10/24
中继设备 DHCP获取 192.168.48.10
客户机 DHCP获取

4.配置静态路由

DHCP服务器上需要配置通向客户机网段的静态路由

//给你的网络添加一个文件,不存在则新建
[root@MengXin ~]# vim /etc/sysconfig/network-scripts/route-ens160    //我的Linux服务器系统是RHEL,默认是ifcfg-ens160,这个根据实际情况而定

下面是我的配置文件内容

//注意:这里的网关地址可以是你的网络1的IP地址,如果你的主机在nat模式下则可以直接指向中继服务器的网络2的IP地址(我的是主机模式)
ADDRESS0=192.168.48.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.255.10

5.修改DHCP的配置文件

需要先去复制一份模板文件,也可以直接编辑‘/etc/dhcp/dhcpd.conf’文件

//模板目录可能会有所不同,可以用通配符‘*’来模糊查找,或者自己寻找准确目录
[root@MengXin ~]# cp -a /usr/share/doc/dhcp-*/dhcpd.conf.example /etc/dhcp/dhcpd.conf

5.1全局参数

  • ddns-update-style none; ## 禁止dns动态更新

  • default-lease-time 21600; ## 默认租约期限

  • max-lease-time 43200; ## 最大租约期限

  • option domain-name “immengxin.top”; ## 指定域名

  • option domain-name-servers 202.106.0.20; ## 指定分配dns地址

5.2地址池参数

  • range参数:设置用于分配的P地址池

  • option subnet-mask参数:设置客户机的子网掩码

  • option routers参数:设置客户机的默认网关地址

5.3绑定机器MAC

  • hardware ethernet参数:指定对应主机的MAC地址

  • fixed-address参数:指定为该主机保留的IP地址
    以下是我的配置文件修改的内容

# 这里是网络1的地址池
subnet 192.168.255.0 netmask 255.255.255.0 {           //定义了网络号和子网掩码
  range 192.168.255.100 192.168.255.200;         //地址池范围
  option domain-name-servers 192.168.255.2;      //DNS服务器,可用‘,’分隔多个地址
  option domain-name "immengxin.top";            //域名
  option routers 192.168.255.2;                  //网关地址
  option broadcast-address 192.168.255.255;         //广播地址
  default-lease-time 600;                        //默认租期
  max-lease-time 7200;                          //最大租期
}

# 这里是客户机所在网络2的地址池
subnet 192.168.48.0 netmask 255.255.255.0 {
  range 192.168.48.100 192.168.48.200;
  option domain-name-servers 8.8.8.8;
  option domain-name "immengxin.top";
  option routers 192.168.48.10;
  option broadcast-address 192.168.48.255;
  default-lease-time 600;
  max-lease-time 7200;
}

# 中继服务器网络2的保留地址
host myself {
  hardware ethernet 00:0c:29:47:28:c9;    //我的中继服务器网络1的MAC地址
  fixed-address 192.168.255.150;       //固定的保留地址
}




[root@MengXin ~]# systemcTL restart dhcpd    //重启DHCP服务
[root@MengXin ~]# systemcTL enable dhcpd     //开机自启DHCP

6.防火墙命令

  • 防火墙允许DHCP服务通过,也可直接关闭
    其他设备同样是,如出现问题,可以先考虑防火墙问题
[root@MengXin ~]# firewall-cmd --permanent --add-service=dhcp    //允许DHCP服务通过
[root@MengXin ~]# firewall-cmd --reload    //重载防火墙
[root@MengXin ~]# systemctl stop firewalld.service    //关闭防火墙
[root@MengXin ~]# setenforce 0    //临时关闭selinux,永久关闭请自行百度

三、中继服务器配置

配置之前先给网络1请求一下IP地址,不出意外是之前固化的地址:192.168.255.150,如果你固化地址之前就以前请求了地址,可能不会变成保留的地址

这里我是直接关闭的防火墙和selinux,先保证实验正常进行

修改配置文件‘vim /usr/lib/systemd/system/dhcrelay.service’,修改成下面的样子

[Unit]
Description=DHCP Relay Agent Daemon
Documentation=man:dhcrelay(8)
Wants=network-online.target
After=network-online.target

[Service]
Type=notify
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.255.10     //这里加上你的DHCP服务器的地址
StandardError=null

[Install]
WantedBy=multi-user.target

开启路由转向,自行体会

[root@MengXin ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@MengXin ~]# sysctl -p    //立即生效路由转向

修改配置文件以后执行以下命令,这里我不多解释了

[root@MengXin ~]# systemctl --system daemon-reload
[root@MengXin ~]# systemctl restart dhcrelay.service
[root@MengXin ~]# systemctl enable dhcrelay.service
//这个命令可以直接指向需要中继的DHCP服务器的地址,重启失效。配置以后可不需要修改配置文件
[root@MengXin ~]# dhcrelay 192.168.255.10

四、结果验证

我的主机名都是同样的,记得使用不同的主机进行配置

[root@MengXin ~]# dhclient -r       //释放DHCP地址
[root@MengXin ~]# dhclient -d       //请求DHCP地址
[root@MengXin ~]# ip a s ens33      //查看网络适配器地址
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:50:a2:bf brd ff:ff:ff:ff:ff:ff
    inet 192.168.48.100/24 brd 192.168.255.255 scope global noprefixroute dynamic ens33
       valid_lft 442sec preferred_lft 442sec
    inet6 fe80::7022:564b:5dff:7d53/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@MengXin ~]# 

如果以上步骤出现错误,请帮忙指正,非常感谢!!!

posted @ 2022-09-28 20:22  我不是萌新  阅读(992)  评论(0编辑  收藏  举报