DHCP原理与配置

一、DHCP服务概述

1、DHCP(Dynamic Host Configuration Protocol)动态主机配置协议

使用DHCP可以减少管理员的工作量,避免IP地址冲突,当网络更改IP地址网段时不

需要再重新配置每个用户的IP地址,提高了IP地址的利用率,方便客户端的配置。

2、可分配的地址信息主要包括:

网卡的IP地址,子网掩码,对应的网络地址,广播地址,默认网关地址,DNS服务器地址等。

3、DHCP的分配方式

(1)自动分配:分配到一个IP地址后永久使用

(2)手动分配:由DHCP服务器管理员专门指定IP地址

(3)动态分配:使用完后释放该IP,供其他客户机使用

4、DHCP的租约过程

(1)客户机从DHCP服务器获取IP地址的过程称为DHCP的租约过程。

(2)租约过程分为四个步骤:

1>客户机请求IP(客户机发 DHCP Discover 广播包)

2>服务器响应(服务器发 DHCP Offer 广播包)

3>客户机选择IP(客户机发 DHCP Request 广播包)

4>服务器确定租约(服务器发 DHCP ACK 广播包)

(3)重新登录

1>客户机选择IP(客户机发 DHCP Request 请求包)

2>服务器确定租约(服务器发 DHCP ACK 确认信息)

1>客户机选择IP(客户机发 DHCP Request 请求包)

2>服务器否认信息(服务器发 DHCP Nack 否认信息)

3>客户机重新租约

(4)更新租约

当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约。客户机

直接向提供租约的服务器发送DHCP Request 包,要求更新现有的地址租约。若此时DHCP

服务器无法正常回复DHCP客户机的请求,客户机的此IP地址可以继续使用到最大租约时间的87.5%。

二、DHCP中继原理

当企业的内部网络规模较大时,通常被划分为多个不同的子网,网络内配置 了VLAN,VLAN能隔离广播,而DHCP协议使用广播。DHCP服务器在VLAN 100 中,就只有VLAN 100内的客户机能从DHCP服务器那里获取IP地址, 如果VLAN 2或VLAN 3的客户机也需要通过这台DHCP服务器来获取IP地址, 该怎么办呢?

解决的办法有两种:(1) 为每个网段安装一台DHCP服务器,但这种方式存在资源上的浪费,而且不利 于集中管理

          (2)在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播信息 在VLAN之间转发,让其他VLAN的客户机也能从DHCP服务器那里获得IP地址

 

DHCP中继的配置命令:

ip helper-address DHCPsrv-IPAddress

DHCPsrv-IPAddress 为DHCP服务器的IP地址

三、Linux中DHCP的安装与配置

[root@localhost ~]# ifconfig ens32

ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

 inet 192.168.200.111 netmask 255.255.255.0 broadcast 192.168.200.255

 inet6 fe80::20c:29ff:feb6f933c prefixlen 64 scopeid 0x20<link>

 ether 00f0c:29:b6f93f3c txqueuelen 1000 (Ethernet)

 RX packets 12095 bytes 5828847 (5.5 MiB)

 RX errors 0 dropped 0 overruns 0 frame 0

 TX packets 9811 bytes 1905280 (1.8 MiB)

 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@localhost ~]# mkdir /media/cdrom

[root@localhost ~]# mount /dev/cdrom /media/cdrom

[root@localhost ~]# rpm -ivh /media/cdrom/Packages/dhcp-4.2.568.el7.centos.x86_64.rpm

配置DHCP服务

主配置⽂文件:/etc/dhcp/dhcpd.conf

执行程序:/usr/sbin/dhcpd

服务脚本名:dhcpd

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf

#

# DHCP Server Configuration file.

# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page

#

