zoukankan      html  css  js  c++  java
  • DHCP原理与配置

    一、DHCP服务概述

    1、DHCP(Dynamic Host Configuration Protocol)动态主机配置协议

    使用DHCP可以减少管理员的工作量,避免IP地址冲突,当网络更改IP地址网段时不

    需要再重新配置每个用户的IP地址,提高了IP地址的利用率,方便客户端的配置。

    2、可分配的地址信息主要包括:

    网卡的IP地址,子网掩码,对应的网络地址,广播地址,默认网关地址,DNS服务器地址等。

    3、DHCP的分配方式

    (1)自动分配:分配到一个IP地址后永久使用

    (2)手动分配:由DHCP服务器管理员专门指定IP地址

    (3)动态分配:使用完后释放该IP,供其他客户机使用

    4、DHCP的租约过程

    (1)客户机从DHCP服务器获取IP地址的过程称为DHCP的租约过程。

    (2)租约过程分为四个步骤:

    1>客户机请求IP(客户机发 DHCP Discover 广播包)

    2>服务器响应(服务器发 DHCP Offer 广播包)

    3>客户机选择IP(客户机发 DHCP Request 广播包)

    4>服务器确定租约(服务器发 DHCP ACK 广播包)

    (3)重新登录

    1>客户机选择IP(客户机发 DHCP Request 请求包)

    2>服务器确定租约(服务器发 DHCP ACK 确认信息)

    1>客户机选择IP(客户机发 DHCP Request 请求包)

    2>服务器否认信息(服务器发 DHCP Nack 否认信息)

    3>客户机重新租约

    (4)更新租约

    当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约。客户机

    直接向提供租约的服务器发送DHCP Request 包,要求更新现有的地址租约。若此时DHCP

    服务器无法正常回复DHCP客户机的请求,客户机的此IP地址可以继续使用到最大租约时间的87.5%。

    二、DHCP中继原理

    当企业的内部网络规模较大时,通常被划分为多个不同的子网,网络内配置 了VLAN,VLAN能隔离广播,而DHCP协议使用广播。DHCP服务器在VLAN 100 中,就只有VLAN 100内的客户机能从DHCP服务器那里获取IP地址, 如果VLAN 2或VLAN 3的客户机也需要通过这台DHCP服务器来获取IP地址, 该怎么办呢?

    解决的办法有两种:(1) 为每个网段安装一台DHCP服务器,但这种方式存在资源上的浪费,而且不利 于集中管理

              (2)在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播信息 在VLAN之间转发,让其他VLAN的客户机也能从DHCP服务器那里获得IP地址

    DHCP中继的配置命令:

    ip helper-address DHCPsrv-IPAddress

    DHCPsrv-IPAddress 为DHCP服务器的IP地址

    三、Linux中DHCP的安装与配置

    [root@localhost ~]# ifconfig ens32

    ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

     inet 192.168.200.111 netmask 255.255.255.0 broadcast 192.168.200.255

     inet6 fe80::20c:29ff:feb6f933c prefixlen 64 scopeid 0x20<link>

     ether 00f0c:29:b6f93f3c txqueuelen 1000 (Ethernet)

     RX packets 12095 bytes 5828847 (5.5 MiB)

     RX errors 0 dropped 0 overruns 0 frame 0

     TX packets 9811 bytes 1905280 (1.8 MiB)

     TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    [root@localhost ~]# mkdir /media/cdrom

    [root@localhost ~]# mount /dev/cdrom /media/cdrom

    [root@localhost ~]# rpm -ivh /media/cdrom/Packages/dhcp-4.2.568.el7.centos.x86_64.rpm

    配置DHCP服务

    主配置⽂文件:/etc/dhcp/dhcpd.conf

    执行程序:/usr/sbin/dhcpd

    服务脚本名:dhcpd

    [root@localhost ~]# cat /etc/dhcp/dhcpd.conf

    #

    # DHCP Server Configuration file.

    # see /usr/share/doc/dhcp*/dhcpd.conf.example
    # see dhcpd.conf(5) man page

    #

    [root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

    [root@localhost ~]# vim /etc/dhcp/dhcpd.conf

    option domain-name "crushlinux.com";                                  //设置DNS域

    option domain-name-servers 202.106.0.20, 8.8.8.8;              //设置DNS服务器地址

    default-lease-time 21600;                      //设置分配IP地址的默认租约时间,单位是秒

    max-lease-time 43200;                          //设置分配IP地址的最大租约时间,单位是秒

    subnet 192.168.200.0 netmask 255.255.255.0 {                   //设置分配IP地址网段 及⼦网掩码

    range 192.168.200.150 192.168.200.200;                            //设置分配IP地址的地址池范围

    option routers 192.168.200.1;                                               //设置分配网关地址

    }

    [root@localhost ~]# systemctl start dhcpd

    DHCP服务端通过监听UDP协议67端口工作,客户端通过UDP协议68端口工作。

    [root@localhost ~]# netstat -lnpu | grep :67

    udp 0 0 0.0.0.0:67 0.0.0.0:* 109961/dhcpd

    udp 0 0 0.0.0.0:67 0.0.0.0:* 1274/dnsmasq

    [root@localhost ~]# tail -f /var/log/messages //日志中捕获到的四个过程

    Jan 6 22f21f47 localhost dhcpd: DHCPDISCOVER from 00f0c:29:a4f48:bb via ens32

    Jan 6 22f21f48 localhost dhcpd: DHCPOFFER on 192.168.200.150 to 00f0c:29:a4f48:bb (Crushlinux-PC) via ens32
    Jan 6 22f21f48 localhost dhcpd: DHCPREQUEST for 192.168.200.150 (192.168.200.111) from 00f0c:29:a4f48:bb (Crushlinux-PC) via ens32

    Jan 6 22f21f48 localhost dhcpd: DHCPACK on 192.168.200.150 to 00f0c:29:a4f48:bb (Crushlinux-PC) via ens32

    Windows7客户机将网络模式设置与DHCP服务器相同模式,获取IP地址测试。

    [root@localhost ~]# cat /var/lib/dhcpd/dhcpd.leases //租约信息⽂文件

    # The format of this file is documented in the dhcpd.leases(5) manual page.

    # This lease file was written by isc-dhcp-4.2.5

    server-duid "00010001#304313u0014)266223<";

    lease 192.168.200.150 {

    starts 0 2019/01/06 14f21f48;

    ends 0 2019/01/06 20f21f48;

    cltt 0 2019/01/06 14f21f48;

    binding state active;

    next binding state free;

    rewind binding state free;

    hardware ethernet 00f0c:29:a4f48:bb;
    uid "010014)244H273";

    client-hostname "Crushlinux-PC"; }

    Linux客户机将网络模式设置与DHCP服务器相同模式,获取IP地址测试。

    [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32

    TYPE=Ethernet

    PROXY_METHOD=none

    BROWSER_ONLY=no

    BOOTPROTO=dhcp

    DEFROUTE=yes

    IPV4_FAILURE_FATAL=no

    IPV6INIT=no IPV6_AUTOCONF=no

    IPV6_DEFROUTE=no

    IPV6_FAILURE_FATAL=no

    IPV6_ADDR_GEN_MODE=stable-privacy

    NAME=ens32

    UUID=b194e583-21c3-4109-a160-3d2a9876a30b

    IPV6_PRIVACY=no

    DEVICE=ens32

    ONBOOT=yes

    [root@localhost ~]# systemctl restart network

    或者

    [root@localhost ~]# dhclient -r ens32 //释放IP地址

    [root@localhost ~]# dhclient -d ens32 //重新获取

    针对部分主机可绑定其MAC地址为其分配固定IP地址

    [root@localhost ~]# vim /etc/dhcp/dhcpd.conf

    host win7 { //添加主机定义

    hardware ethernet 00f0c:29:a4f48:bb;//客户机MAC地址

    fixed-address 192.168.200.99; //为客户机绑定的IP地址

    }

    [root@localhost ~]# systemctl restart dhcpd


    Windows7客户机将网络模式设置与DHCP服务器相同模式,重新获取IP地址测试。

    ipconfig /release 释放IP地址

    ipconfig /renew 重新获取IP地址

    四、Linux中DHCP中继配置

    DHCP服务器调整:

    [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32

    TYPE=Ethernet

    PROXY_METHOD=none
    BROWSER_ONLY=no

    BOOTPROTO=static

    DEFROUTE=yes

    IPV4_FAILURE_FATAL=no

    IPV6INIT=no

    IPV6_AUTOCONF=no

    IPV6_DEFROUTE=no

    IPV6_FAILURE_FATAL=no

    IPV6_ADDR_GEN_MODE=stable-privacy

    NAME=ens32

    UUID=b194e583-21c3-4109-a160-3d2a9876a30b

    DEVICE=ens32

    ONBOOT=yes

    IPADDR=192.168.200.111

    PREFIX=24

    GATEWAY=192.168.200.112 //网关需要指向DHCP中继服务器同网络的IP地址

    DNS1=202.106.0.20

    IPV6_PRIVACY=no

    [root@localhost ~]# ifconfig ens32 //VMnet8模式

    ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

    inet 192.168.200.111 netmask 255.255.255.0 broadcast 192.168.200.255

    inet6 fe80::20c:29ff:feb6f933c prefixlen 64 scopeid 0x20<link>

    ether 00f0c:29:b6f93f3c txqueuelen 1000 (Ethernet)

    RX packets 12335 bytes 5849822 (5.5 MiB)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 9984 bytes 1934256 (1.8 MiB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    [root@localhost ~]# vim /etc/dhcp/dhcpd.conf

    option domain-name "crushlinux.com";

    option domain-name-servers 202.106.0.20, 8.8.8.8;

    default-lease-time 21600;
    max-lease-time 43200;

    subnet 192.168.200.0 netmask 255.255.255.0 {

    range 192.168.200.150 192.168.200.200;

    option routers 192.168.200.1; }

    subnet 192.168.100.0 netmask 255.255.255.0 {

    range 192.168.100.150 192.168.100.200;

    option routers 192.168.100.1;

    }

    [root@localhost ~]# systemctl restart dhcpd

    DHCP中继服务器调整:

    [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32

    TYPE=Ethernet

    PROXY_METHOD=none

    BROWSER_ONLY=no

    BOOTPROTO=static

    DEFROUTE=yes

    IPV4_FAILURE_FATAL=no

    IPV6INIT=no

    IPV6_AUTOCONF=no

    IPV6_DEFROUTE=no

    IPV6_FAILURE_FATAL=no

    IPV6_ADDR_GEN_MODE=stable-privacy

    NAME=ens32

    UUID=b194e583-21c3-4109-a160-3d2a9876a30b

    IPV6_PRIVACY=no

    DEVICE=ens32

    ONBOOT=yes

    IPADDR=192.168.200.112 //需作为DHCP服务器的网关地址

    NETMASK=255.255.255.0

    [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens34
    TYPE=Ethernet

    PROXY_METHOD=none

    BROWSER_ONLY=no

    BOOTPROTO=static

    DEFROUTE=yes

    IPV4_FAILURE_FATAL=no

    IPV6INIT=no

    IPV6_AUTOCONF=no

    IPV6_DEFROUTE=no

    IPV6_FAILURE_FATAL=no

    IPV6_ADDR_GEN_MODE=stable-privacy

    NAME=ens34

    IPV6_PRIVACY=no

    DEVICE=ens34

    ONBOOT=yes

    IPADDR=192.168.100.112

    NETMASK=255.255.255.0

    [root@localhost ~]# ip a | grep ens

    2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc

    pfifo_fast state UP group default qlen 1000

    inet 192.168.200.112/24 brd 192.168.200.255 scope global ens32

    3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc

    pfifo_fast state UP group default qlen 1000

    inet 192.168.100.112/24 brd 192.168.100.255 scope global ens34

    [root@localhost ~]# rpm -ivh /media/cdrom/Packages/dhcp-4.2.568.el7.centos.x86_64.rpm

    [root@localhost ~]# rpm -ql dhcp |grep dhcrelay

    /usr/lib/systemd/system/dhcrelay.service

    /usr/sbin/dhcrelay

    /usr/share/man/man8/dhcrelay.8.gz

    打开DHCP中继服务器路由转发功能
    [root@localhost ~]# vim /etc/sysctl.conf

    net.ipv4.ip_forward = 1

    [root@localhost ~]# sysctl -p

    开启DHCP中继服务

    [root@localhost ~]# dhcrelay 192.168.200.111

    Dropped all unnecessary capabilities.

    Internet Systems Consortium DHCP Relay Agent 4.2.5

    Copyright 2004-2013 Internet Systems Consortium.

    All rights reserved.

    For info, please visit https://www.isc.org/software/dhcp/

    Listening on LPF/virbr0/52f54f00:b3:df:0e

    Sending on LPF/virbr0/52f54f00:b3:df:0e

    Listening on LPF/ens34/00f0c:29f8c:f2:e3

    Sending on LPF/ens34/00f0c:29f8c:f2:e3

    Listening on LPF/ens32/00f0c:29f8c:f2:d9

    Sending on LPF/ens32/00f0c:29f8c:f2:d9

    Sending on Socket/fallback

    [root@localhost ~]# netstat -anpu | grep dhcrelay

    udp 0 0 0.0.0.0:67 0.0.0.0:* 2893/dhcrelay

    PS:学习方式

    1、服务的使用场景

    2、服务的组件和工作原理

    3、服务的协议和端口

    4、服务的安装,配置修改(主配置文件),常见配置项

    5、验证方式

  • 相关阅读:
    iOS开发objectc优势与补足
    UITableView详解
    ipad 、iphone开发-通过定时器显示进度条
    [Yii Framework][SHARE] The directory structure of the Yii project site
    [Yii Framework] Yii中事件和行为的区别和应用
    [Ubuntu] 创建桌面启动图标
    [Ubuntu] Access denied for user ‘debiansysmaint’@'localhost’ (using password: YES)
    [Yii Framework] Chive: which is developed base on Yii, and its aims to be an alternative to phpMyAdmin!
    [javascript] 数组扩展操作
    [php] Generate PhpDoc with NetBeans
  • 原文地址:https://www.cnblogs.com/2567xl/p/11363877.html
Copyright © 2011-2022 走看看