centos搭建dhcp服务
前言
dhcp是什么意思?
dhcp即动态主机设置协议,是一个局域网的网络协议,使用UDP协议工作。主要是给网络快速自动地分配IP地址,DHCP能够帮助我们将IP地址和相关IP信息分配给网络中计算机。
dhcp还可以给设备上配置正确的子网掩码,默认网关和DNS服务器信息。由于这些功能,现在几乎每台连接到网络的设备都配置了dhcp。
DHCP通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
dhcp有以下四个功能:
保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
DHCP应当可以给用户分配永久固定的IP地址。
DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
DHCP服务器应当向现有的BOOTP客户端提供服务。 dhpc的工作原理是将IP地址和IP信息“出租”给网络客户端一段时间。因此DHCP客户端必须通过一系列DHCP消息与DHCP服务器进行交互,主要包括DHCP
DISCOVER,DHCP OFFER,DHCP REQUEST和DHCP ACK。
好了,废话少说,我们直接开干
- 环境:vmware 虚拟机
- 数量:2
- 节点:controller compute
- 网卡模式:net
见图
下载dhcp服务
配置网卡
[root@controller ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:c9:be:62 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.11/24 brd 192.168.10.255 scope global dynamic ens33
valid_lft 85476sec preferred_lft 85476sec
inet6 fe80::20c:29ff:fec9:be62/64 scope link
valid_lft forever preferred_lft forever
[root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="f7c83436-f055-442c-9425-64a1209d659e"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.11" #固定ip
PREFIX="24" #子网掩码24位
GATEWAY="192.168.10.2" #网关
网卡配置完成后我们直接下载服务
[root@controller ~]# yum install dhcp -y
步骤没问题哦,如果你有报错会有两个原因
1.有网环境:网卡配置出错,未能连接外网
2.无外网环境:未配置本地yum源
- 其实有没有网配置本地yum都可以下载(本来想找外链,想想质量分还是自己写吧)
配置本地yum源
先挂镜像
[root@controller ~]# mount /dev/cdrom /mnt/ #挂载镜像
mount: /dev/sr0 写保护,将以只读方式挂载
[root@controller ~]# mkdir /opt/centos #创建一个文件夹
[root@controller ~]# cp /mnt/* /opt/centos/ #镜像内容复制到文件夹
再写yum.repo文件
[root@controller ~]# vim /etc/yum.repos.d/centos.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[root@controller ~]# yum clean all && yum repolist
源标识 源名称 状态
centos centos 4,070
ok,回去下载吧
配置dhcp文件
复制一个模板
[root@controller ~]# find / -name dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
[root@controller ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
编辑文件
vim /etc/dhcp/dhcpd.conf
配置文件中你会看到许多这种
subnet 192.168.10.0 netmask 255.255.255.0{
}
这个是你要分配的子网,他跟你网卡的网段是一样的,如果你要分配两个或者多个子网的时候你需要有对应数量的网卡哦那么到时候配置文件就是这样的
subnet 192.168.10.0 netmask 255.255.255.0{
}
subnet 192.168.20.0 netmask 255.255.255.0{
}
subnet 192.168.30.0 netmask 255.255.255.0{
}
那么我这里仅作例子只写一个
subnet 192.168.10.0 netmask 255.255.255.0{
range 192.168.10.50 192.168.10.100; #子网范围
option domain-name-servers 8.8.8.8; #dns
option domain-name "internal.example.org"; #域名
option routers 192.168.10.2; #网关
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}
关于配置文件的解读呢,我偷了张图出处
开启服务
[root@controller ~]# systemctl restart dhcpd
[root@controller ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
测试
首先我们要将vmware的dhcp关掉
下面来到客户机也就是compute
没别的意思,打开dhcp就行了
BOOTPROTO=“dhcp”
[root@compute ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="d5677465-8888-4277-abff-db622fefb6bd"
DEVICE="ens33"
ONBOOT="yes"
IPV6_PRIVACY="no"
然后重启网卡
再看ip
ok啦
[root@compute ~]# ping 192.168.10.11
PING 192.168.10.11 (192.168.10.11) 56(84) bytes of data.
64 bytes from 192.168.10.11: icmp_seq=1 ttl=64 time=0.364 ms
64 bytes from 192.168.10.11: icmp_seq=2 ttl=64 time=0.488 ms
64 bytes from 192.168.10.11: icmp_seq=3 ttl=64 time=0.527 ms
64 bytes from 192.168.10.11: icmp_seq=4 ttl=64 time=0.354 ms
^C
--- 192.168.10.11 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.354/0.433/0.527/0.077 ms
[root@compute ~]#
总结
那就到这啦,请叫我不待,拜拜~
你是不是很好奇为什么两台机器明明没什么关联他dhcp分配却能得到ip呢,其实选择相同的网卡也就相当与物理环境中使用同一根网线相连或在一个局域网中,那么我们的机器打开dhcp后会自动搜索局域网内的dhcp服务,发送请求这个时候他没有ip也就是0.0.0.0,说白了就是到处发,完事dhcp服务器收到请求会回复他,并且附上ip大礼包~~