Linux云计算之使用DHCP为局域网中的机器分配IP地址

·  阅读 58

实战:使用DHCP为局域网中的机器分配IP地址

首先为了避免和当前网络环境中DHCP冲突,我们使用虚拟机自定义的网络模式: 在这里插入图片描述

使用VMnet2即可

安装DHCP

1.使用yum进行安装。

[root@xuegod63 ~]# yum -y install dhcp			#使用yum安装DHCP。
复制代码

2.配置文件位置: 主配置文件:

[root@xuegod63 ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
复制代码

3.DHCP主程序包安装好后会自动生成主配置文件的范本文件。 将范本配置文件复制到/etc 目录下替换掉空白dhcpd.conf 主配置文件。

[root@xuegod63~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example \
/etc/dhcp/dhcpd.conf
复制代码

4.启动DHCP服务

[root@xuegod63~]# systemctl restart dhcpd
Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhcpd.service" and
 "journalctl -xe" for details.
复制代码

5.此时启动会失败 原因:启动失败的原因是 dhcp服务器配置的IP地址和默认配置文件里定义的地址段不相同,在启动DHCP服务之前,需要给DHCPServer配置一个静态的IP地址。而且需要DHCP中定义分配的IP地址网段和当前静态IP地址网段相同。27行修改为自己的静态IP网段。 保证开机启动:

[root@xuegod63~]# systemctl enable dhcpd   		#配置的服务要保证开机启动。
复制代码

DHCP配置文件参数说明 主配置文件介绍: DHCP 范本配置文件内容包含了部分参数、声明以及选项的用法,其中注释部分可以放在任何位置,并以“#”号开头,当一行内容结束时,以“;”号结束,大括号所在行除外。 可以看出整个配置文件分成全局和局部两个部分。但是并不容易看出哪些属于参数,哪些属于声明和选项。

概念与协议: 作用域:可以分配IP的范围 subnet 。 地址池:可以分配给客户端的IP,range包括的IP。 保留地址:指定某个客户端使用一个特定IP,通过host配置的。 租约(时间):客户端可以使用这个IP地址的时间。

配置文件:/etc/dhcp/dhcpd.conf #部分配置解析。 先示范个简单的例子,然后逐个讲解各个参数,一般来说,配置文件分为两部分,一部分为全局配置,第二部分为子网配置,下面例子是简单的dhcpd配置文件:

# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
option domain-name "test.com";
option domain-name-servers 192.168.1.1;
option default-lease-time 600;
subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers  192.168.1.1;
        range  192.168.1.20 192.168.1.50;
        # 下列host www设定一个固定的主机地址。
        host www {
                hardware ethernet 00:0C:29:37:5B:11;
                fixed-address 192.168.1.35;
        }
}
复制代码

注释: dhcpd.conf大致可以分为四个区域: 1)定义dhcpd自身的工作属性: 例: log-facilify #定义日志facilify

2)全局地址分配属性:以options开头。 例:option router 指定网关

3)子网配置:如果子网中没有定义分配给客户端的DNS,但全局中有定义,那么子网则继承全局的DNS,如果子网中定义有DNS,全局中也有定义DNS,那么则根据那地个作用范围小则最终生效。通常每个作用域(地址池)通过一个subnet(子网)定义。

例:

 subnet 192.168.1.0 netmask 255.255.255.0 {  
	range 192.168.1.0 netmask 255.255.255.0		#定义分配的地址(地址池)
	option routes routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;				#在子网定义中也可以使用option定义网关,但仅在子网中范围生效。
	}
复制代码

4)主机配置: 通常为某特定MAC地址固定的分配一个地址。

        host fantasia {
		hardware ethernet 08:00:07:26:c0:a5;			#定义MAC地址。
		fixed-address fantasia.fugue.com;			#定义固定ip地址。
         }
复制代码

5)文件详解:

option domain-name "example.org";				#搜索域。
option domain-name-servers ns1.example.org, ns2.example.org;		#全局默认DNS。
default-lease-time 600;							#默认最小租约期限(单位为秒)。
max-lease-time 7200;							#最长租约期限(单位为秒)。
复制代码

在DHCP引入了租约的概念,所以DHCP服务端在向各个客户端发送IP地址时会告知对方,分配的地址使用多长时间,或默认能使用多长时间,在分配的使用时间内,当达到百分之50时,客户端则自动向服务端发起续租请求(此时以单播方式进行通信)。

50%:DHCP REQUEST,当达到50%时,向服务端发起续租,只能在续租时刻起,续租过去的50%的两倍,如果此时续租失败,那么则到剩下的时间的50%再次发起续租请求(就是整体的时间75%)。

75%:DHCP REQUEST,当达到整体的时间75%时,再次发起续租请求,如果此时再次续租失败时,那么则到剩下的时间的50%再次发起续租请求(就是整体的时间87.5%)。

87.5%:DHCP REQUEST,当达到整体的时间87.5%时,再次发起续租请求,如果此时再次续租失败时,则会放弃续租此地址。 当会放弃续租上个使用的地址时,则再次发起 DHCP DISCOVER 广播,重新获取地址

