实验环境
主机名称 | 操作系统 | IP地址 | 网络连接方式 |
---|---|---|---|
DHCP-Server | CentOS 7.5 | ens33:192.168.200.10 | vnet8 |
DHCP-Relay | CentOS 7.5 | ens33:192.168.200.100 ens37:192.168.100.100 | vnet8 vnet1 |
Client | CentOS 7.5 | DHCP分配(动态获取) | vnet1 |
###建议:
###测试前,先关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# setenforce 0
一、【物理机】关闭Vnet1和Vnet8的DHCP功能
二、【DHCP-Server】配置静态IP地址
2.1 配置静态IP地址
-
配置ens33网卡
[root@dhcp-server ~]# cd /etc/sysconfig/network-scripts/
[root@server network-scripts]# vim ifcfg-ens33
配置内容如下
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.10
PREFIX=24
GATEWAY=192.168.200.2
DNS1=114.114.114.114
2.2 测试网络
192.168.200.2为VM NAT网关地址。
[root@dhcp-server ~]# ping 192.168.200.2 -c2
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=128 time=0.131 ms
64 bytes from 192.168.200.2: icmp_seq=2 ttl=128 time=0.232 ms
--- 192.168.200.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.131/0.181/0.232/0.052 ms
三、【DHCP-Relay】配置静态IP地址
3.1 配置静态IP地址
-
配置ens33网卡
[root@dhcp-relay ~]# cd /etc/sysconfig/network-scripts/
[root@dhcp-relay network-scripts]# vim ifcfg-ens33
配置内容如下
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
DEVICE=ens33
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
IPADDR=192.168.200.100
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=114.114.114.114
-
配置ens37网卡
[root@dhcp-relay network-scripts]# vim ifcfg-ens37
配置内容如下
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens37
DEVICE=ens37
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
IPADDR=192.168.100.100
NETMASK=255.255.255.0
说明:网卡配置修改后,记得使用systemctl restart network重新启动下网卡服务
3.2 测试网络
192.168.200.2为VM NAT网关地址。
[root@dhcp-realy ~]# ping 192.168.200.2 -c2
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=128 time=0.222 ms
64 bytes from 192.168.200.2: icmp_seq=2 ttl=128 time=0.375 ms
--- 192.168.200.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 0.222/0.298/0.375/0.078 ms
四、【DHCP-Server】安装DHCP服务器
[root@dhcp-server ~]# yum install -y dhcp
五、【DHCP-Server】编辑配置文件/etc/dhcp/dhcpd.conf
[root@dhcp-server ~]# vim /etc/dhcp/dhcpd.conf
5.1 DHCP配置
ddns-update-style none;
default-lease-time 21600;
max-lease-time 43200;
subnet 192.168.200.0 netmask 255.255.255.0{
option routers 192.168.200.2;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.200.2;
range dynamic-bootp 192.168.200.11 192.168.200.99;
}
subnet 192.168.100.0 netmask 255.255.255.0{
option routers 192.168.100.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 114.114.114.114;
range dynamic-bootp 192.168.100.11 192.168.100.99;
}
5.2 重启dhcp服务
[root@dhcp-server ~]# systemctl restart dhcpd
[root@dhcp-server ~]# systemctl enable dhcpd
-
说明:在配置dhcp时,一定要小心,如若出现语法错误、输入错误,DHCP将无法启动。
5.3 添加DHCP服务器到中继服务器的路由
[root@dhcp-server ~]# ip route add 192.168.100.0/24 via 192.168.200.10
[root@dhcp-server ~]# ip route list
default via 192.168.200.2 dev ens33 proto static metric 100
192.168.100.0/24 via 192.168.200.10 dev ens33
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
192.168.200.0/24 dev ens33 proto kernel scope link src 192.168.200.10 metric 100
六、【DHCP-Relay】配置DHCP中继服务器
6.1 启用IPv4的转发功能
[root@dhcp-relay ~]# vim /etc/sysctl.conf
添加一行
net.ipv4.ip_forward = 1
[root@dhcp-relay ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@dhcp-relay ~]# cat /proc/sys/net/ipv4/ip_forward
1
6.2 安装DHCP服务
[root@dhcp-relay ~]# yum install dhcp -y
6.3 配置中继代理
指定DHCP服务器的位置
[root@dhcp-relay ~]# cp /lib/systemd/system/dhcrelay.service /etc/systemd/system
[root@dhcp-relay ~]# cd /etc/systemd/system
[root@dhcp-relay system]# vim dhcrelay.service
修改如下
[Unit]
Description=DHCP Relay Agent Daemon
Documentation=man:dhcrelay(8)
Wants=network-online.target
After=network-online.target
[Service]
Type=notify
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.200.10 #只修改了这一行
[Install]
WantedBy=multi-user.target
重新配置信息
[root@dhcp-relay system]# systemctl --system daemon-reload
6.4 重新启动DHCP中继服务
[root@dhcp-relay ~]# systemctl restart dhcrelay.service
[root@dhcp-relay ~]# systemctl enable dhcrelay.service
七、客户端测试
7.1 【Client】上测试
7.2 查看日志
[root@dhcp-server ~]# tail -n 10 /var/log/messages
Feb 7 20:22:30 centos-teach dhcpd: DHCPOFFER on 192.168.100.11 to 00:50:56:2a:8a:1c (centos-teach) via 192.168.100.100
Feb 7 20:22:45 centos-teach dhcpd: DHCPDISCOVER from 00:50:56:2a:8a:1c (centos-teach) via 192.168.100.100
Feb 7 20:22:45 centos-teach dhcpd: DHCPOFFER on 192.168.100.11 to 00:50:56:2a:8a:1c (centos-teach) via 192.168.100.100
Feb 7 20:26:08 centos-teach journal: secret_service_search_sync: must specify at least one attribute to match
Feb 7 20:26:13 centos-teach dhcpd: DHCPDISCOVER from 00:50:56:2a:8a:1c (centos-teach) via 192.168.100.100
Feb 7 20:26:14 centos-teach dhcpd: DHCPOFFER on 192.168.100.11 to 00:50:56:2a:8a:1c (centos-teach) via 192.168.100.100
Feb 7 20:26:14 centos-teach dhcpd: DHCPREQUEST for 192.168.100.11 (192.168.200.10) from 00:50:56:2a:8a:1c (centos-teach) via 192.168.100.100
Feb 7 20:26:14 centos-teach dhcpd: DHCPACK on 192.168.100.11 to 00:50:56:2a:8a:1c (centos-teach) via 192.168.100.100
Feb 7 20:28:00 centos-teach dhcpd: DHCPREQUEST for 192.168.100.11 from 00:50:56:2a:8a:1c (centos-teach) via 192.168.100.100
Feb 7 20:28:00 centos-teach dhcpd: DHCPACK on 192.168.100.11 to 00:50:56:2a:8a:1c (centos-teach) via 192.168.100.100