DHCP服务部署

一. 简介

    动态主机设置协议(英语:Dynamic Host Configuration Protocol,缩写:DHCP)是一个用于局域网的网络协议,位于OSI模型的应用层,使用UDP协议工作。

二. 用途及功能

    •  用于内部网或网络服务供应商自动分配IP地址给用户

    •  用于内部网管理员作为对所有计算机作中央管理的手段

    •  可分配网卡的IP地址,子网掩码,网络地址,广播地址,默认网关,DNS,引导文件,TFTP(pxe kickstart无人值守时用)

三. 原理+示意图

1. 原理

      DHCP客户端第一次登陆时,由于没有IP,它会以UDP的67端口广播发送Discover(源0.0.0.0 目标 255.255.255.255),一秒内没有应答会以1,3,5,7,9+1-2000ms的延迟重发Discovery包,DHCP服务器收到请求后,以UDP的68端口发起offer包(源DHCP服务器IP 目标0.0.0.0, 包中包含IP,子网掩码,租期等信息 # Discover中包含Client的MAC地址)。

      DHCP服务器通过ICMP协议测试准备分发的IP是否被占用,Client发送Request包(源0.0.0.0 目标255.255.255.255包中包含Client的MAC地址,接受租约的IP地址,提供租约的DHCP服务器地址),DHCP发起ACK回包(原地址 DHCP服务器地址 目标地址0.0.0.0 包中包含这一IP地址的合法租用以及其他的配置信息)。

      租约问题:用到50%的时候会向服务器发起续约请求,如果服务器未响应,用到75%时,再次请求续约,如果仍未响应,则用到100%后,再次广播发送Discover包。

      Client获取IP成功后,如果网卡断了,再次连接时,IP若被占用,则重新发起Discover包,否则将原来的IP地址继续使用。

2. 示意图

四. 实战搭建

相关文件

服务名 : dhcpd dhcrelay

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

模板文件 /usr/share/doc/dhcp-*/dhcpd.conf.simple

中继配置文件 /etc/sysconfig/dhcrelay

端口 udp 67 68

配置基础DHCP服务器

1. 实验环境

机器 master slave1 slave2
作用 DHCP服务端 客户端 客户端
IP地址 192.168.32.80 192.168.32.81 192.168.32.82

2. 步骤

(1). master机器配置yum源,安装dhcp包

[root@master ~]# yum install -y dhcp

(2). 复制模板文件并且覆盖原有配置文件

[root@master ~]# cp -a /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

(3). 修改配置文件并重启dhcp服务

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

    subnet 192.168.32.0 netmask 255.255.255.0 {     # subnet指定一个网段 netmask 指定子网掩码
range 192.168.32.20 192.168.32.30; # range指定自动分配的ip子网为20-30段
option domain-name-servers 114.114.114.114,8.8.8.8; # 指定dns服务器
option routers 192.168.32.1; # 指定网关
default-lease-time 600; # 默认租约时间
max-lease-time 7200; # 最大租约时间
}

[root@master ~]# service dhcpd restart

关闭 dhcpd: [确定]

正在启动 dhcpd: [确定]

(4). 修改slave1、slave2网卡配置文件

[root@slave1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE=eth0
TYPE=Ethernet
UUID=021f0b15-fc52-4e9f-912f-4bf79963fab5
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
HWADDR=00:0C:29:B1:18:8D
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"

slave2同理,将BOOTPROTO改成dhcp

slave1 结果如下:

slave2结果如下:

配置DHCP保留地址

(1). 修改master的dhcp配置文件

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

    host fantasia {
hardware ethernet 00:0C:29:6D:13:A4;
fixed-address 192.168.32.22;
}
host newhost {
hardware ethernet 00:0C:29:B1:18:8D;
fixed-address 192.168.32.23;
}

(2). 客户机重启网络查看mac和ip对应关系

slave1:

slave2:

配置DHCP超级作用域

1. 定义超级作用域

    解决DHCP单个作用域中IP地址不足的情况,比如公司中有300台机器需要配置dhcp自动获取ip,而一个C类IP只有251个可用地址(抛去网关,头尾,dhcp服务器IP),此时需要配置dhcp超级作用域以分配IP不足问题。

2. 配置超级作用域

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

    # dhcpd.conf
#
# Sample configuration file for ISC dhcpd
# # option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600;
max-lease-time 7200; # Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none; # If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative; # Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7; # No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology. # Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration. host passacaglia {
hardware ethernet 0:0:c0:5d:bd:95;
filename "vmunix.passacaglia";
server-name "toccata.fugue.com";
} # Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set. # You can declare a class of clients and then do address allocation
# based on that. The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet. class "foo" {
match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}
--------------------------------------------------------------------------
shared-network 224-29 {
subnet 192.168.32.0 netmask 255.255.255.0 {
range 192.168.32.20 192.168.32.20;
option domain-name-servers 114.114.114.114,8.8.8.8;
option routers 192.168.32.1;
default-lease-time 600;
max-lease-time 7200;
}
subnet 192.168.33.0 netmask 255.255.255.0 {
range 192.168.33.20 192.168.33.20;
option domain-name-servers 114.114.114.114,8.8.8.8;
option routers 192.168.33.1;
default-lease-time 600;
max-lease-time 7200;
}
}
---------------------------------------------------------------------------