#ddns-update-style none;							#动态dns。
log-facility local7;									#日志地址,在/etc/rsyslog.conf日志服务配置文件中定义所有发往local7的日志定义存放到/var/log/boot.log文件中。
subnet 10.254.239.0 netmask 255.255.255.224 {		#定义分配的IP地址、掩码。
  range 10.254.239.10 10.254.239.20;					# 定义地址池,起始地址,结束地址,以空格分隔。
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;	 #提供的网关
}

subnet 10.254.239.32 netmask 255.255.255.224 {
  range dynamic-bootp 10.254.239.40 10.254.239.60;		#定义向bootp提供服务,兼容协议。
  option broadcast-address 10.254.239.31;					#定义广播地址。
  option routers rtr-239-32-1.example.org;
}

subnet 10.5.5.0 netmask 255.255.255.224 {
  range 10.5.5.26 10.5.5.30;
  option domain-name-servers ns1.internal.example.org;	#定义DNS。
  option domain-name "internal.example.org";               
  option routers 10.5.5.1;								#定义默认网关。
  option broadcast-address 10.5.5.31;						#定义广播地址。
  default-lease-time 600;								#默认最小租约期限(单位为秒)。
  max-lease-time 7200;									#最长租约期限(单位为秒)。
}

host fantasia {
  hardware ethernet 08:00:07:26:c0:a5;					#定义对方的MAC地址。
  fixed-address fantasia.fugue.com;						#定义固定ip地址。
}

class "foo" {
  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}													#定义函数,用来定义特定系统分配特定的地址。

复制代码
常见声明的使用

1.subnet 网络号 netmask 子网掩码 {......} 作用:定义作用域,指定子网。 如图 所示:

在这里插入图片描述

注意:网络号必须与DHCP 服务器的网络号相同

2.range 起始IP 地址结束IP 地址 作用:指定动态IP 地址范围 注意:可以在subnet(子网)声明中指定多个range,但多个range 所定义IP 范围不能重复。

3.常用选项介绍 选项通常用来配置DHCP 客户端的可选参数,比如定义客户端的DNS 地址、默认网关等等。选项 内容都是以option 关键字开始。

实战-使用DHCP为局域网内主机分配IP地址

公司有60 台计算机,IP 地址段为192.168.1.1-192.168.1.254,子网掩码是255.255.255.0,网关为192.168.1.1,192.168.1.2-192.168.1.30 网段地址给服务器配置,客户端可以使用的地址段为192.168.1.100-200,其余剩下的IP 地址为保留地址。

实验环境: 不建议虚拟机使用桥接模式操作此实验,因为你的局域网中有可能就有DHCP服务器,因此很难让客户端是从虚拟机搭建的DHCP服务器获得IP地址。 另外,也可能造成公司局域网中其它机器因为获得了你DHCP服务器上的IP地址,而上不了网。

1.修改DCHP配置文件:

[root@xuegod63 ~]# vim /etc/dhcp/dhcpd.conf		
#编辑DHCP配置文件,删除其他内容,只保留如下内容:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option domain-name-servers 192.168.1.1;
option domain-name "xuegod.cn";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
}
[root@xuegod63 ~]# systemctl start dhcpd			#启动DCHP服务。
[root@xuegod63 ~]# ps aux|grep dhcp				#查看DHCP进程。
dhcpd      4676  0.2  1.9 119060 19040 ?        Ss   20:17   0:00 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

[root@xuegod63 ~]# netstat -tlunp|grep dhcpd		#查看DHCP端口是否监听。
udp    0    0 0.0.0.0:67       0.0.0.0:*       1971/dhcpd          
udp    0    0 0.0.0.0:30086   0.0.0.0:*        1971/dhcpd          
udp6   0    0 :::31454         :::*             1971/dhcpd
复制代码

2.在xuegod64主机上获取IP地址。

[root@xuegod64 ~]# service network restart		
#重启网络服务,由于网络配置是DHCP方式获取IP,所以直接重启网络服务即可,如果网卡配置为非DHCP方式,需要修改为DHCP方式获取IP地址。
[root@xuegod64 ~]# ifconfig ens38		#查看是否获取IP成功。
ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
inet6 fe80::ad06:ed0b:c309:5e35  prefixlen 64  scopeid 0x20<link>
ether 00:0c:29:ba:dc:06  txqueuelen 1000  (Ethernet)
RX packets 105  bytes 33938 (33.1 KiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 376  bytes 65115 (63.5 KiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
复制代码

(1)查看默认网关

[root@xuegod64 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 ens33
0.0.0.0         192.168.1.1     0.0.0.0         UG    101    0        0 ens37
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens37
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
复制代码

(2)查看DNS

[root@xuegod64 network-scripts]# cat /etc/resolv.conf
[root@xuegod64 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search xuegod.cn cn
nameserver 192.168.1.1
复制代码

(3)查看租约数据库文件

[root@xuegod63 ~]# 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

lease 192.168.1.100 {
  starts 4 2018/10/11 13:18:01;
  ends 4 2018/10/11 13:28:01;
  cltt 4 2018/10/11 13:18:01;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:0c:29:ba:dc:06;
  client-hostname "xuegod64";
}
复制代码
分类:
代码人生
标签:
分类:
代码人生
标签:
收藏成功!
已添加到「」, 点击更改