[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf

option domain-name "crushlinux.com";                                  //设置DNS域

option domain-name-servers 202.106.0.20, 8.8.8.8;              //设置DNS服务器地址

default-lease-time 21600;                      //设置分配IP地址的默认租约时间,单位是秒

max-lease-time 43200;                          //设置分配IP地址的最大租约时间,单位是秒

subnet 192.168.200.0 netmask 255.255.255.0 {                   //设置分配IP地址网段 及⼦网掩码

range 192.168.200.150 192.168.200.200;                            //设置分配IP地址的地址池范围

option routers 192.168.200.1;                                               //设置分配网关地址

}

[root@localhost ~]# systemctl start dhcpd

DHCP服务端通过监听UDP协议67端口工作,客户端通过UDP协议68端口工作。

[root@localhost ~]# netstat -lnpu | grep :67

udp 0 0 0.0.0.0:67 0.0.0.0:* 109961/dhcpd

udp 0 0 0.0.0.0:67 0.0.0.0:* 1274/dnsmasq

[root@localhost ~]# tail -f /var/log/messages //日志中捕获到的四个过程

Jan 6 22f21f47 localhost dhcpd: DHCPDISCOVER from 00f0c:29:a4f48:bb via ens32

Jan 6 22f21f48 localhost dhcpd: DHCPOFFER on 192.168.200.150 to 00f0c:29:a4f48:bb (Crushlinux-PC) via ens32
Jan 6 22f21f48 localhost dhcpd: DHCPREQUEST for 192.168.200.150 (192.168.200.111) from 00f0c:29:a4f48:bb (Crushlinux-PC) via ens32

Jan 6 22f21f48 localhost dhcpd: DHCPACK on 192.168.200.150 to 00f0c:29:a4f48:bb (Crushlinux-PC) via ens32

Windows7客户机将网络模式设置与DHCP服务器相同模式,获取IP地址测试。

[root@localhost ~]# cat /var/lib/dhcpd/dhcpd.leases //租约信息⽂文件

# The format of this file is documented in the dhcpd.leases(5) manual page.

# This lease file was written by isc-dhcp-4.2.5

server-duid "\000\001\000\001#\304\313u\000\014)\266\223<";

lease 192.168.200.150 {

starts 0 2019/01/06 14f21f48;

ends 0 2019/01/06 20f21f48;

cltt 0 2019/01/06 14f21f48;

binding state active;

next binding state free;

rewind binding state free;

hardware ethernet 00f0c:29:a4f48:bb;
uid "\001\000\014)\244H\273";

client-hostname "Crushlinux-PC"; }

Linux客户机将网络模式设置与DHCP服务器相同模式,获取IP地址测试。

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=dhcp

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=no IPV6_AUTOCONF=no

IPV6_DEFROUTE=no

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens32

UUID=b194e583-21c3-4109-a160-3d2a9876a30b

IPV6_PRIVACY=no

DEVICE=ens32

ONBOOT=yes

[root@localhost ~]# systemctl restart network

或者

[root@localhost ~]# dhclient -r ens32 //释放IP地址

[root@localhost ~]# dhclient -d ens32 //重新获取

针对部分主机可绑定其MAC地址为其分配固定IP地址

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf

host win7 { //添加主机定义

hardware ethernet 00f0c:29:a4f48:bb;//客户机MAC地址

fixed-address 192.168.200.99; //为客户机绑定的IP地址

}

[root@localhost ~]# systemctl restart dhcpd


Windows7客户机将网络模式设置与DHCP服务器相同模式,重新获取IP地址测试。

ipconfig /release 释放IP地址

ipconfig /renew 重新获取IP地址

四、Linux中DHCP中继配置

DHCP服务器调整:

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32

TYPE=Ethernet

PROXY_METHOD=none
BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=no

IPV6_AUTOCONF=no

IPV6_DEFROUTE=no

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens32

UUID=b194e583-21c3-4109-a160-3d2a9876a30b

DEVICE=ens32

ONBOOT=yes

IPADDR=192.168.200.111

PREFIX=24

GATEWAY=192.168.200.112 //网关需要指向DHCP中继服务器同网络的IP地址

DNS1=202.106.0.20

IPV6_PRIVACY=no

[root@localhost ~]# ifconfig ens32 //VMnet8模式

ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.200.111 netmask 255.255.255.0 broadcast 192.168.200.255

inet6 fe80::20c:29ff:feb6f933c prefixlen 64 scopeid 0x20<link>

ether 00f0c:29:b6f93f3c txqueuelen 1000 (Ethernet)

RX packets 12335 bytes 5849822 (5.5 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 9984 bytes 1934256 (1.8 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf

option domain-name "crushlinux.com";

option domain-name-servers 202.106.0.20, 8.8.8.8;

default-lease-time 21600;
max-lease-time 43200;

subnet 192.168.200.0 netmask 255.255.255.0 {

range 192.168.200.150 192.168.200.200;

option routers 192.168.200.1; }

subnet 192.168.100.0 netmask 255.255.255.0 {

range 192.168.100.150 192.168.100.200;

option routers 192.168.100.1;

}

[root@localhost ~]# systemctl restart dhcpd

DHCP中继服务器调整:

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=no

IPV6_AUTOCONF=no

IPV6_DEFROUTE=no

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens32

UUID=b194e583-21c3-4109-a160-3d2a9876a30b

IPV6_PRIVACY=no

DEVICE=ens32

ONBOOT=yes

IPADDR=192.168.200.112 //需作为DHCP服务器的网关地址

NETMASK=255.255.255.0

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=no

IPV6_AUTOCONF=no

IPV6_DEFROUTE=no

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens34

IPV6_PRIVACY=no

DEVICE=ens34

ONBOOT=yes

IPADDR=192.168.100.112

NETMASK=255.255.255.0

[root@localhost ~]# ip a | grep ens

2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc

pfifo_fast state UP group default qlen 1000

inet 192.168.200.112/24 brd 192.168.200.255 scope global ens32

3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc

pfifo_fast state UP group default qlen 1000

inet 192.168.100.112/24 brd 192.168.100.255 scope global ens34

[root@localhost ~]# rpm -ivh /media/cdrom/Packages/dhcp-4.2.568.el7.centos.x86_64.rpm

[root@localhost ~]# rpm -ql dhcp |grep dhcrelay

/usr/lib/systemd/system/dhcrelay.service

/usr/sbin/dhcrelay

/usr/share/man/man8/dhcrelay.8.gz

打开DHCP中继服务器路由转发功能
[root@localhost ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

[root@localhost ~]# sysctl -p

开启DHCP中继服务

[root@localhost ~]# dhcrelay 192.168.200.111

Dropped all unnecessary capabilities.

Internet Systems Consortium DHCP Relay Agent 4.2.5

Copyright 2004-2013 Internet Systems Consortium.

All rights reserved.

For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/virbr0/52f54f00:b3:df:0e

Sending on LPF/virbr0/52f54f00:b3:df:0e

Listening on LPF/ens34/00f0c:29f8c:f2:e3

Sending on LPF/ens34/00f0c:29f8c:f2:e3

Listening on LPF/ens32/00f0c:29f8c:f2:d9

Sending on LPF/ens32/00f0c:29f8c:f2:d9

Sending on Socket/fallback

[root@localhost ~]# netstat -anpu | grep dhcrelay

udp 0 0 0.0.0.0:67 0.0.0.0:* 2893/dhcrelay

 

PS:学习方式

1、服务的使用场景

2、服务的组件和工作原理

3、服务的协议和端口

4、服务的安装,配置修改(主配置文件),常见配置项

5、验证方式

转载于:https://www.cnblogs.com/2567xl/p/11363877.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值