Linux Dhcp服务

DHCP服务的作用及好处相信大家都应该知道,这里就不再阐述了。在rhel 5实现DHCP需要安装dhcp-3.0.5-7.el5.i386.rpm,其配置文件是/etc/dhcpd.conf,租约数据库文件是/var /lib/dhcpd/dhcpd.leases。

在第一次打开该文件时,只告知一个例子文件的路径(如下图),可将该例子覆盖该配置文件再进行修改。

 

dhcpd.conf文件有二大部分,分别是全局配置和局部配置(如下图)。当全局配置与局部配置发生冲突时,局部配置优先级更高。

 

●常用参数:
●ddns-update-style  (none|interim|ad-hoc):定义所支持的DNS动态更新类型,该参数必选且必须放在第一行且只能在●全局配置中使用。
●none:不支持。
●interim:DNS互动更新模式。
●ad-hoc:特殊DNS更新模式。
●ignore-client-updates:忽略客户端更新,该参数只能在全局配配置中使用。
●default-lease-time:默认IP租约时间,单位秒,该参数可以在全局配置、局部配置均可使用。
●mas-lesase-time:客户端IP租约时间的最大值,单位秒,该参数可以在全局配置、局部配置均可使用。
●常用声明:
●subnet 网络号 netmask 子网掩码 {…..}:定义作用域。
●range 起始IP 结束IP:动态IP地址范围。
●常用选项:
●option routes IP地址:默认网关,该选项可以在全局配置、局部配置均可使用。
●option subnet-mask 子网掩码:默认子网掩码,该选项可以在全局配置、局部配置均可使用。
●option domain-name-servers:DNS服务器地址,该选项可以在全局配置、局部配置均可使用。
●option domain-name:DNS后缀,该选项可以在全局配置、局部配置均可使用。
●option time-offset:为客户端指定格林威治时间领衔时间,单位秒,该选项可以在全局配置、局部配置均可使用。
●下面我们来看一个配置实例,实例中的网络拓扑如下图

 

ddns-update-style interim;
ignore client-updates;
option domain-name“demo.zqin”;

subnet 192.168.159.0 netmask 255.255.255.0 {

        option routers     192.168.159.18;
option subnet-mask255.255.255.0;
option domain-name-servers192.168.159.1;
option domain-name“example.zqin”;
option time-offset-18000;

range dynamic-bootp 192.168.159.20 192.168.100.250;
default-lease-time 21600;
max-lease-time 43200;
}

上述配置实际上只需在rhel中所提供的例子文件中改几处即可,在编写配置文件时需注意以下几个问题:

●每行必须以分号结尾(如不用分号结尾,在启动dhcpd时是不会报错的,只能通过查看日志文件/var/log/message得知)。
●局部配置必须包含在一对中括号之间。
●上面的例子中全局部分定义了参数option domain-name,在局部也定义了,这个在实际工作是没有必要的,这里只是为了说明局部参数的优先级高于全局部分。
如希望实现保留功能(在保留中也可使用参数,当然保留中参数的优先级最高),首先需要知道指定客户端网卡的MAC地址,然后在配置文件中加入如下内容即可。

ddns-update-style interim;
ignore client-updates;
option domain-name“demo.zqin”;

