LINUX网络之DHCP原理与配置

一.了解DHCP服务

1.1DHCP是什么?

  • DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。

  • 一般常用于公司内网中

  • dhcp是专门用于TCP/IP网络中的计算机自动分配TCP/ip参数的协议,简单来说,DHCP可以动态的给局域网主机分配ip地址,网关、DNS等,可以将手动地址配置量,自动分配解决地址冲突问题


1.2DHCP的优点

  1. 减少管理员的工作量
  2. 避免输入错误的可能
  3. 避免IP地址冲突
  4. 当更改lP地址段时,不需要重新配置每个用户的IP地址
  5. 提高了IP地址的利用率
  6. 方便客户端的配置

1.3DHCP的分配方式

  • 自动分配:分配到一个IP地址后永久使用
  • 手动分配:由DHCP服务器管理员专门指定IP地址
  • 动态分配:使用完后释放该IP,供其它客户机使用

二DHCP工作过程

2.1DHCP的工作过程大概可分为四步

  • 1.客户端发广播寻找DHCP服务器

  • 2.DHCP服务器单播回复客户端Offer

  • 3.客户端广播请求这个ip,发广播一方面是为了请求这个地址,另一个方面也是告诉其他的dhcp服务器自己有地址用了

  • 4.服务器发送ACK包

举个例子来说: image.png

  • 1.主机a是刚刚接入网络中的一台主机,在主机a接入之后,就会广播发送Discover包,寻找网络中的DHCP服务器

  • 2.当dhcp服务器收到a的discover包之后,会单播回复给a一个offer包,里面包含着一个ip地址和一些配置信息比如,网关,租期,dns等

  • 3.当主机a收到这个offer包之后确认要使用,就广播发送request请求这个IP地址,发广播的原因可能网络中还有其他的DHCP服务器,告诉他们自己有了IP地址

  • 4.当dhcp服务器收到a的request之后单播发送一个ACK,a收到ack之后就开始使用这个IP地址

以上就是DHCP的工作过程,我们看到从主机寻找到获取地址一共只用到了四种数据包,那么其他两种数据包是在那种情况下被用到的呢?这就扯到了DHCP协议的一个小细节,叫做租期


2.2.DHCP的租期

image.png

  • ​以上图为例,主机a从DHCP服务器获取得到了一个IP地址,ip租约期限到达50%时,主机a会单播发送dhcp request包,来申请延长ip地址的租期,服务器向主机a发送确认报文,给主机a一个新的租期

2.3租期失效

image.png

以上图为例,在ip租期到达之后,如果没有收到服务器回应,就会发送release报文,释放这个IP地址

客户端不再使用分配地址也会发release,来释放改地址释放之后客户端重新发送discover


三. **DHCP动态分配主机 **(实验)

此时我们思考一个问题,客户端在请求地址的时候发送一个广播包,我们都知道广播包是无法跨越三层设备的,如果这时候dhcp服务器与客户主机不在同一个网段应该怎么做?

image.png ​以上图为例,可以看到电脑和服务器不在同一个网段,还想从dhcp服务器获得地址,这时候就用到了dhcp中继

dhcp中继的作用是可以让路由器转发dhcp的数据报文,这样就可以实现客户端和服务器在不同网段也能获得地址

3.1DHCP服务优点

●为大量客户机自动分配地址,提供集中管理

●减轻管理和维护成本、提高网络配置效率

3.2可分配的地址信息主要包括

●网卡的IP地址、子网掩码

●对应的网络地址、广播地址

●默认网关地址 ●DNS服务器地址

3.3linux中使用DHCP动态配置DHCP

3.3.1安装DHCP

yum install dhcp -y
复制代码

这里最好使用网络yum源进行安装,版本较新

安装完成后,rpm-qa查看是否安装完成

image.png

3.3.2虚拟机网卡设置为仅主机模式

image.png

3.3.3查看虚拟机虚拟网卡的IP地址(默认为ens33)

image.png

image.png

3.3.4编辑ens33网卡信息

vim /etc/sysconfig/network-scripts/ifcfg-ens33(编辑网卡信息)

复制代码

image.png

  • 重新连接一下xshell

image.png

3.3.5复制dhcp.conf配置文件到/etc/dhcp/dhcpd.conf

[root@localhost dhcp-4.2.5]# cp -f /usr/share/doc/dhcp4.2.5/dhcpd.conf.example   /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y (强制覆盖并改名)

复制代码

image.png

3.3.6修改dhcp配置文件

[root@localhost ~]# cd /etc/dhcp/                 #切换至dhcpd.conf所在目录
[root@localhost dhcp]# vim dhcpd.conf       #修改配置文件

末行模式下:set nu显示行号

#第8行 修改默认的全局DNS地址
  option domain-name-servers 8.8.8.8;

