魏蓝

以梦为马

导航

搭建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

posted on 2022-03-24 20:50  魏蓝  阅读(319)  评论(0编辑  收藏  举报