阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7下搭建DHCP中继服务详解

192次阅读
没有评论

共计 10777 个字符,预计需要花费 27 分钟才能阅读完成。

DHCP 原理与配置

了解 DHCP 服务

  • DHCP 是由 internet 工作任务小组设计开发的,专门用于为 TCP/IP 网络中的计算机自动分配 TCP/IP 参数的协议

使用 DHCP 的好处

  • 减少管理员的工作量
  • 避免 IP 地址冲突
  • 当网络更改 IP 地址段时,不需要再重新配置每个用户的 IP 地址
  • 提高了 IP 地址的利用率
  • 方便客户端的配置

DHCP 的分配方式

  • 自动分配

    • 分配到一个 IP 地址后永久使用
  • 手动分配

    • 由 DHCP 服务器管理员专门指定 IP 地址
  • 动态分配

    • 使用完后释放改 IP,供其它客户机使用
  • 手动分配
    • 由 DHCP 服务器管理员专门指定 IP 地址

DHCP 的租约过程

  • 客户机从 DHCP 服务器获得 IP 地址的工程称为 DHCP 的租约过程

  • 租约过程分为 4 个步骤

    1、客户机请求 IP 地址 Discover

    • 当一个 DHCP 客户机启动时,客户机还没有 IP 地址,所以客户机要通过 DHCP 获取一个合法的地址,此时 DHCP 客户机一广播方式发送 DHCP Discover 发现信息来寻找 DHCP 服务器

    2、响应服务 Offer

    • 当 DHCP 服务器接收到来自客户机请求 IP 地址的信息时,它就在自己的 IP 地址池中查找是否有合法的 IP 地址提供给客户机,如果有。DHCP 服务器就将此 IP 地址做上标记,加入到 DHCP Offer 的消息中,然 DHCP 服务器就广播一则 DHCP Offer 消息

    3、客户机选择 IP 地址 Request

    • DHCP 客户机从接收到的第一个 DHCP Offer 消息中提取 IP 地址,发出 IP 地址的 DHCP 服务器将该地址保留,这样该地址就不能再分配给另一个 DHCP 客户机

    4、服务器确定租约 ACK

    • DHCP 服务器接受到 DHCP Request 消息后,以 DHCP ACK 消息的形式向客户机广播成功确认,该消息包含有 IP 地址的有效租约和其他可配置的信息
  • DHCP 客户机每次重新登录网络时,不需要再发送 DHCP Discover 信息,而是直接发送包含前一次所分配的 IP 地址的 DHCP Request 请求信息

  • 更新租约
    • 当 DHCP 服务器向客户机出租的 IP 地址租期达到 50% 是,就需要更新租约
    • 客户机直接向提供租约的服务器发送 DHCP Request 包,要求更新现有的地址租约

使用 DHCP 动态配置主机地址

  • DHCP 服务

    为大量客户机自动分配地址,提供集中管理

    减轻管理和维护成本、提高网络配置效率

  • 可分配的地址信息主要包括

    网卡的 IP 地址、子网掩码

    对应的网络地址、广播地址

    默认网关地址

    DNS 服务器地址

  • 安装 DHCP 服务器
[root@localhost ~]# yum install dhcp -y
  • 主配置文件

    • /etc/dhcp/dhcpd.conf
  • 查看租约文件
    • /var/lib/dhcpd/dhcpd.lease

使用 DHCP 客户端

  • 修改网卡配置文件

    • BOOTPROTO=dhcp
  • 使用 dhclient 命令
    • dhclient [-d] [网络接口名]

搭建 DHCP 中继服务

实验环境:

  • 使用 VMware 15
  • c3725 路由镜像文件
  • 使用 GNS3 1.3.1  使用方法 https://www.linuxidc.com/Linux/2019-10/160968.htm
  • win 10 镜像
  • win 7 镜像
  • CentOS 7 镜像

相关资料可从以下信息得到下载:

点击这个 http://www.linuxidc.com/Linux/2013-12/93755.htm 链接 关注 Linux 公社官方微信,关注后回复数字160967。即可得到网友的分享密码。

如果取消关注 Linux 公社公众号,即使再次关注,也将无法提供本服务!

链接:https://pan.baidu.com/s/1u6K8fhZgEkEJD1qyKctAaw 密码:获得见上面的方法,地址失效请在下面留言。

—————————————— 分割线 ——————————————

搭建服务