#直接修改27行
  subnet 192.168.181.0  netmask 255.255.255.0 {undefined (ip网段和子网掩码)
    range 192.168.181.20  192.168.181.70; (这里的子网范围可以自行设置)
   option routers 192.168.181.1; (网关地址)
    option domain-name-servers 114.114.114.114;(dns)
复制代码

image.png

3.3.7重启并查看dhcp服务是否正常启动

[root@localhost dhcp]# systemctl restart dhcpd
[root@localhost dhcp]# systemctl status dhcpd

复制代码

image.png

3.3.8验证dhcp配置文件区域与全局优先级

1.打开windos虚拟机,设置为仅主机模式,查看dhcp是都设置成功

win+r输入cmd
ipconfig(查看网卡信息,如果这个时候没有显示ip,网关,dns等信息,可以输入下面的命令)
ipconfig/rlease(释放)
ipconfig/renew(刷新)
复制代码

image.png

image.png

image.png

image.png

四.dhcp服务下自定义主机ip地址(实验)

在实际工作环境中,咱们需要已经开启了dhcp服务,dhco是自动分配地址的服务,如果想给固定主机自定义子网ip地址怎么设置呢?

需要在/etc/dhcp.conf文件中第71行Fixed IP addresses段落中修改想要设置的主机的物理地址。

4.1 查看windos主机的物理地址

ipcongfig/all
复制代码

image.png

4.2修改dhcp配置文件

image.png

  • 保存,并重启dhcp服务
systemctl restart dhcpd
复制代码

4.3查看windos主机ip是否修改成功

刷新ipconfig信息并且查看
ipconfig /release  释放地址\
ipconfig /renew    重新获取地址\
ipconfig /all  可以看到详情信息

复制代码

image.png

五.dhcp配置文件详解释

defau7t-lease-time 21600;      #默认租约为6小时,单位为秒I
max-lease-time 43200;           #最大租约为12小时,单位为秒
option domain-name "benet.com";         #指定默认域名
option domain-name-servers 202.106.0.20,202.106.148.1;      #指定DNS服务器地址
ddns-update-style none;          #禁用DNS动态更新

#subnet网段声明(作用于整个子网段,部分配置参数优先级高于全局配置参数)
subnet 192.168.100.0 netmask 255.255.255.o {         #声明要分配的网段地址
range 192.168.100.128 192.168.100.200;               #设置地址池
option routers 192.168.100.1;               #指定默认网关地址


#host主机声明(给单机分配固定的IP地址)    
host hgstname{                         #指定需要分配固定IP地址的客户机名称
hardware ethernet 00:c0:c3:22:46:81;         #指定该主机的MAC地址
fixed-address 192.168.4.100;        #指定保留给该主机的IP地址
复制代码

六.dhcp中继原理与实验

6.2 DHCP是什么?

DHCP中继(也叫做DHCP中继代理)是一个小程序,其可以实现在不同子网和物理网段之间处理和转发dhcp信息的功能。

如果DHCP客户机与DHCP服务器在同一个物理网段,则客户机可以正确地获得动态分配的ip地址。如果不在同一个物理网段,则需要DHCP Relay Agent(中继代理)。


6.2.1DHCP中继实验

前面已经设置好了Linux的dhcp服务,此次实验会用vmware虚拟机和华为ensp做出dhcp中继的实验

6.2.1 关闭防火墙和selinux

1. [root@localhost ~]# systemctl stop firewalld.service
2. [root@localhost ~]# setenforce 0
复制代码

6.2.2规划拓扑图并设置

  • 1.设置cloud云配置

image.png

image.png

需要注意,这里选择的端口2网卡一定要对应虚拟机

  • 2.规划vlan并设置

image.png 配置三层交换机lSW2

<Huawei>undo terminal mo\
<Huawei>sys

[SW1]vlan batch 10 20 100

[SW1]int e0/0/2
[SW1-Ethernet0/0/2]port link-type access 
[SW1-Ethernet0/0/2]port default vlan 10

[SW1-Ethernet0/0/2]int e0/0/3
[SW1-Ethernet0/0/3]port link-type access
[SW1-Ethernet0/0/3]port default vlan 20

[SW1-Ethernet0/0/3]int e0/0/4
[SW1-Ethernet0/0/4]port link-type access
[SW1-Ethernet0/0/4]port default vlan 108(这里的云一定要和linux主机网段一至)

[SW1-Ethernet0/0/4]int e0/0/1    
[SW1-Ethernet0/0/1]port link-type trunk 
[SW1-Ethernet0/0/1]port trunk allow-pass vlan all

复制代码

配置三层交换机

<Huawei>undo terminal mo\
<Huawei>sys

创建vlan10 20 108 
[Huawei]vlan batch 10 20 108

打开dhcp
[Huawei]dhcp enable 

设置g0/0/1配置
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]port link-type trunk
[Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan all
[Huawei-GigabitEthernet0/0/1]dis th
[Huawei-GigabitEthernet0/0/1]int valn 10 (进入vlan10 设置)

设置vlan10
[Huawei-Vlanif10]ip add 192.168.10.1 24
[Huawei-Vlanif10]dhcp select relay (开启中继)
[Huawei-Vlanif10]dhcp relay server 192.168.108.100

设置vlan20
[Huawei-Vlanif10]int vlan 20
[Huawei-Vlanif20]ip add 192.168.20.1 24
[Huawei-Vlanif20]dhcp select relay 
[Huawei-Vlanif20]dhcp relay  server 192.168.108.100

设置vlan108
[Huawei-Vlanif20]int vlan 108
[Huawei-Vlanif108]ip add 192.168.108.10 24
[Huawei-Vlanif108]dhcp select relay 
[Huawei-Vlanif108]dhcp relay server 192.168.108.100

设置完成,需要ping一下,看看各线路是否通畅
[Huawei-Vlanif108]ping 192.168.10.1
[Huawei-Vlanif108]ping 192.168.20.1
[Huawei-Vlanif108]ping 192.168.108.10
复制代码

6.2.3 尝试用linux ping通vlan10 vlan20

  • 1.这个时候大概率是ping不通的,需要修改linux网卡ens33,把网卡修改成前面在ensp模拟器上ip add 192.168.108.10 (网关地址)设置成一样,因为此时的linux 提供dhcp服务,端口设置需要和华为模拟器同意设置,才能进入

image.png 修改过网卡信息需要systemrestart network

  • 2.尝试ping
  • ping vlan20 ip

image.png

  • ping vlan10 ip

image.png 实验成功

Guess you like

Origin juejin.im/post/7076089963044929550