Linux 上 部署DHCP Server

主宰稳场 提交于 2020-01-22 19:19:23

搭建dhcp服务之前先简单的讲一下什么是dhcp服务,DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段lP地址范围,客户机登录服务器时就可以自动获得服务器分配的lP地址和子网掩码。

那么这个过程是什么样子的呢?

先看下网络拓扑,这是最简单最经典的dhcp拓扑结构,一台server多台client。

DHCP方式获取IP地址过程主要是四步:

第一步,客户机发送Discover广播报文,原ip地址为0.0.0.0,目的ip255.255.255.255,目的mac全f。报文携带信息包括了,客户机的主机名和mac地址。

第二步,服务器收到后响应客户机,向客户机发送offer报文,为客户机提供详细的配置信息(ip地址,子网掩码,默认网关,租约信息)。

第三步,DHCP客户机从接收到的第一个DHCP OFFER消息中选择IP地址。发出IP地址的DHCP server将该地址保留。这样该地址就不能提供给其它DHCP客户机。当客户机从第一个DHCP server接收DHCP OFFER并选择IP地址后,DHCP租约的第三过程发生。客户机将DHCP REQUEST消息广播到全部的DHCP server,表明它接受提供的内容。DHCP REQUEST消息包含为该客户机提供IP配置的server的服务标识符(IP地址)。DHCPserver查看server标识符字段。以确定它自己是否被选择为指定的客户机提供IP地址,假设那些DHCP OFFER被拒绝。则DHCP server会取消提供并保留其IP地址以用于下一个IP租约请求。

第四步,服务器确认发送ack报文,终端收到ack后就把ip地址等信息跟网卡绑定。

下面再来聊聊具体架设。

环境:VMware  服务端:Ubuntu 18 客户端:winxp 软件:ISC-DHCP-SERVER

1.首先我们需要安装我们需要用到的软件ISC-DHCP-SERVER

sudo apt install isc-dhcp-server

2.我们需要修改两个配置文件。

首先是/etc/dhcp/dhcpd.conf

我们根据自己的配置,配置需要分配的ip地址就可以了。

 

 

第二个是/etc/default/isc-dhcp-server

这个配置文件是配置我们将要将哪个接口用来服务。

按照自己的实际情况配置即可。用ifconfig查看下就知道接口名字了。

还有一个配置文件是dhcpd.conf,按照实际配置修改

nano -w /etc/dhcp/dhcpd.conf
# Sample /etc/dhcpd.conf
# (add your comments here) 
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.example";

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}

 

 

3.服务的开启和关闭

 sudo service isc-dhcp-server restart
 sudo service isc-dhcp-server start
 sudo service isc-dhcp-server stop

我们可以看到client已经拿到ip了,但是注意此时是不能上网的我们还需要去开启转发设置下iptable规则就可以了

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i ens34 -o ens33 -j ACCEPT
iptables -A FORWARD -i ens33 -o ens34 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!