subnet 192.168.159.0 netmask 255.255.255.0 {

        option routers     192.168.159.18;
option subnet-mask255.255.255.0;
option domain-name-servers192.168.159.1;
option domain-name“example.zqin”;
option time-offset-18000;

range dynamic-bootp 192.168.159.20 192.168.100.250;
default-lease-time 21600;
max-lease-time 43200;

host lyon {
hardware Ethernet 00:50:56:c0:00:01;

在整个DHCP客户端与服务器通讯的过程全部使用的是广播的方式,这样会带来一个问题,如果在DHCP客户端与服务器之间必须通过路由器时是无法完成IP地址的申请过程的,这里就需要使用DHCP中继代理了。DHCP中继代理位于DHCP客户端一边的网络中,帮助DHCP客户端与DHCP服务器进行通讯。不过在实际工作中,本人觉得直接在路由器或三层交换机上配置DHCP中继代理更合理。不过我们还是来看下通过rhel如何实现中继代理功能,下面的配置实例中,网络拓扑如下图:

 

●将dhcp的网关指向192.168.159.18

●编辑/etc/syconfig/dhcpd文件

DHCPDARGS=eth0

●在dhcp上建立超级作用域,并为192.168.100.0/24建立作用域

ddns-update-style interim;
ignore client-updates;

shared-network test {
#建立超级作用域
        option domain-name"example.zqin";
   option domain-name-servers192.168.159.1;
        subnet 192.168.100.0 netmask 255.255.255.0 {

        option routers     192.168.100.18;
option subnet-mask255.255.255.0;

option time-offset-18000;

range dynamic-bootp 192.168.100.20 192.168.100.200;
default-lease-time 21600;
max-lease-time 43200;
}

subnet 192.168.159.0 netmask 255.255.255.0 {
option routers192.168.159.18;
option subnet-mask255.255.255.0;

option time-offset-18000;

range dynamic-bootp 192.168.159.20 192.168.159.200;
default-lease-time 21600;
max-lease-time 43200;
}
}

●在中继代理上安装dhcp、dhcp-devel包。

●在中继代理上运行,并将其加入/etc/rc.local中。

echo “1” > /proc/sys/net/ipv4/ip_forward

●编辑/etc/sysconfig/dhcrelay文件

INTERFACES="eth1"
DHCPSERVERS="192.168.159.19"

●启用中继代理

service dhcrelay restart
chkconfig dhcrelay on

第二部分

Linux现在主要的应用在服务器上。而作为服务器,Web,dhcp,和dns又是互联网上最主要的服务,这一讲,我和朋友们讨论dhcp的应用。
  
  (注意:配置网络服务器,如果你在现有的网络环境中选择安装或者使用VM的桥接网络的时候,有可能会对你当前的网络环境造成影响,请在配置之前咨询你的网络管理人员。)
  
  首先介绍下什么是dhcp协议
  
   dhcp(dynamic host configuration protocol)就是动态主机分配协议,它用于给某个网络段上的主机进行动态分配 IP地址和相关网络环境的配置工作,比如我们使用adsl拨号就是用的dhcp协议。
  
  一、dhcp的常用的概念。
  
  1、 作用域:
  
  作用域是一个网络中可分配IP地址的连续。
  
  2、超级作用域
  
  超级作用域是一组作用域的集合。是由一个物理子网中包含的多个IP子网组成的。我们可以理解为作用域是一个用户,而超级作用域就是这个用户的组。
  
  3、排除范围
  
  排除范围是用来定义某IP或者某一组的IP不用于分配给dhcp客户机
  
  4、地址池
  
  定义了dhcp作用域和排除范围后,剩下的可用地址构成了一个地址池。池中的地址可以分配给用户使用
  
  5、租约
  
  就是dhcp服务器指定的时间长度,在此长度内客户机可以使用分配给它的地址,如果租约到期,客户机必须更新ip租约。
  
  6、保留地址
  
  用户可以使用保留地址,保留地址提供了一个将动态地址和其MAC地址相关联的手段。用于保证此网卡长期使用某个IP地址。
  
  7.选项类型。
  
  这是DCHP为工作站提供的其它参数,比如网关的 IP地址,dns服务器等。
  
  这里仅仅介绍了dhcp最基础的一些概念,因为在此主要介绍linux下是如何配置这些服务的。所以如果朋友们想了解更多有关dhcp或者后面介绍的几个服务的知识(linux下和win下的dhcp的概念是一样的)可以参阅网络或者书籍。
  
  二、Dhcp的设置
  
  首先安装dhcp服务。如果你在首次安装时没有选择dhcp组件,你可以在你发行版的安装光盘和rpm的添加删除包中找到相关软件,进行安装,或者可以在第二张光盘的/RedHat/RPMS/下找到dhcp-3.0p11-23.i386.rpm的二进制 rpm发行包进行安装,安装后效果相同。

按此在新窗口打开图片
然后更新的时候按提示插入安装盘

按此在新窗口打开图片
再给提示朋友们一次,在linux中,所有的程序配置都由文本文件进行控制。所以我们要设置dhcp服务器,就可以通过修改配置文件来达到目的。
  
  所以我们先看下它的典型的配置文件
  
  dhcp的配置文件是/etc/dhcpd.conf,不过默认的情况下这个文件不存在,你需要使用它的模板建一个配置文件。模板的位置在/usr/share/doc/dhcp-3.0p11/dhcpd.conf.sample
  
  如果你找不到你的配置文件可以使用我们学过的查找命令,locate filename进行寻找,如图:

按此在新窗口打开图片
查找到此文件后,我们先来看下模板的配置情况。
  
  为了方便,我把这个配置文件用cat 命令给导入到了一个文本文件中,然后弄到 win下来了。模板配置文件内容如下:
  
  和所有的配置文件类似的,它用#代表注释。现在看看每行都说了什么
   ddns-update-style interim;
  #配置使用过渡性 DHCP-DNS互动更新模式。
   ignore client-updates;
  #忽略客户端更新
   subnet 192.168.0.0 netmask 255.255.255.0 {
  #设置子网声明
   # --- default gateway
  option routers 192.168.0.1;
  #设置缺省网关为 192.168.0.1
  
  option subnet-mask 255.255.255.0;
  #设置客户端的子网掩码
  option nis-domain "domain.org";
  #为客户设置NIS域
   option domain-name "domain.org";
  #为客户设置域名
   option domain-name-servers 192.168.1.1;
  #为客户设置域名服务器
   option time-offset -18000; # Eastern Standard Time
  #设置偏移时间。
   # option ntp-servers 192.168.1.1;
  设置NTP服务器。
   # option netbios-name-servers 192.168.1.1;
  设置wins服务器
   # --- Selects point-to-point node (default is hybrid). Don't change this unless
  # -- you understand Netbios very well
   # option netbios-node-type 2;
  #设置netbios节点类型 我不清楚这个netbios节点是什么东西。*_*!,不懂最好不设。嘿嘿。
  
   range dynamic-bootp 192.168.0.128 192.168.0.255;
  #设置动态的地址池。
   default-lease-time 21600;
  #设置缺省的地址租期。
  
   max-lease-time 43200;
  #设置客户端最长的地址租期
  
   # we want the nameserver to appear at a fixed address
  //设置主机声明
  host ns {
  next-server marvin.redhat.com;
  //设置由于定义服务器从引导文件中装入的主机名,用于无盘站。
  hardware ethernet 12:34:56:78:AB:CD;
  指定dhcp客户的mac地址
  fixed-address 207.175.42.254;
  给指定的mac地址分配ip
  }
  }
  
  看完了这个配置文件,朋友们如果有一定的英文基础。是不是觉得其实很好懂,其实不要被linux的配置文件吓倒,配置linux远比windows简单和容易理解,这些配置文件给了你一个模板,你照模板进行填写就可以,类似于给了你一张计划书,上面有你要做的事情,你可以选择做或者不做,具体情况根据你的环境填填空就可以了。不象windows会给你一个向导,至于向导干了什么你根本不知道。出了问题,你也不知道改找谁。但是linux则不同,出了问题,你把你的配置单cat出来,然后贴到网上,讲出你的要求,别人很容易知道你到底干了些什么。
  
  后面我们举个例子来做这个配置。
  
  先看下一个图,非常常见的网络环境。(俺改的以前的一个设计方案,因为讲这里是讲dhcp,就不把vlan考虑进来了,朋友们要是有兴趣,可以在社区http://www.easysafe.net/发帖专门讲这方面的问题。)

按此在新窗口打开图片
我们有一个10.0.0.0的网络,叫做easysafe.net
  
  有一个DHCP,有一套企业应用系统,
  
   dns的服务器地址10.0.0.12
  
  系统的数据库服务器地址为10.0.0.10
  
  应用服务器地址为 10.0.0.11
  
  有一个网管监控区,放的网管工作站,其IP分别是,10.0.0.30,机器名字叫webmaster
  
  然后有个防火墙做NAT,内部IP是10.0.0.1,外部IP是202.117.0.43(随便编个.HOHO)
  
  你是这个企业的网管,由于你的机器比较多了,工作人员经常找你配IP地址。所以你让老总给你了台淘汰的机器,上面装上linux,配成DHCP服务器,来给他们分配IP地址。
  
  那么,现在我们要怎么做呢。
  
  首先,我们先要考虑一下这个环境。
   10.0.0.10
  10.0.0.11,
  10.0.0.1
  
  为避免网络问题,以上地址应该是保留的静态地址,也就是说你应该有一个排除范围。这个范围可大可小,在现在的情况下,为了避免以后的问题,可以把排除范围设置大点。比如我们设置为从 10.0.0.1~10.0.0.20,为系统使用的。
  
  10.0.0.30是你自己用的,不过你不想让别人用这个ip,也不想每次重新装了系统后重新修改,因此,你决定把你的IP给绑定到MAC上。
  
  其他的人可以随意使用 10.0.0.21~10.0.0.254之间的一个地址。
  
  好了,现在调出我们的DHCP配置单模板,看如何配置。
  
  ddns-update-style interim;
  ignore client-updates;
  
   #subnet 192.168.1.0 netmask 255.255.255.0 {
  #声明变了,我们的总的网络是 10.0.0.0/24
  subnet 10.0.0.0 netmask 255.255.255.0{
  #朋友在修改配置的时候,原有配置我们可以使用#注释掉。
  # --- default gateway
   #option routers 192.168.0.1;
  #路由变了,是10.0.0.1
   option routers 10.0.0.1;
  option subnet-mask 255.255.255.0;
   option broadcast-address 10.0.0.255;
  #添加一个广播地址
  
  #这句不用改,因为我们的子网还是个三类地址的子网
  #option nis-domain "domain.org";
  #nis不用
   #option nis-domain "easysafe.net ";
   #option domain-name "domain.org";
   option domain-name "easysafe.net";
   #option domain-name-servers 192.168.1.1;
   option domain-name-server 10.0.0.12
   option time-offset -18000; # Eastern Standard Time
  #这个时间偏移,根据本地情况来设置。
  # option ntp-servers 192.168.1.1;
   # option netbios-name-servers 192.168.1.1;
   # --- Selects point-to-point node (default is hybrid). Don't change this unless
  # -- you understand Netbios very well
   # option netbios-node-type 2;
  #上面的可以不修改,因为我这里没有ntp和wins服务器
   #range dynamic-bootp 192.168.0.128 192.168.0.255;
  #这里开始设置你的动态ip地址池了
  #range dynamic-bootp 10.0.0.21 10.0.0.254
   default-lease-time 21600;
  max-lease-time 43200;
  #缺省的更新ip时间和最大更新时间不修改默认的就可以。
  # we want the nameserver to appear at a fixed address
  #�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D
  #以上为模板中有的配置,现在加一些模板没有的配置
   #�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D�D
  
   subnet 10.0.0.0.0 netmask 255.255.255.0{
  
   range 10.0.0.21 10.0.0.254;
  }
  #这里要注意了,在这里我们配置了我们的地址池!!从 10.0.0.21到10.0.0.254
  
  #host ns {
   # next-server marvin.redhat.com;
   # hardware ethernet 12:34:56:78:AB:CD;
   # fixed-address 207.175.42.254;
  #}
  #上面的是为特定用户来设置地址的。咱们来看看网管的机器该怎么配置,为了你以后
  #配置的方便,这里加个group声明一下,以便如果哪个人看上了某个地址,你把他固、
  #定上就可以。
  group {
  host webmaster{
   option host-name “webmaster.easysafe.net”;
  #你的主机名。可以就设置为webmaster
  hardware ethernet 00:cd:a9:70:e3:f3;
  #你的MAC地址,在linux下直接用ifconfig就可以看到。如果你要看win
  #的mac地址可以用ipconfig当然这个MAC地址是我编的,呵呵。
   fixed-address 10.0.0.30
  
  }
  }
  }
  
  朋友们可以看到,在这里我们改的配置文件的地方并不是很多:)总共加了也没有10条语句,但是dhcp的配置文件已经做好了。
  
  然后我们把这个文件复制回etc目录下存储为dhcpd.conf,然后你可以用vi看一下

按此在新窗口打开图片
不过别高兴的太早,linux怎么知道这是你要启动dhcp服务,并且使用这个配置文件呢?
  
  现在就看我们后面要完成哪些工作了。
  
  首先,要运行dhcp,我们需要一个客户租约数据库文件这个文件在/var/lib/dhcpd.leases,默认的这个库是空的,不需要配置,不过管理员可以通过这个来察看dhcp的运行情况。‘
  
  一般来说,这个文件的格式是
  
   lease address {statement}
  
  根据以上要求创建/var/lib/dhcp/dhcpd.lease文件。
  
  完成了以上的配置,后面就是要启动dhcp了,和以前说的smb服务一样,也是通过service命令来执行
   service dhcpd start

按此在新窗口打开图片
启动服务失败,系统提示第10和第27行出错。
  
  原来一个是把domain-name-servers输错成了domain- name-server
  
  另一个则是添加了两个range
  
  费了半天力,到底把dhcp启动起来了。郁闷,又改了好几遍。

按此在新窗口打开图片
然后可以用pstree来察看此服务是否启动
  
  pstree |grep dhcpd
  如图所示,服务有了

按此在新窗口打开图片
如果希望以后每次服务器启动都把dhcp启动的话可以用ntsysV来选择你的dhcp服务器。
  
  如图:

按此在新窗口打开图片
还剩下一点小问题,就是客户机的配置。
  
  客户机win下的不多说了如图:默认就是这样的。

按此在新窗口打开图片
在linux下面,你可以手动配置你的dhcp。
  
  察看你的网络配置文件,如果你没有设置为自动启动联网,则要修改你的网络配置文件。
  vi /etc/sysconfig/network
  添加
   NETWORKING=yes
  (让引导的时候启动联网)
  或者使用
  
   @echo “NETWORKING=yes”>/etc/sysconfig/network
  然后再修改你的网卡配置文件
  
  /etc/sysconfig/network-scriptes/ifcfg-eth0 文件
  应该包含这几行
   DEVICE=eth0
  BOOTPROTO=dhcp
  ONBOOT=yes

你可能感兴趣的:(linux,linux,职场,休闲,Dhcp服务)