zoukankan      html  css  js  c++  java
  • DHCP 服务配置

    什么是DHCP

    DHCP(Dynamic Host Configuration Protocol)动态主机配置协议
    -->是由Internet工作任务小组设计开发的,专用于对TCP/IP网络中的计算机自定分配TCP/IP参数的协议。

    使用DHCP的好处:

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

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

    1. 网卡的IP地址
    2. 子网掩码
    3. 对应的网络地址
    4. 广播地址
    5. 默认网关地址
    6. DNS服务器地址等

    DHCP的分配方式

    1. 自动分配: 分配到一个IP地址后永久使用
    2. 手动分配:由DHCP服务器管理员专门指定IP地址
    3. 动态分配:使用完后释放该IP,供其它客户机使用

    DHCP租约过程:

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

    1. 客户机请求IP(客户机发DHCP Discover 广播包)
    2. 服务器相应(服务器发DHCP Offer 广播包)
    3. 客户机选择IP(客户机发DHCP Request 广播包)
    4. 服务器确定租约(服务器发DHCP ACK 广播包)

    一、客户机请求IP(客户机发DHCP Discover广播包)

    • 当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
    • 此时DHCP客户机一广播的方式(因为DHCP服务器的IP地址对客户机来说是未知的)发送DHCP Discover发现信息来寻找DHCP服务器。
    • 广播信息中包含DHCP客户机的MAC地址和计算机名,以便DHCP服务器确定是哪个客户机发送的请求。
    Client->Server (DHCP Discover)
    源IP地址:0.0.0.0
    目标地址:255.255.255.255
    

    二、服务器响应(服务器发DHCP Offer广播包)

    • 当DHCP服务器接收到来自客户机请求IP地址的信息时,它们就在自己的IP地址池中查找是否有合法的IP地址提供给客户机,如果有,DHCP服务器就将此IP地址作上标记,加入到DHCP Offer的消息中,然后DHCP服务器就广播一则包含下列信息的DHCP Offer消息
    • DHCP客户机的MAC地址,DHCP服务器提供的合法IP地址,子网掩码,默认网关,租约的期限,DHCP服务器的IP地址。
    Client<-Server (DHCP Offer)
    源IP地址:192.168.10.10
    目标地址:255.255.255.255
    提供地址:192.168.10.101
    

    三、客户机选择IP(客户机发DHCP Request广播包)

    • DHCP客户机从接收的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机。
    • 当客户机从第一个DHCP服务器接收DHCP Offer信息并提取了IP地址后,客户机将DHCP Request消息广播到所有的DHCP服务器,表明它接收提供的内容。
    • DHCP Request消息包括为客户机提供IP配置的服务器的服务标识符(服务器IP地址),DHCP服务器查看服务器标识符字段,以确定提供的IP地址是否被接受,如果DHCP Offer被拒绝,则DHCP服务器取消并保留IP地址以提供给下一个IP租约的请求。
    Client->Server (DHCP Request)
    选择DHCP服务器(192.168.10.10)
    源IP地址:0.0.0.0
    目标地址:255.255.255.255
    租约期限: 八天
    

    四、服务器确定租约(服务器发DHCP ACK广播包)

    • DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息。
    • 当客户机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。
    Client<-Server (DHCP ACK)
    源IP地址:192.168.10.10
    目标地址:255.255.255.255
    

    重新登陆

    • DHCP客户机每次重新登陆网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息。
    • 当DHCP服务器接收到这一信息后,它会尝试让DHCPk客户机继续使用原来的IP地址,并回答一个DHCP ACK确认信息。
    Client->Server (DHCP Request请求包)
    Client<-Server (DHCP ACK确认信息)
    
    • 如果次IP地址已无法在分配给原来的DHCP客户机使用(如IP地址已经分配给其他的DHCP客户机使用),DHCP服务器给DHCP客户机回答一个DHCP Nack否认信息。
    • 当原来的DHCP客户机收到此DHCP Nack否认信息后,它就必须重新发送DHCP Discover发现信息来请求新的IP地址。
    Client->Server (DHCP Request请求包)
    Client<-Server (DHCP Nack否认信息)
    Client->Server (DHCP Discover重发)
    

    更新租约

    • 当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约。
    • 客户机直接向提供租约的服务器发送DHCP Request要求更新现有的地址租约。若此时
    • DHCP服务器无法正常回复DHCP客户机的请求,客户机的此IP地址可以继续使用到最大约时间的87.5%。

    DHCP中继的配置

    Cisco:
    ip helper-address DHCPsrv-IPAddress(服务器的IP地址)
    #在三层交换机上配置DHCP中继转发,是在不包含DHCP服务器的VLAN上配置实现的
    SW-3l(config)#interface vlan 2
    SW-3l(config-if)#ip address 192.168.2.1 .255.255.255.0
    SW-3l(config-if)#ip helper-address 192.168.100.100
    SW-3l(config-if)#no shutdown
    
    Linux:
    • 服务器的网关地址是中继的IP,
    • 中继的网关地址是服务器的IP.

    安装DHCP服务器

    • DHCP服务器软件
      • 光盘中的dhcp-4.11-38.P1.el6.centos.x86_64.rpm
      • dhcp软件包的主要文件
        • 主配置文件:/etc/dhcp/dhcpd.conf
        • 执行程序:/usr/sbin/dhcpd、/usr/sbin/dhcrelay
        • 服务脚本:/etc/init.d/dhcpd、/etc/init.d/dhcrelay
        • 执行参数配置:/etc/sysconfig/dhcpd
        • DHCP/中继配置:/etc/sysconfig/dhcrelay
    • 主配置文件
      1. 保证网络连通性:
        • 关闭防火墙:临时关闭防火墙 /etc/init.d/iptables stop
        • 永久关闭防火墙 chkconfig iptables off
      2. 关闭SELINUX安全机制:
        • 临时关闭: setenforce 0
        • 永久关闭:vi /etc/selinux/conf 更改
          • 第七行将enforcing改为disabled
          • 重启生效
      3. /etc/sysctl.conf IP地址转发
        • -->net.ipv4.ip_forward = 1
      4. 测试网络是否畅通 ping、nslookup nmap、netstat traceroute.
      5. 安装软件包 rpm、yum(本地源,网络源)、源代码编译安装。
        1. 根据需求对服务相关文档进行备份配置
        2. 通过相应检测工具,对配置好的文档在服务启动前进行检查以便在启动时保证配置无误。
          • 启动相关服务
          • 压力测试
          • 编写针对本服务的预案应急解决方案。

    查看租约文件

    可以通过查看租约文件dhcpd.leases来了解服务的IP地址分配情况。该租约文件中记录了分配出去的每个IP地址信息(租约记录),包括IP地址,客户端的MAC地址,租用的起始时间和结束时间等。

    less /var/lib/dhcpd/dhcpd.leases
    

    全局设置,作用于整个DHCP服务器

    ddns-update-style none; //设置dhcp互动更新模式
    ignore client-updates; //忽略客户端更新
    option routers 192.168.12.1; //设置客户端默认网关
    option subnet-mask 255.255.255.0;   //设置客户端子网掩码
    option nis-domain "ixdba.net "; //设置NIS域
    option domain-name " ixdba.net ";   //设置DNS域
    option domain-name-servers 192.168.12.1;//设置DNS服务器地址
    option time-offset -18000; # Eastern Standard Time //设置时间偏差
    
    range dynamic-bootp 192.168.12.128 192.168.12.254; //设置地址池
    default-lease-time 21600; //设置默认租期,单位为秒
    max-lease-time 43200; //设置客户端最长租期,单位为秒
    
    ·Subnet网段声明,作用于整个子网段
    range 参数:设置用于分配IP地址池
    option subnet-mask 参数:设置客户机的子网掩码
    option routers 参数:设置客户机的默认网关地址
    ·host主机声明,作用于单个主机
    hardware ethernet 参数:指定对应主机的MAC地址
    fixed-address 参数:指定为该主机保留的IP地址
    
    host ns { //以下设定分配静态IP地址,不多做解释。
    next-server marvin.RedHat.com;
    hardware ethernet 12:34:56:78:AB:CD; 
    fixed-address 207.175.42.254;
    }
    
    ddns-update-style interim;
    ...
    subnet 192.168.0.0 netmask 255.255.255.0{ (分配一个网段)
    option routers 192.168.0.1;
    ...
    default-lease-time 21600;
    ...
    host ns{
    ...
    fix-address 207.175.42.254;
    }
    }
    
    subnet 192.168.4.0 netmask 255.255.255.0{
    range 192.168.4.128 192.168.4.254;
    option subnet-mask 255.255.255.0;
    option routers 192.168.4.1;
    }
    
    host prtsvr {
    hardware ethernet 00:c0:c3:22:46:81;
    fixed-address 192.168.4.100;
    }
    

    启动DHCP服务

    /etc/init.d/dhcpd start
    netstat -anpu | grep ":67"  #查看DHCP端口开启状态
    #如果dhcpd服务启动失败,可以检查日志文件/var/log/message末尾的错误提示信息,并根据提示进行排错。
    
    #其他说明:
    range 192.168.12.2 192.168.12.125; #可以限定分配的IP地址范围。
    #如果想给某IP分配固定的IP地址,修改host 那一项,把网卡的Mac地址和IP进行绑定,就是最后那一段,改为相应的就可以了。
    #在subnet里定义的网段要与你的网卡IP所处网段一致,也就是说比如你的网卡是192.168.0.x,而dhcp服务却为10.1.1.0的subnet提供服务是不行的,是启动不了的。
    

    使用DHCP客户端

    两种方式:

    1. 修改网卡的配置文件(ifcfg-eth0)

    BOOTPROTO=dhcp
    ifdown eth0 ; ifup eth0
    

    2. dhclient命令

    dhclient -r eth0 #释放已获取IP
    dhclient -d eth0 #重新获取IP
    
    #需要通过dhclient命令释放获取的IP租约时,可以结合"-r"选项。例如"dhclient -r eth0"#将会释放之前为网卡eth0获取的IP租约.
    dmesg | grep -in eth #查看全部硬件中关于eth的参数
    
    魏美龍|DevOps Engineer|will_wei_devops@163.com
  • 相关阅读:
    C#中double转int时需要注意的地方
    OracleHelper类
    POJ2570, ZOJ1967
    ZOJ3088
    POJ3259(spfa判负环)
    POJ3268
    ZOJ1092 POJ2240
    ZOJ1298 POJ1135
    SRM587 div2
    POJ1679判断最小生成树是否唯一
  • 原文地址:https://www.cnblogs.com/meilong/p/6676122.html
Copyright © 2011-2022 走看看