DHCP服务
目录
一、DHCP是什么?
DHCP协议
DHCP的优势
DHCP的分配方式
应用场景
注意
二、模拟真实环境下DHCP服务器给主机分配不同网段IP地址
要求:
思路规划:
部署
基础环境
配置yum源
关闭防火墙及SElinux
查看SElinux状态
配置
配置文件存储路径 /etc/dhcp
核心配置文件 /etc/dhcp/dhcpd.conf
启动 DHCP 服务
配置完成,验证
内部机:
外部机:
验证成功!
内部机ping外部机
一、DHCP是什么?
DHCP协议
Dynamic Host Configuration Protocol ,动态主机配置协议
作用:动态的进行IP地址分配
服务端的监听端口 67/udp
客户端监听端口 68/udp
网络架构 C/S:client/server
DHCP的优势
-
提高配置效率
-
减少配置错误
DHCP的分配方式
-
手动分配:固定不变,工程师进行地址绑定
-
自动分配:但是不进行地址回收
-
动态分配:进行地址回收
应用场景
-
更加准确的配置网络参数的情况下
-
网络环境较大时
注意
同一个网络环境下不允许存在多个DHCP服务器
二、模拟真实环境下DHCP服务器给主机分配不同网段IP地址
要求:
- DHCP服务器能够为两个网络分别分配IP地址。
- 内部客户机设置为固定获得某一个IP地址。
思路规划:
DHCP 服务器 VMnet1(仅主机) + VMnet2 双网卡,连接两个外部、内部两个网段(服务器是固定IP地址)
内部客户机 VMnet1(仅主机) 需服务器分配固定 IP 地址
路由器 VMnet1(仅主机) + VMnet2 双网卡,运行 dhcrelay(路由器是固定IP地址)
外部客户机 VMnet2 从服务器动态获取 IP地址
部署
首先给服务器、路由器分配固定ip地址
基础环境
配置yum源
yum install -y dhcp-server
yum install -y dhcp-relay ##路由器安装dhcp-relay服务
关闭防火墙及SElinux
systemctl stop firewalld && systemctl disable firewalld
查看SElinux状态
[root@localhost ~]# getenforce
###设置宽容模式
[root@localhost ~]# setenforce 0
###关闭SElinux,重启才能生效
[root@localhost ~]# vim /etc/selinux/config
SELINUX=enforcing 改为 SELINUX=disabled
配置
配置文件存储路径 /etc/dhcp
核心配置文件 /etc/dhcp/dhcpd.conf
[root@localhost dhcp]# vim dhcpd.conf
# A slightly different configuration for an internal subnet.
subnet 192.168.100.0 netmask 255.255.255.0 {range 192.168.100.2 192.168.100.253;option domain-name-servers 192.168.100.1;#option domain-name "internal.example.org";option routers 192.168.100.254;option broadcast-address 192.168.100.255;default-lease-time 600;max-lease-time 7200;
}
subnet 192.168.200.0 netmask 255.255.255.0 {range 192.168.200.2 192.168.200.253;option domain-name-servers 192.168.200.1;#option domain-name "internal.example.org";option routers 192.168.200.254;option broadcast-address 192.168.200.255;default-lease-time 600;max-lease-time 7200;
}
host ens33 {hardware ethernet 00:0c:29:b3:a1:21;fixed-address 192.168.100.100;
}
启动 DHCP 服务
[root@localhost dhcp]# systemctl enable --now dhcpd
路由器启动dhcrely
systemctl enable --now dhcrelay
开启路由器路由转发功能(确保跨网段通信)
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf #在路由器上
配置内部客户机
[root@localhost ~]# 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=eui64
NAME=ens33
UUID=13cc887b-cb4c-4dbe-b69a-5b06054401f0
DEVICE=ens33
ONBOOT=yes
配置外部客户机
[root@localhost dhcp]# 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=eui64
NAME=ens33
DEVICE=ens33
ONBOOT=yes
配置完成,验证
内部机:
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:b3:a1:21 brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.100.100/24 brd 192.168.100.255 scope global dynamic noprefixroute ens33valid_lft 598sec preferred_lft 598secinet6 fe80::20c:29ff:feb3:a121/64 scope link noprefixroute valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:41:0d:78 brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
外部机:
[root@localhost network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:c4:f5:3c brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.200.2/24 brd 192.168.200.255 scope global dynamic noprefixroute ens33valid_lft 391sec preferred_lft 391secinet6 fe80::20c:29ff:fec4:f53c/64 scope link noprefixroute valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:41:0d:78 brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
验证成功!
内部机ping外部机
[root@localhost ~]# ping 192.168.200.2
PING 192.168.200.2 (192.168.200.2) 56(84) bytes of data.
64 bytes from 192.168.200.2: icmp_seq=1 ttl=63 time=0.563 ms
64 bytes from 192.168.200.2: icmp_seq=2 ttl=63 time=0.418 ms
^C
--- 192.168.200.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 0.418/0.490/0.563/0.075 ms