1、在 GNS3 中搭建 DHCP 中继服务的拓扑图,方便我们搭建服务的时候理清思路。在这里我使用一台 win 10 虚拟机、一台 win 7 虚拟机、一台 CentOS 7 虚拟机、两台 c3725 路由设备。首先添加两台路由设备,并在路由设备上添加磁盘空间方便我们创建 vlan,添加 2 层交换接口,方便我们把路由设备做成一个 3 层交换设备与一个 2 层交换设备。添加三台 host 主机,分别更名为 DHC、win 10、win 7,这个时候还需要我们在 VMware 15 虚拟机设备中添加两块虚拟网卡,设知道仅主机模式,这个时候在重新回到 GNS3 中使用链接线将设备接起来,这个实验中我们将划分 3 个 vlan,分别将 3 台虚拟机划分到不同的 vlan 中(vlan 地址划分:vlan10:192.168.10.1/24、vlan20:192.168.20.1/24、vlan100:192.168.100.1/24,给 DHCP 服务器指定静态 IP 地址 192.168.100.100。如下图所示:

CentOS 7 下搭建 DHCP 中继服务详解

2、打开 VMware 15,开启 win 10、win 7、CentOS 7 虚拟机,在 CentOS 7 虚拟机中安装 DHCP 服务;安装完成后分别给 win 10、win 7、CentOS 7 虚拟机绑定网卡,win 10 绑定 VMnet2 网卡,win 7 绑定 VMnet3 网卡 CentOS 7 绑定 VMnet1 网卡;然会回到 CentOS 7 中配置静态路由、配置 DHCP 服务,完成后开启服务,关闭防火墙,关闭增强性安全文件。

[root@localhost ~]# yum install dhcp -y   // 安装 DHCP 服务
已加载插件:fastestmirror, langpacks
base                                                                                | 3.6 kB  00:00:00     
extras                                                                              | 3.4 kB  00:00:00     
updates                                                                             | 3.4 kB  00:00:00     
(1/4): base/7/x86_64/group_gz                                                      | 166 kB  00:00:00     
(2/4): base/7/x86_64/primary_db                                                    | 6.0 MB  00:00:01    
...// 省略部分内容...

CentOS 7 下搭建 DHCP 中继服务详解

CentOS 7 下搭建 DHCP 中继服务详解

[root@localhost ~]# ifconfig  // 查看网卡信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500   // 此时无法获取 IP 地址
        inet6 fe80::a85a:c203:e2e:3f3c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5b:d3:a0  txqueuelen 1000  (Ethernet)
        RX packets 47  bytes 30451 (29.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 122  bytes 13596 (13.2 KiB)
        ...// 省略部分内容...
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33  // 进入 ens33 网卡配置文件

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static          // 更改 dhcp 为 static 配置静态 IP 地址
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=2ef6b862-5201-48c5-a450-23b3720ab3a0
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.100         // 配置 IP 地址
NETMASK=255.255.255.0          // 配置子网掩码
GATEWAY=192.168.100.1          // 配置网关
~                                                                                      
~                                                                                         
:wq                             // 保存退出    
[root@localhost ~]# service network restart          // 重新启动网络服务
Restarting network (via systemctl):                        [确定]
[root@localhost ~]# ifconfig                          // 查看网卡信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  // 获取静态 IP 地址
        inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::a85a:c203:e2e:3f3c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5b:d3:a0  txqueuelen 1000  (Ethernet)
        RX packets 48  bytes 30694 (29.9 KiB)
        ...// 省略部分内容...
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf         // 进入 dhcp 服务主配置文件

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example  // 显示 dhcp 配置文件模板位置
#   see dhcpd.conf(5) man page
#
~                                                                                      
...// 省略部分内容...                                                                    
~                                                                                      
:r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  // 将 dhcpd 配置文件模板写入主配置文件
// 写入的著配置文件:#
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

# 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;

# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the    
# DHCP server to understand the network topology.

subnet 10.152.187.0 netmask 255.255.255.0 {
}                                                 // 主要在此处做出更改

# 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;
}

// 更改后的配置文件信息:...// 省略部分内容...
# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

subnet 192.168.100.0 netmask 255.255.255.0 {       // 更改 IP 网段
        range 192.168.100.100 192.168.100.200;     // 可以分配的 IP 地址范围
        option routers 192.168.100.1;              // 网关信息(注意,每段结束以;结尾)}                                                  // 注意最后的大括号不可删除,否则服务无法开启

subnet 192.168.10.0 netmask 255.255.255.0 {
        range 192.168.10.100 192.168.10.200;    // 添加 vlan 10 网段的地址分配条目
        option routers 192.168.10.1;
}

subnet 192.168.20.0 netmask 255.255.255.0 {
        range 192.168.20.100 192.168.20.200;    // 添加 vlan 20 网段的地址分配条目
        option routers 192.168.20.1;
}

# This is a very basic subnet declaration.
:wq     // 保存退出
// 因为我们这边设置了三个 vlan,网段都不相同,所以三个网段都要添加

[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 三 2019-09-04 22:56:05 CST; 14s ago // 服务成功开启
     Docs: man:dhcpd(8)
           man:dhcpd.conf(5)
 Main PID: 5343 (dhcpd)
   Status: "Dispatching packets..."
   CGroup: /system.slice/dhcpd.service
           └─5343 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhc...

9 月 04 22:56:05 localhost.localdomain dhcpd[5343]: No subnet declaration for virbr....
...// 省略部分内容...
9 月 04 22:56:05 localhost.localdomain systemd[1]: Started DHCPv4 Server Daemon.
Hint: Some lines were ellipsized, use -l to show in full.

3、DHCP 服务开启后我们回到 GNS3 中,开启添加的 3 层交换机与 2 层交换机,并双击进入 3 层交换设备与 2 层交换设备,在 2 层交换设备中配置 vlan,并将接入链路分别接入相对应的 vlan 中,将 f1/ 0 接口配置为 trunk 链路,在 3 层交换设备中同样设置 vlan,然后进入 vlan 中配置 IP 地址,并指定 IP 地址 192.168.100.100 可以通过 vlan 在局域网中通信,最后将 f1/ 0 接口同样配置为 trunk 链路。

CentOS 7 下搭建 DHCP 中继服务详解

sw2#conf t                 // 在 2 层交换设备中进入全局模式
Enter configuration commands, one per line.  End with CNTL/Z.
sw2(config)#vlan 10,20,100   // 配置 vlan10、20、100
sw2(config-vlan)#ex           // 退出 vlan 接口
sw2(config)#do show vlan-sw b // 查看 vlna 是否配置成功

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/1, Fa1/2, Fa1/3
                                                Fa1/4, Fa1/5, Fa1/6, Fa1/7
                                                Fa1/8, Fa1/9, Fa1/10, Fa1/11
                                                Fa1/12, Fa1/13, Fa1/14, Fa1/15
10   VLAN0010                         active    
20   VLAN0020                         active    // 配置的 vlan
100  VLAN0100                         active    
1002 fddi-default                     act/unsup 
1003 token-ring-default               act/unsup 
1004 fddinet-default                  act/unsup 
1005 trnet-default                    act/unsup 
sw2(config)#int f1/1       // 进入 f1/ 1 接口
sw2(config-if)#sw m acc    // 进入配置链路
sw2(config-if)#sw acc vlan 100 // 将链路接入 vlan100
sw2(config-if)#ex          // 退出
sw2(config)#int f1/2        // 进入 f1/ 2 接口
sw2(config-if)#sw m acc      // 进入配置链路
sw2(config-if)#sw acc vlan 10  // 将链路接入 vlan10
sw2(config-if)#ex              // 退出
sw2(config)#int f1/3       // 进入 f1/ 3 接口
sw2(config-if)#sw m acc      // 进入配置链路
sw2(config-if)#sw acc vlan 20  // 将链路接入 vlan20
sw2(config-if)#ex             // 退出
sw2(config)#do show vlan-sw b  // 查看 vlna

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/4, Fa1/5, Fa1/6
                                                Fa1/7, Fa1/8, Fa1/9, Fa1/10
                                                Fa1/11, Fa1/12, Fa1/13, Fa1/14
                                                Fa1/15
10   VLAN0010                         active    Fa1/2   
20   VLAN0020                         active    Fa1/3      // 链路成功接入 vlan
100  VLAN0100                         active    Fa1/1
1002 fddi-default                     act/unsup 
1003 token-ring-default               act/unsup 
1004 fddinet-default                  act/unsup 
1005 trnet-default                    act/unsup 
sw2(config)#int f1/0           // 进入 f1/ 0 接口
sw2(config-if)#sw m t          // 将接口配置为 trunk
sw2(config-if)#sw t en do       // 在 trunk 链路中封装 dot1q 协议
sw2(config-if)#ex              // 退出
sw2(config)#do show int f1/0 switchport  // 查看接口是否配置成功
Name: Fa1/0
Switchport: Enabled
Administrative Mode: trunk           // 成功配置 trunk 链路
Operational Mode: trunk
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Negotiation of Trunking: Disabled
Access Mode VLAN: 0 ((Inactive))
Trunking Native Mode VLAN: 1 (default)
Trunking VLANs Enabled: ALL
Trunking VLANs Active: 1,10,20,100
Protected: false
Priority for untagged frames: 0
Override vlan tag priority: FALSE
Voice VLAN: none 
Appliance trust: none
sw2(config)#no ip routing   // 关闭 2 层交换设备路由功能
sw3(config)#vlan 10,20,100    // 在 3 层交换设备中配置 vlan10、20、100 
sw3(config-vlan)#ex            // 退出  
sw3(config)#do show vlan-sw b    // 查看 vlan

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/1, Fa1/2, Fa1/3
                                                Fa1/4, Fa1/5, Fa1/6, Fa1/7
                                                Fa1/8, Fa1/9, Fa1/10, Fa1/11
                                                Fa1/12, Fa1/13, Fa1/14, Fa1/15
10   VLAN0010                         active    
20   VLAN0020                         active     // 配置成功
100  VLAN0100                         active    
1002 fddi-default                     act/unsup 
1003 token-ring-default               act/unsup 
1004 fddinet-default                  act/unsup 
1005 trnet-default                    act/unsup 
sw3(config)#int vlan 10                        // 进入虚拟接口 vlan10 
sw3(config-if)#ip add 192.168.10.1 255.255.255.0   // 在接口中添加 IP 地址 
sw3(config-if)#ip helper-address 192.168.100.100   // 指定 IP 地址 192.168.100.100 可通过接口
sw3(config-if)#no shut                            // 开启配置
sw3(config-if)#ex                            // 退出
sw3(config)#int vlan 20                  // 进入虚拟接口 vlan20
sw3(config-if)#ip add 192.168.20.1 255.255.255.0   // 在接口中添加 IP 地址 
sw3(config-if)#ip helper-address 192.168.100.100  // 指定 IP 地址 192.168.100.100 可通过接口
sw3(config-if)#no shut                          // 开启配置
sw3(config-if)#ex                            // 退出
sw3(config)#int vlan 100               // 进入虚拟接口 vlan100
sw3(config-if)#ip add 192.168.100.1 255.255.255.0 // 在接口中添加 IP 地址 
sw3(config-if)#ip helper-address 192.168.100.100   // 指定 IP 地址 192.168.100.100 可通过接口
sw3(config-if)#no shut                           // 开启配置
sw3(config-if)#ex                      // 退出
sw3(config)#int f1/0              // 进入 f1/0 接口
sw3(config-if)#sw m t            // 配置为 trunk 链路
*Mar  1 00:22:18.607: %DTP-5-TRUNKPORTON: Port Fa1/0 has become dot1q trunk
*Mar  1 00:22:19.111: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan10, changed state to up
*Mar  1 00:22:19.119: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan20, changed state to up
*Mar  1 00:22:19.127: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan100, changed state to up
sw3(config-if)#sw t en do    // 封装协议
sw3(config-if)#ex             // 突出
sw3(config)#do show int f1/0 switchport  // 查看 trunk 是否配置成功 
Name: Fa1/0
Switchport: Enabled
Administrative Mode: trunk      // 成功配置 trunk 链路
Operational Mode: trunk
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Negotiation of Trunking: Disabled
Access Mode VLAN: 0 ((Inactive))
Trunking Native Mode VLAN: 1 (default)
Trunking VLANs Enabled: ALL
Trunking VLANs Active: 1,10,20,100
Protected: false
Priority for untagged frames: 0
Override vlan tag priority: FALSE
Voice VLAN: none 
Appliance trust: none 
sw3(config)#do show ip int b     // 查看 IP 地址是否配入 vlan,是否开启
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  administratively down down    
FastEthernet0/1            unassigned      YES unset  administratively down down    
FastEthernet1/0            unassigned      YES unset  up                    up      
FastEthernet1/1            unassigned      YES unset  up                    down    
...// 省略部分内容... 
FastEthernet1/14           unassigned      YES unset  up                    down    
FastEthernet1/15           unassigned      YES unset  up                    down    
Vlan1                      unassigned      YES unset  up                    up      
Vlan10                     192.168.10.1    YES manual up                    up      
Vlan20                     192.168.20.1    YES manual up                    up      
Vlan100                    192.168.100.1   YES manual up                    up  
// 成功配入,并开启

4、完成配置后我们来查看虚拟机客户端 win 10、win 7 是否自动获取 IP 地址

CentOS 7 下搭建 DHCP 中继服务详解CentOS 7 下搭建 DHCP 中继服务详解CentOS 7 下搭建 DHCP 中继服务详解

5、下面我们来给 win 10 客户机指定固定的 IP 地址,首先在 win 10 客户机中获取 win 10 客户机网卡的 MAC 地址,然后会的 CentOS 7 系统中进入 DHCP 配置文件中进行设置

CentOS 7 下搭建 DHCP 中继服务详解

CentOS 7 下搭建 DHCP 中继服务详解CentOS 7 下搭建 DHCP 中继服务详解CentOS 7 下搭建 DHCP 中继服务详解CentOS 7 下搭建 DHCP 中继服务详解

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计10777字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中