slave1回显如下:

slave2回显如下:

注意!! 此时 slave1和slave2机器是ping不通的,因为网段不同,所以将采用单臂路由的方式让其通信-------dhcp中继。

配置DHCP中继

1. 实验环境

表格里未填写的代表自动获取,“--”代表不需要配置

机器 master slave1 slave2 slave3
网卡配置      vm1        vm1      vm1 vm2               vm2
作用 DHCP服务器 DHCP客户端    DHCP 中继 DHCP中继转发客户端
IP地址 192.168.32.80 vm1 192.168.32.1
vm2 192.168.33.1
网关 192.168.32.1              --

2. 实验步骤

(1). 配置master机器网卡

[root@master ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE=eth0
HWADDR=00:0C:29:63:EA:94
TYPE=Ethernet
UUID=70f2ac2f-2ed4-4f12-887c-f545bf45df8f
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.32.80
NETMASK=255.255.255.0
GATEWAY=192.168.32.1

(2). 重启网卡

[root@master ~]# service network restart

正在关闭接口 eth0: [确定]

关闭环回接口: [确定]

弹出环回接口: [确定]

弹出界面 eth0: Determining if ip address 192.168.32.80 is already in use for device eth0...

[确定]

[root@master ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.32.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0

0.0.0.0 192.168.32.1 0.0.0.0 UG 0 0 0 eth0

(3). 修改配置文件

    # dhcpd.conf
#
# Sample configuration file for ISC dhcpd
# # option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600;
max-lease-time 7200; # Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7; subnet 192.168.32.0 netmask 255.255.255.0 {
range 192.168.32.20 192.168.32.200;
option domain-name-servers 114.114.114.114,8.8.8.8;
option routers 192.168.32.1;
default-lease-time 600;
max-lease-time 7200;
}
subnet 192.168.33.0 netmask 255.255.255.0 {
range 192.168.33.30 192.168.33.200;
option domain-name-servers 114.114.114.114,8.8.8.8;
option routers 192.168.33.1;
default-lease-time 600;
max-lease-time 7200;
} host passacaglia {
hardware ethernet 0:0:c0:5d:bd:95;
filename "vmunix.passacaglia";
server-name "toccata.fugue.com";
}

(4). 修改slave2中继器网卡配置文件eth0:

(5). 修改slave2的eth1网卡配置文件

(6). slave2开启路由转发

vim /etc/sysctl.conf

sysctl -p 生效

(7). 安装dhcrelay

[root@slave2 ~]# yum install -y dhcp

(8). 修改中继配置文件

[root@slave2 ~]# vim /etc/sysconfig/dhcrelay

    # Command line options here
DHCRELAYARGS=""
# DHCPv4 only
INTERFACES="eth0 eth1"
# DHCPv4 only
DHCPSERVERS="192.168.32.80"

(9). 重启中继服务

[root@slave2 ~]# /etc/init.d/dhcrelay restart

正在启动 dhcrelay: [确定]

(10). slave1和slave3重启网卡(网卡配置文件别忘改成dhcp)

[root@slave1 ~]# service network restart

正在关闭接口 eth0: [确定]

正在关闭接口 eth1: [确定]

关闭环回接口: [确定]

弹出环回接口: [确定]

弹出界面 eth0:

正在决定 eth0 的 IP 信息...完成。

[root@slave1 ~]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:0C:29:B1:18:8D

inet addr:192.168.32.20 Bcast:192.168.32.255 Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:feb1:188d/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:1755 errors:0 dropped:0 overruns:0 frame:0

TX packets:818 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:189969 (185.5 KiB) TX bytes:104084 (101.6 KiB)


[root@slave3 ~]# systemctl restart network

[root@slave3 ~]# ifconfig

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

inet 192.168.33.30 netmask 255.255.255.0 broadcast 192.168.33.255

inet6 fe80::8fd:c838:d2f4:15ce prefixlen 64 scopeid 0x20

ether 00:0c:29:82:a8:c9 txqueuelen 1000 (Ethernet)

RX packets 239 bytes 25362 (24.7 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 227 bytes 27096 (26.4 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


(11). ping查看是否通信

[root@slave1 ~]# ping 192.168.33.30 -c 1

PING 192.168.33.30 (192.168.33.30) 56(84) bytes of data.

64 bytes from 192.168.33.30: icmp_seq=1 ttl=128 time=0.645 ms

--- 192.168.33.30 ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 0.645/0.645/0.645/0.000 ms


[root@slave3 yum.repos.d]# ping 192.168.32.20 -c 1

PING 192.168.32.20 (192.168.32.20) 56(84) bytes of data.

64 bytes from 192.168.32.20: icmp_seq=1 ttl=63 time=0.645 ms

--- 192.168.32.20 ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 0.645/0.645/0.645/0.000 ms

五. 小结

在中继dhcp配置的过程中可能存在的问题

    描述:
dhcp中继分配完的主机只能ping通单向主机
解决办法:
route -n查看路由表,发现配置双网卡,nat模式的网关占用了dhcp分配的网关,导致所有的数据包通过nat模式的网关口出去。最后将nat模式的网卡网关删除,重启网卡即可恢复正常。

DHCP服务部署的更多相关文章

  1. DHCP服务部署流程

    为某一局域网部署DHCP [root@dhcp ~]# yum install -y dhcp[root@dhcp ~]# rpm -ql dhcp/usr/sbin/dhcpd:dhcp服务进程 / ...

  2. DHCP服务的部署和配置

    DHCP介绍: DHCP(动态主机配置协议)是一个局域网网络协议,使用UDP协议工作,主要用途:给局域网络或网络服务供应商自动分配IP地址, DHCP有3个端口,其中UDP67和UDP68为正常的DH ...

  3. Linux系统下DHCP服务安装部署和使用详解

    一.概述 DHCP :动态主机设置协议(英语:Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:用于内部网或 ...

  4. CentOS6.7搭建部署DHCP服务 (详解主配置文件)

    DHCP服务 dhcp:动态主机配置协议.从bootp演变而来,引进了租约.续租功能,成为了现在的DHCP. 需要就分配,不需要就回收. 工作过程: 1.当获得地址是,有租约期限,当你关机时,IP地址 ...

  5. Debian10快速部署DHCP服务

    前言 DHCP(动态主机配置协议)是一个局域网的网络协议.指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码. 进日,想提升一下自己的技术水平,于是就做 ...

  6. Linux服务部署

    1. 构建NTP时间服务器 NTP服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时间.互联网的时间服务器也有很多,例 ...

  7. (四)跟我一起玩Linux网络服务:DHCP服务配置之中继代理

    继第三部分的DHCP服务器的设置成功,我们来做一个中继代理服务器的配置吧. 我们的虚拟机结构如图: 具体参考: (一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.con ...

  8. NFS服务和DHCP服务讲解(week3_day2)--技术流ken

    NFS服务端概述 NFS,是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS: NFS允许一个系统在网络上与他人共享目录 ...

  9. 末学者笔记--NFS服务和DHCP服务讲解

    NFS服务端概述 一.概念: NFS,是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS:NFS允许一个系统在网络上与他 ...

随机推荐

  1. 通过ssh管道连接内网数据库(mysql)

    公网连接内网数据库(如云数据库)时,通常需要白名单:如果不是白名单IP,通常需要一个跳板机(类似代理)来连接内网数据库, 下方以mysql为例(其他数据库基本一致): import pymysql a ...

  2. TCP/IP及内核参数优化调优(转)

    Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等.如下配置是写在sysctl.conf ...

  3. 七十九:flask.Restful之flask-Restful标准化返回参数示例

    接上一篇的代码和数据 对于复杂结构的数据如果只是定义单一结构的话返回的数据就没意义了,此时定义的数据结构需精确到所有数据的每一个字段有时候要返回的数据结构中,会有比较复杂的数据结构,证实后可以使用一些 ...

  4. YII :将oracle中timestamp 字段正常显示在页面中

    'value'=>'DateTime::createFromFormat("d#M#y H#i#s*A", $data["START_TIME"])-&g ...

  5. charles工具页面介绍

    charles的主页面介绍 手机连上代理之后,每在手机上进行操作我们便会在charles上接收到请求.此时的charles页面将会变成如下密密麻麻的内容,故这节课我们来讲解一下Charles的主页面 ...

  6. ES5与ES6常用语法教程之 ③模板字符串、判断字符串是否包含其它字符串

    这部分教程我们主要讲解以下几个常用语法 模板字符串 带标签的模板字符串 判断字符串中是否包含其他字符串 给函数设置默认值 模板字符串 老式的拼接字符串方法 let dessert = '

  7. python获取内存地址上存储的值

    在python中,可以通过id()这个方法来获取对象的内存地址. 但是反过来,怎么获取内存地址上存储的值? 先看一段代码: from ctypes import string_at from sys ...

  8. 通过id()函数学习python的数据存储以及引用方式

    id()函数是python的内置函数,用于获取对象的内存地址. 1.1 可以看出,33被存储在内存地址19877464上,对变量a赋值,实际上是将其指向存储着33的内存地址. 1.2 不仅是数字类型, ...

  9. 生成器send方法、递归、匿名函数、内置函数

    今日内容 1.生成器的send方法. 2.递归:函数自己调用自己 3.匿名函数 4.内置函数 生成器send方法 send的工作原理 1.send发生信息给当前停止的yield 2.再去调用__nex ...

  10. VisualBasic文件与目录管理FileSystem 类

    注解 下表列出了涉及 My.Computer.FileSystem 对象的任务示例. 功能 查看 从文本文件读取 如何:读取文本文件 从带分隔符的文本文件中读取 如何:读取逗号分隔的文本文件 从固定宽 ...