搭建dhcp服务
一、实现DHCP服务
1.主机获取网络配置可以通过两种方式:
1)静态指定
2)动态获取
- bootp:boot protocol, MAC与IP一一静态对应
- dhcp:增强的bootp,支持静态和动态
2.DHCP工作原理
DHCP: Dynamic Host Configuration Protocol,动态主机配置协议
UDP协议,C/S模式,dhcp server:67/udp,dhcpv4 client :68/udp,dhcpv6 client:546/udp
主要用途:
- 用于内部网络和网络服务供应商自动分配IP地址给用户
- 用于内部网络管理员作为对所有电脑作集中管理的手段
- 自动化安装系统
- 解决IPV4资源不足问题
3.DHCP实现
注意:实现DHCP服务前,先将网络已有DHCP服务,如:vmware中的DHCP关闭,访止冲突
1)DHCP服务的实现软件:
- dhcp(CentOS 7 之前版本) 或 dhcp-server(CentOS 8 中的包名)
- dnsmasq:小型服务软件,可以提供dhcp和dns功能
2)DHCP相关文件组成
dhcp或dhcp-server 包文件组成
/usr/sbin/dhcpd dhcp服务主程序 /etc/dhcp/dhcpd.conf dhcp服务配置文件 /usr/share/doc/dhcp-server/dhcpd.conf.example #dhcp服务配置范例文件 /usr/lib/systemd/system/dhcpd.service #dhcp服务service文件 /var/lib/dhcpd/dhcpd.leases 地址分配记录
dhcp-client客户端包
/usr/sbin/dhclient #客户端程序
/var/lib/dhclient #自动获取的IP信息
windows 工具
ipconfig /release #释放DHCP获取的IP,重新申请IP
ipconfig/renew #刷新租约,续约
3)DHCP服务器配置文件
帮助参考:man 5 dhcpd.conf
注意:
- DHCP服务器本身采用静态IP
- 必须配置和DHCP网卡的静态IP所在网段的subnet 段,否则DHCP服务无法启动
/etc/dhcp/dhcpd.conf 格式
全局配置
subnet {
...
}
host {
}
检查语法命令:service dhcpd configtest (CentOS 6 之前版本支持)
4)DHCP配置文件其它配置选项:
- next-server:提供引导文件的服务器IP地址
- filename: 指明引导文件名称
范例:在linux搭建DHCP服务(centos8)
[root@centos8 ~]# yum -y install dhcp-server
查看里面包含的文件
[root@centos8 ~]# rpm -ql dhcp-server
将服务启动
[root@centos8 ~]# systemctl enable --now dhcpd
[root@centos8 ~]# systemctl status dhcpd
发现出事了,竟然失败了,我们查看日志分析原因
[root@centos8 ~]# cat /var/log/messages
还是配置文件出了问题,我们查看其配置文件
[root@centos8 ~]# vim /etc/dhcp/dhcpd.conf
果然,里面什么都没有,只有几行注释,所以我们要自己配置,我们可以参考现成的文件在注释的第三行,将其拷过来并替代了
[root@centos8 ~]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
当然,我们再次重启服务
发现依旧起不来,所以我们还要对其进行修改,根据上面日志分析得知是确实了子网定义,将其修改即可
[root@centos8 ~]# vim /etc/dhcp/dhcpd.conf
再次尝试启动,发现起来了
查看其监听端口
[root@centos8 ~]# ss -ntul
但是我们还需要再次修改配置文件,分配地址
[root@centos8 dhcp]# vim /etc/dhcp/dhcpd.conf
重启服务:
[root@centos8 ~]# systemctl restart dhcpd
[root@centos8 ~]# systemctl status dhcpd
我们可以开始获取地址:
重启网卡:
nmcli con reload nmcli con nmcli con up "System eth0"
拿到地址:
当然作为dhcp服务器来讲还需要知道谁从本服务端获取地址
在/var/lib/dhcpd/目录下有个dhcpd.leases的文件就可以查看
[root@centos8 ~]# cat /var/lib/dhcpd/dhcpd.leases
至此dhcp服务搞定!
扩展:当然我们在一个机器上既可以设置一个静态ip,又就可以加一个dhcp的ip,只需开启一个叫dhclient的程序
[root@centos7 ~]# man dhclient
-d 前台方式执行
[root@centos7 ~]# dhclient -d
已经获取到了193.168.93.162的地址
所以linux里是可以一个网卡既有静态地址同时又有自动获取地址,但是一般不这么干。
范例:固定dhcp获取的地址
修改配置文件/etc/dhcp/dhcpd.conf,追加,将目标主机mac地址写上,ip按需给,也可以不在范围内
[root@centos8 ~]# vim /etc/dhcp/dhcpd.conf
重启dhcpd服务
[root@centos8 ~]# systemctl restart dhcpd
在centos7上重新执行dhclient程序,重新申请
[root@centos7 ~]# dhclient -d
[root@centos7 ~]# ip a
完成。
记录于2022-3-24-20:49 weilan