DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是应用层协议,DHCP 使用 UDP 传输,端口号是67和68,其中67端口是 server 使用,68端口是 client 使用。由 Internet 工作任务小组设计开发,专门用于为 TCP/IP 网络中的计算机自动分配 TCP/IP 参数的协议
DHCP是 C/S模式:DHCP 服务端和客户端需要保持通信,DHCP 基于 UDP 协议,双方都有可能会主动向对方发起通信,因此双方都需要监听端口。
Server端:DHCP Server(运行dhcp服务)UDP服务:监听端口67(bootps)
Client端:DHCP Client(运行dhcp程序)UDP服务:监听端口68(bootpc)
典型的 C/S 模式
在网络中假设一台专用的 DHCP 服务器,负责集中分配各种网络地址参数(主要包括 IP 地址、子网掩码、默认网关地址、DNS 服务器地址、广播地址),其他主机作为 DHCP 客户机,将网卡配置为自动获取地址,即可与 DHCP 服务器进行通信,完成自动配置过程
客户机从 DHCP 服务器获得IP地址的过程称为 DHCP 的租约过程
客户机请求 IP 地址
服务器响应
客户机选择IP地址
服务器确定租约
DHCP 服务
主配置文件:/etc/dhcpd.conf
执行序:/usr/sbin/dhcpd、/usr/sbin/dhcrelay
default-lease-time 21600; //默认租约为6小时,单位为秒
max-lease-time 43200; //最大租约为12小时,单位为秒
option domain-name "benet.com"; //指定默认域名
option domain-name-servers 202.106.0.20,202.106.148.1; //指定DNS服务器地址
ddns-update-style none; //禁用DNS动态更新
#subnet网段声明(作用于整个子网段,部分配置参数优先级高于全局配置参数)
subnet 192.168.25.0 netmask 255.255.255.0 { //声明要分配的网段地址
range 192.168.25.100 192.168.25.150; //设置地址池
option routers 192.168.25.2; //指定默认网关地址
#host主机声明(给单机分配固定的IP地址)
host hostname { //指定需要分配固定IP地址的客户机名称
hardware ethernet 00:c0:c3:22:46:81;//指定该主机的MAC地址
fixed-address 192.168.4.100; //指定保留给该主机的IP地址
第一步:关闭防火墙和selinux
[root@fyr ~]# systemctl stop firewalld.service
[root@fyr ~]# setenforce 0
[root@fyr ~]# rpm -qa | grep dhcp
[root@fyr ~]# yum install -y dhcp //安装DHCP服务
第三步:修改虚拟机仅主机模式
更改完成后Xshell就断开了,需要进虚拟机的终端去更改配置
第四步:进入虚拟机配置
[root@fyr ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
第五步:重启并查看
这个时候就可以Xshell连接了
第六步:拷贝并修改 /etc/dhcp/dhcpd.conf 配置文件
[root@fyr ~]# rpm -qc dhcp //查看相关配置文件
[root@fyr ~]# systemctl status dhcpd //查看DHCP的状态
方法一
[root@fyr ~]# cd /etc/dhcp/
[root@fyr dhcp]# ls
[root@fyr dhcp]# cat dhcpd.conf //查看具体配置文件
方法二
[root@fyr dhcp]# cd /usr/share/doc/dhcp-4.2.5/ //进入/usr/share/doc/dhcp-4.2.5/目录中
[root@fyr usr]#ls
[root@fyr dhcp]# less dhcpd.conf.example //查看具体配置文件
#拷贝并修改
[root@fyr dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@fyr dhcp]# vim /etc/dhcp/dhcpd.conf
[root@fyr dhcp]# vim /etc/dhcp/dhcpd.conf
或者
[root@localhost ~]# cd /etc/dhcp/ //切换至dhcpd.conf所在目录
[root@localhost dhcp]# vim dhcpd.conf
#末行模式下:set nu显示行号
subnet 192.168.25.0 netmask 255.255.255.0 { //声明要分配的网段地址
range 192.168.25.100 192.168.25.150; //设置地址池
option routers 192.168.25.2;; //指定默认网关地址
option domain-name-servers 114.114.114.114;
}
[root@fyr dhcp]# systemctl restart dhcpd //重启dhcp服务
[root@fyr dhcp]# systemctl status dhcpd //查看是否成功启动
#如果DHCP服务启动失败,可以查看日志文件
tail -f /var/log/messages
第九步:进入 windows10或7 查看是否获取分配的 IP 地址
#windows设置虚拟网卡为仅主机模式
#虚拟网络编辑器里也设置成仅主机模式,一定要把使用本地DHCP选项勾掉
#改一下windows虚拟机的网卡配置
#在windows系统的cmd里测试,然后释放并重启一下网络
ipconfig 查看网卡信息
ipconfig /release 释放地址
ipconfig /renew 重新获取地址
ipconfig /all 可以看到详情信息,
当企业的内部网络规模较大时,通常被划分为多个不同的子网,网络内配置了 VLAN,VLAN 能隔离广播,而 DHCP 协议使用广播
DHCP 服务器在 VLAN 100中,就只有 VLAN 100内的客户机能从在此获取 IP 地址
两种解决办法:
为每个网段安装一台 DHCP 服务器,但这种方式存在资源上的浪费,而且不利于集中管理。
在连接不同网段的设备上开启 DHC 中继功能,将 DHCP 这种特殊的广播信息在 VLAN 之间转发,让其他 VLAN 的客户机也能从 DHCP 服务器获得 IP 地址。
拓扑图:
第一步:更改网卡连接模式为仅主机
第二步: 修改网卡
[root@fyr ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改网卡ip地址及网关,然后保存退出
[root@fyr ~]# systemctl restart network #重启网络服务
root@localhost ~]# ifconfig #查看ip地址
[root@fyr dhcp]# vim /etc/dhcp/dhcpd.conf
#末行模式下:set nu显示行号
subnet 192.168.100.0 netmask 255.255.255.0 { //声明要分配的网段地址
range 192.168.100.128 192.168.100.150; //设置地址池
option routers 192.168.100.254; //指定默认网关地址
option domain-name-servers 8.8.8.8;
}
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200;
option routers 192.168.10.254;
}
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.100 192.168.20.150;
option routers 192.168.20.254;
}
[root@fyr dhcp]# systemctl start dhcpd //启动dhcp服务
[root@fyr dhcp]# systemctl status dhcpd //查看是否成功启动
[root@fyr dhcp]# netstat -anup | grep "dhcp" //查看网络状态,过滤出dhcp端口
#如果DHCP服务启动失败,可以查看日志文件
tail -f /var/log/messages
第五步:在 ensp 中配置 DHCP 中继
第六步:配置 SW2
<Huawei>undo t m //关闭提示信息
<Huawei>sys //进入系统视图
[Huawei]vlan batch 10 20 100 //创建三个vlan
[Huawei]int e0/0/2 //进入e0/0/2接口
[Huawei-Ethernet0/0/2]undo shutdown //开启接口
[Huawei-Ethernet0/0/2]port link-type access //配置接口为access类型
[Huawei-Ethernet0/0/2]port default vlan 10 //给接口默认划分vlan10,只让vlan10进入
[Huawei-Ethernet0/0/2]int e0/0/3 //进入e0/0/3接口
[Huawei-Ethernet0/0/3]undo shutdown //开启接口
[Huawei-Ethernet0/0/3]port link-type access //配置接口为access类型
[Huawei-Ethernet0/0/3]port default vlan 20 //给接口默认划分vlan20,只让vlan20进入
[Huawei-Ethernet0/0/3]int e0/0/4 //进入e0/0/4接口
[Huawei-Ethernet0/0/4]undo shutdown //开启接口
[Huawei-Ethernet0/0/4]port link-type access //配置接口为access类型
[Huawei-Ethernet0/0/4]port default vlan 100 //给接口默认划分vlan100只让vlan100进入
[Huawei-Ethernet0/0/4]int e0/0/1 //进入e0/0/1接口
[Huawei-Ethernet0/0/1]undo shutdown //开启接口
[Huawei-Ethernet0/0/1]port link-type trunk //配置接口为trunk类型
[Huawei-Ethernet0/0/1]port trunk allow-pass vlan all //允许所有vlan通过
<Huawei>u t m //关闭提示信息.
<Huawei>sys //进入系统视图
[Huawei]vlan batch 10 20 100 //创建三个vlan
[Huawei]display vlan //查看vlan
[Huawei]dhcp enable //开启DHCP服务
[Huawei]int g0/0/1 //进入g0/0/1接口
[Huawei-GigabitEthernet0/0/1]undo shutdown //开启接口
[Huawei-GigabitEthernet0/0/1]port link-type trunk //配置接口为trunk类型
[Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan all //允许所有vlan通过
[Huawei-GigabitEthernet0/0/1]dis this //查看接口信息
[Huawei-GigabitEthernet0/0/1]int vlan 10 //进入虚拟接口vlanif10
[Huawei-Vlanif10]ip add 192.168.10.254 24 //配置IP地址以及子网掩码长度
[Huawei-Vlanif10]dhcp select relay //开启HCP中继功能
[Huawei-Vlanif10]dhcp relay server 192.168.100.10 //指定DHCP服务器地址
[Huawei-Vlanif10]dis this
[Huawei-Vlanif10]int vlan 20 //进入虚拟接口vlanif20
[Huawei-Vlanif20]ip add 192.168.20.254 24 //配置IP地址以及子网掩码长度
[Huawei-Vlanif20]dhcp select relay //开启HCP中继功能
[Huawei-Vlanif20]dhcp relay server 192.168.100.10 //指定DHCP服务器地址
[Huawei-Vlanif20]int vlan 100 //进入虚拟接口vlanif100
[Huawei-Vlanif100]ip add 192.168.100.254 24 //配置IP地址以及子网掩码长度
[Huawei-Vlanif100]dhcp select relay //开启HCP中继功能
[Huawei-Vlanif100]dhcp relay server 192.168.100.10 //指定DHCP服务器地址
[Huawei-Vlanif100]ping 192.168.10.254 //测试是否能与其他网段互通
[Huawei-Vlanif100]ping 192.168.20.254