DHCP实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DHCP实现相关的知识,希望对你有一定的参考价值。

DHCP实现

服务流程:

  • 0.关闭selinux,iptables,给自己当dhcp服务器的主机一个静态的ip地址。
  • 1.安装包。yum安装,源码安装,二进制安装
  • 2.配置文件
  • 3.准备数据
  • 4.启动服务
  • 5.测试
    Linux DHCP协议的实现程序:dhcp, dnsmasq(dhcp,dns)
    dhcp软件包是专门实现dhcp服务的,dnsmasq也可以实现dhcp服务,不过不是专门来实现dhcp的,还可以当dns用。

dhcp服务器要想提供服务首先要有 一个静态的ip地址,这样才能给别的主机分配ip地址
本次实验是centos7.4安装

~]# yum info dhcp    查看是否有dhcp服务的包 
~]# yum install dhcp   安装dhcp服务
~]# rpm -qf dhcp     查看软件包包括的程序列表

    /etc/NetworkManager
    /etc/NetworkManager/dispatcher.d
    /etc/NetworkManager/dispatcher.d/12-dhcpd
    /etc/dhcp/dhcpd.conf    配置文件
    /etc/dhcp/dhcpd6.conf
    /etc/dhcp/scripts
    /etc/dhcp/scripts/README.scripts
    /etc/openldap/schema/dhcp.schema
    /etc/sysconfig/dhcpd
    /usr/bin/omshell
    /usr/lib/systemd/system/dhcpd.service    提供dhcp服务
    /usr/lib/systemd/system/dhcpd6.service
    /usr/lib/systemd/system/dhcrelay.service  提供中继服务,和dhcp不可同时开启
    /usr/sbin/dhcpd     主程序(启动包括了ipv4和ipv6)
    /usr/sbin/dhcrelay    中继程序
    /usr/share/doc/dhcp-4.2.5
    /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example 配置文件参考的范例文件
    /usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
    /usr/share/doc/dhcp-4.2.5/ldap
    /usr/share/doc/dhcp-4.2.5/ldap/README.ldap
    /usr/share/doc/dhcp-4.2.5/ldap/dhcp.schema
    /usr/share/doc/dhcp-4.2.5/ldap/dhcpd-conf-to-ldap
    /usr/share/man/man1/omshell.1.gz
    /usr/share/man/man5/dhcpd.conf.5.gz
    /usr/share/man/man5/dhcpd.leases.5.gz
    /usr/share/man/man8/dhcpd.8.gz
    /usr/share/man/man8/dhcrelay.8.gz
    /usr/share/systemtap/tapset/dhcpd.stp
    /var/lib/dhcpd
    /var/lib/dhcpd/dhcpd.leases     分配地址的地址数据库,存放地址分配情况
    /var/lib/dhcpd/dhcpd6.leases
~]# vim /etc/dhcp/dhcpd.conf    编辑配置文件

    # DHCP Server Configuration file.
    # see /usr/share/doc/dhcp*/dhcpd.conf.example 配置文件为空,需要参考范例文件
    # see dhcpd.conf(5) man page

~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf    复制范例文件,并覆盖配置文件

~]# vim /etc/dhcp/dhcpd.conf    编辑配置文件

    option domain-name "magedu.com"; 域名后缀,访问某主机的时候会自动补上这个后缀
    option domain-name-servers 114.114.114.114,8.8.8.8; DNS服务器地址
    default-lease-time 86400;    默认租期,秒为单位,可以设长点。
    max-lease-time 864000;        特殊的租期 
    subnet 192.168.27.0 netmask 255.255.255.0 {        ip地址的分配
    range 192.168.27.50  192.168.27.200;            ip地址分配范围
    option routers  192.168.27.1;                   网关地址
    }

    host passacaglia {                  绑定固定的ip地址
      hardware ethernet 0:0:c0:5d:bd:95;  客户端mac地址
      fixed-address 192.168.27.100;   绑定固定的ip
      server-name "toccata.fugue.com";
    }
~]# systemctl start dhcpd    启动dhcp服务

~]# cat /var/lib/dhcpd/dhcpd.leases 开启另一台机器,看是否可以获取到地址

    lease 192.168.27.129 {         看到获取到的dhcp分配的地址
      starts 4 2018/03/15 09:12:38;
      ends 5 2018/03/16 09:12:38;
      cltt 4 2018/03/15 09:12:38;
      binding state active;
      next binding state free;
      rewind binding state free;
      hardware ethernet 00:0c:29:f2:8d:8f;
      client-hostname "centos6";
     }

~]# cat /var/lib/dhclient/dhclient-eth0.leases  在客户端查看ip地址获取情况
    lease {
      interface "eth0";
      fixed-address 192.168.27.129;
      option subnet-mask 255.255.255.0;
      option routers 192.168.27.1;
      option dhcp-lease-time 86400;
      option dhcp-message-type 5;
      option domain-name-servers 114.114.114.114,8.8.8.8;  dns服务地址
      option dhcp-server-identifier 192.168.27.128;  dhcp服务器地址
      option domain-name "magedu.com";
      renew 4 2018/03/15 19:14:26;
      rebind 5 2018/03/16 06:12:27;
      expire 5 2018/03/16 09:12:27;
    }

成功!
让客户端重新获取ip,需要在客户端做一下操作

~]# rm -rf /var/lib/dhclient/*   删除客户端数据库下的内容
~]# killall  dhclient   杀掉客户端运行程序
~]# dhclient -d  前台显示重新获取ip

这个实验的成功需要两步:
1.关掉虚拟机的dhcp服务
技术分享图片
2.关掉桥接模式

技术分享图片

以上是关于DHCP实现的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 - Golang 实现简单的 Web 服务器

ASP.net MVC 代码片段问题中的 Jqgrid 实现

DHCP的原理和实现过程

跨网段实现DHCP动态IP的自动分配(DHCP中继)

代码片段:Shell脚本实现重复执行和多进程

如何实现具有不同片段/布局的 ViewPager