Linux配置DHCP服务
什么是DHCP
定义
DHCP:动态主机配置协议,用于自动获取IP地址
工作原理
-
客户端会发送一个广播DHCP Discover报文去寻找DHCP服务器
-
客户端只会接受第一个回复的DHCP服务器报文
-
服务端会发送一个DHCP Offer报文,报文中携带相关配置信息
-
报文客户端收到这个offer报文后自动配置相关信息,并且回复一个DHCP Request报文
-
服务器收到request报文会将分配的地址从地址池抹去,并且回复DHCP Ack报文
报文类型
报文类型 | 含义 |
---|---|
Discover | 客户端用来寻找DHCP服务器 |
Offer | 用来响应discover报文 |
Requset | 客户端请求确认配置,或者续租 |
ACK | 对request报文的确认响应 |
Nak | 对request报文的拒绝响应 |
Release | 客户端要释放地址时用来通知服务器 |
Linux中配置DHCP
安装DHCP服务
[root@localhost ~]# yum -y install dhcp
查找dhcp配置文件位置
[root@localhost ~]# rpm -qc dhcp /etc/dhcp/dhcpd.conf #该文件为dhcp配置文件 /etc/dhcp/dhcpd6.conf /etc/openldap/schema/dhcp.schema /etc/sysconfig/dhcpd /var/lib/dhcpd/dhcpd.leases /var/lib/dhcpd/dhcpd6.leases
DHCP示例文件位置
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 1 # 2 # DHCP Server Configuration file. 3 # see /usr/share/doc/dhcp*/dhcpd.conf.example 4 # see dhcpd.conf(5) man page 5 # #第三行即为dhcp配置示例文件的位置 [root@localhost ~]# vim /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example #进入该文件查看示例文本内容
将示例文件覆盖/etc/dhcp/dhcpd.conf文件
[root@localhost ~]# cp -a /user/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
配置文件格式
#全局设置 # 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; #subnet网段声明 # This is a very basic subnet declaration. subnet 10.254.239.0 netmask 255.255.255.224 { range 10.254.239.10 10.254.239.20; option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org; }
DHCP服务配置实验
创建主机A
这里以windows系统为例
-
关闭windows主机防火墙
-
网卡设置使用NAT模式
-
将windows主机网络设置为dhcp自动获取
-
关闭VMware虚拟机程序自带的DHCP服务
-
释放windows当前的IP地址:ipconfig /release
创建DHCP服务器
-
安装DHCP服务
[root@localhost ~]# yum -y install dhcp
-
关闭防火墙
[root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost ~]# setenforce 0
-
将示例文档覆盖至dhcp配置文件存放的文件夹中
[root@localhost ~]# cp -a /user/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
-
编辑配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf # option definitions common to all supported networks... option domain-name "example.org"; option domain-name-servers 218.2.135.1; #全局设置中将DNS设置为218.2.135.1,但是局部设置比全局配置优先级高 # This is a very basic subnet declaration. #subnet网段声明配置: subnet 192.168.20.0 netmask 255.255.255.0 { #规定DHCP服务器的网段为192.168.20.0,子网24 range 192.168.202.50 192.168.20.100; #规定索要分配的地址范围为:50-100 option routers 192.168.20.2; #设置DHCP服务器的网关为192.168.20.2 :wq #保存设置并退出
-
开启DHCP服务
[root@localhost ~]# systemctl start dhcpd
-
查看DHCP服务状态
[root@localhost ~]# systemctl status dhcpd ● dhcpd.service - DHCPv4 Server Daemon Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled) Active: active (running) since 日 2024-04-28 16:19:24 CST; 44s ago Docs: man:dhcpd(8) man:dhcpd.conf(5)
主机A上查看网络情况
-
打开windows主机CMD
-
在cmd中输入ipconfig /all查看当前网卡的IP地址,IP显示为192.168.137.50,与DHCP配置文件中所设置的地址池起始IP相符,说明配置成功
实现时间同步
与阿里云服务器同步时间
安装chrony服务
[root@localhost ~]# yum install -y chrony
查找chrony配置文件
[root@localhost ~]# rpm -qc chrony /etc/chrony.conf
修改配置文件与阿里云同步时间
[root@localhost ~]# vim /etc/chrony.conf # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst server ntp.aliyun.com iburst #以下几行均为阿里云时间同步服务器地址 server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp3.aliyun.com iburst # Allow NTP client access from local network. #设置允许与本台时间同步服务器同步时间的网段 #allow 192.168.0.0/16 allow 192.168.20.0/24 #开启192.168.137.0网段的机器可以同步时间
开启chrony服务及查看状态
[root@localhost ~]# systemctl start chronyd [root@localhost ~]# systemctl status chronyd
验证时间同步服务器是否生效
[root@localhost ~]# date 2024年 04月 28日 星期日 16:40:35 CST #当前本机自动同步的时间 # 手动修改错误时间 [root@localhost ~]# date -s '1year' 2024年 04月 28日 星期日 16:40:35 CST #修改时间增加1年 #使用阿里云ntp同步时间 [root@localhost ~]# ntpdate ntp.aliyun.com 28 Apr 16:41:56 ntpdate[3559]: step time server 203.107.6.88 offset -31535999.998718 sec [root@localhost ~]# date 2024年 04月 28日 星期日 16:42:07 CST #同步完成后时间更正
远端主机B通过时间同步服务器同步时间
[root@localhost ~]# systemctl disable firewalld #关闭防火墙 [root@localhost ~]# setenforce 0 #降低访问限制 [root@localhost ~]# yum -y install chrony [root@localhost ~]# systemctl start chronyd #开启时间同步服务 [root@localhost ~]# vim /etc/chrony.conf # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst server 192.168.137.101 iburst #将时间同步服务器的IP地址作为同步地址 [root@localhost ~]# systemctl restart chronyd #重启时间同步服务 [root@localhost ~]# date 2024年 04月 28日 星期日 17:01:08 CST [root@localhost ~]# date -s '2year' 2026年 04月 28日 星期二 17:01:17 CST [root@localhost ~]# ntpdate 192.168.137.101 [root@localhost ~]# date 2024年 04月 28日 星期日 17:03:11 CST