免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1757 | 回复: 0
打印 上一主题 下一主题

DHCP在RedHat Linux下的配置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-23 11:17 |只看该作者 |倒序浏览

                DHCP在RedHat Linux下的配置
rpm -qa|grep dhcp
G:检查是否安装了DHCP
mount /mnt/cdrom
G:如果未安装DHCP可以用此命令挂接光驱,以便于从光盘安装。
cd /mnt/cdrom/RedHat/RPMS
G:DHCP的rpm包存放于RdeHat Linux第二张安装光盘中。
rpm -ivh dhcp-3.0pl1-23.i386.rpm
G:安装DHCP所需的文件。
/usr/share/doc/dhcp-3.0pl1/dhcpd.conf.sample
G:默认情况下Red Hat Linux下DHCP配置文件不存在,但是有模板文件可以参考,
以上为此模板文件的位置。
以下我们查看此文件并注解:
ddns-update-style interim;
[ 配置使用过度性 DHCPDNS 互动更新模式。]
ignore client-updates;
[忽略客户端更新。]
subnet 192.168.0.0 netmask 255.255.255.0 { [设置子网声明。]
# --- default gateway
        option routers                        192.168.0.1; [为客户机设置默认网关。]
        option subnet-mask                255.255.255.0; [为客户机设置子网掩码。]
        option nis-domain                "domain.org"; [为客户端设置NIS域。]
        option domain-name                "domain.org"; [为客户端设置DNS域。]
        option domain-name-servers        192.168.1.1; [为客户端设置DNS服务器地址。]
      
        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;
        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;
[指定客户端的MAC地址。]
                fixed-address 207.175.42.254; [对于指定的MAC地址分配固定的IP地址。]
        }
}
以上是这篇模版文件的示例,其中我们知道#号所在行是一些注解和建议,
例如(# option ntp-servers  192.168.1.1;)也可以去除#号直接为客户端设置NTP协议。
通过此模板我们可以编辑自己的DHCP配置文件,之后此文件应当以:
/etc/dhcpd.conf
的位置存放,以下我们以一篇实际的dhcp.conf文件为例查看下配置:
ddns-update-style interim;
ignore client-updates;

default-lease-time 21600;
max-lease-time 43200;
option routers                        192.168.1.1;
option broadcast-address        192.168.1.255;
option subnet-mask                255.255.255.0;
option domain-name                "bite.edu";
option domain-name-servers        192.168.1.1,192.168.1.254;
option time-offset                -18000;
subnet 192.168.1.0 netmask 255.255.255.0 {
                range 192.168.1.10 192.168.1.100;
                range 192.168.1.150 192.168.1.200;
}
group {
        host 001 {
                option host-name"001.bite.edu";
                hardware ethernet 12:34:56:78:AB:CD;
                fixed-address 192.168.1.10;
        }
        host 002 {
                option host-name"002.bite.edu";
                hardware ethernet 12:34:56:78:AB:DE;
                fixed-address 192.168.1.11;
        }
}
其中,group代表为一组参数实现声明,从 group -> } 一段也可以等价于:
group {
        use-host-decl-names on;
        host 001 {
                hardware ethernet 12:34:56:78:AB:CD;
                fixed-address 192.168.1.10;
        }
        host 002 {
                hardware ethernet 12:34:56:78:AB:DE;
                fixed-address 192.168.1.11;
        }
}
注意,如果为 Windows 客户端提供DHCP服务,建议不要使用 use-host-decl-names on 和 option host-name 配置!
启动DHCP服务:
service dhcpd start
G:立即启动。
pstree|grep dhcpd
G:检验dhcpd是否被启动(返回结果应该为:|-dhcpd)。
利用ntsysv工具选择dhcpd可实现计算机启动时自动运行此服务。
#######################################################建立客户租约文件:
运行DHCP服务器还需要一个名为 dhcpd.leases 的文件,保持所有已经分发出去的 IP 地址。
在Redhat Linux 发行版本中,该文件位于 /var/lib/dhcp/ 目录中。
如果您通过 RPM 安装 ISC DHCP,那么该目录应该已经存在。d
hcpd.leases的文件格式为:
Leases address {statement}
一个典型的文件内容如下:
#######################################################################
lease 192.168.1.255 {             #DHCP服务器分配的IP地址#
  starts 1 2005/05/02 03:02:26;    # lease 开始租约时间#
  ends 1 2005/05/02 09:02:26;       # lease 结束租约时间#
  binding state active;  next binding state free;  hardware ethernet 00:00:e8:a0:25:86;  #客户机网卡MAC地址#
  uid "\001\000\000\350\240%\206";   #用来验证客户机的UID标示#
  client-hostname "cjh1";    #客户机名称#}
#######################################################################
注意lease 开始租约时间和lease 结束租约时间是格林威治标准时间(GMT),不是本地时间。
第一次运行DHCP服务器时dhcpd.leases是一个空文件,也不用手工建立。
如果不是通过 RPM 安装 ISC DHCP,或者 dhcpd 已经安装,那么您应该试着确定 dhcpd 将其 lease 文件写到何处,并确保该文件存在。也可以手工建立一个空文件:
#touch /var/lib/dhcp/dhcpd.leases
技巧:
(1)为指定的网络接口启动DHCP服务器
    如果系统中连接了不止一个网络接口,可是想让DHCP在其中一个之上启动,
可以配置 /etc/sysconfig/dhcpd ,将网络接口的名称添加到DHCPDARGS选项中,
最简捷的命令是:
        echo "DHCPDARGS=eth0" >> /etc/sysconfig/dhcpd
   
    如果用户有一个带有头两个网卡的防火墙主机,这种方法就会大派用场。
一个网卡(eth1)可以配置成DHCP客户来从互联网检索获取IP地址;
另一个网卡(eth0)可以被用作防火墙之后的内部网络的DHCP服务器。
仅指定连接到内部网络的网卡是系统更加安全,因为用户无法通过互联网来连接它的DHCP守护进程。
(2)Linux的客户端配置使用DHCP获取地址
    修改 /etc/sysconfig/network 文件,应该包含以下行:NETWORKING=yes
    这个文件中可能有更多信息,但是如果想在引导时启动互联网,NETWORKING变量必须被设置为yes。
    最简捷的操作是:
        ehco "NETWORKING=yes" > /etc/sysconfig/network
    修改/etc/sysconfig/network-scripts/ifcfg-eth0(具体为ifcfg-eth某某网卡接口)文件,
应该包含以下几行:
        DEVICE=eth0
        BOOTPROTO=dhcp
        ONBOOT=yes
    可以使用vi来编辑以上文件
(3)DHCP中继代理
    由于DHCP是广播型服务,所以跨越子网时无法使用,要使不同子网的DHCP服务通过,
方法有三种:
    每个子网一个DHCP服务器
    使用路由器的中继功能
    为每个子网设置一台计算机作为中继代理
    中继代理无需路由器支持,客户机发送请求到中继代理,中继代理代为联系另外子网中的DHCP服务器,
之后将结果返回客户机。
    除非使用INTERFACES指令在 /etc/sysconfig/dhcprelay 文件中指定了接口,中继代理能力在
所有接口上监听DHCP请求。
    启动DHCP中继代理的命令是:
        service dhcrelay start
附录:详细DHCP资料:DHCP是动态主机配置协议.这个协议用于向计算机自动提供IP地址,子网掩码和路由信息。
网络管理员通常会分配某个范围的IP地址来分发给局域网上的客户机。
当设备接入这个局域网时,它们会向 DHCP 服务器请求一个 IP 地址。
然后DHCP服务器为每个请求的设备分配一个地址,直到分配完该范围内的所有 IP 地址为止。
已经分配的IP地址必须定时地延长借用期。这个延期的过程称作leasing,
确保了当客户机设备在正常地释放IP地址之前突然从网络断开时被分配的地址可以归还给服务器。
本文以Redhat Linux 9.0为例,介绍如何建立一个完整和安全的DHCP服务器。
一、建立DHCP服务器配置文件
可以使用Redhat Linux 9.0自身携带rpm包安装。安装结束后, DHCP 端口监督程序
dhcpd配置文件是/etc目录中的名为dhcpd.conf的文件。下面手工建立/etc/dhcpd.conf文件。
/etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。
1.DHCP配置文件中的parameters(参数):表明如何执行任务,是否要执行任务,
或将哪些网络配置选项发送给客户。主要内容见表1
参数解释ddns-update-style配置DHCP-DNS 互动更新模式。default-lease-time指定确省租赁时间的长度,单位是秒。max-lease-time指定最大租赁时间长度,单位是秒。hardware指定网卡接口类型和MAC地址。server-name通知DHCP客户服务器名称。get-lease-hostnames flag检查客户端使用的IP地址。fixed-address ip分配给客户端一个固定的地址。authritative拒绝不正确的IP地址的要求。2. DHCP配置文件中的declarations (声明):用来描述网络布局、提供客户的IP地址等。 声明解释shared-network用来告知是否一些子网络分享相同网络。subnet描述一个IP地址是否属于该子网。range 起始IP 终止IP提供动态分配IP 的范围。host 主机名称参考特别的主机。group为一组参数提供声明。allow unknown-clients ﹔deny unknown-client是否动态分配IP给未知的使用者。allow bootp;deny bootp是否响应激活查询。allow booting﹔deny booting是否响应使用者查询。 filename开始启动文件的名称,应用于无盘工作站。next-server设置服务器从引导文件中装如主机名,应用于无盘工作站。
3. DHCP配置文件中的option(选项):用来配置DHCP可选参数,全部用option关键字作为开始
选项解释subnet-mask为客户端设定子网掩码。domain-name为客户端指明DNS名字。domain-name-servers为客户端指明DNS服务器IP地址。host-name为客户端指定主机名称。routers为客户端设定默认网关。broadcast-address为客户端设定广播地址。ntp-server为客户端设定网络时间服务器IP地址。time-offset为客户端设定和格林威治时间的偏移时间,单位是秒。
注意:如果客户端使用的是视窗操作系统,不要选择"host-name"选项,即不要为其指定主机名称。
下面是一个笔者使用的DHCP配置文件,这是一个C类网络,共126个IP地址可以分配的例子。
读者可以复制后使用,注意红色部分是有必要修改的。
ddns-update-style interim;ignore client-updates; subnet 192.168.1.0 netmask 255.255.255.0 {     option routers          192.168.1.254;    option subnet-mask      255.255.255.0;    option broadcast-address        192.168.1.255;    option domain-name-servers      192.168.1.3;    option domain-name          "www.cao.com"; #DNS名称#    option domain-name-servers  192.168.1.3;     option time-offset      -18000;      range dynamic-bootp 192.168.1.128 192.168.1.255;    default-lease-time 21600;    max-lease-time 43200;         host ns {        hardware ethernet 52:54:AB:34:5B:09;#运行DHCP的网络接口的MAC地址#        fixed-address 192.168.1.9;    }}二、建立客户租约文件
运行DHCP服务器还需要一个名为 dhcpd.leases 的文件,保持所有已经分发出去的 IP 地址。
在Redhat Linux 发行版本中,该文件位于 /var/lib/dhcp/ 目录中。
如果您通过 RPM 安装 ISC DHCP,那么该目录应该已经存在。dhcpd.leases的文件格式为:
Leases address {statement}
一个典型的文件内容如下:
lease 192.168.1.255 {             #DHCP服务器分配的IP地址#  starts 1 2005/05/02 03:02:26;    # lease 开始租约时间#  ends 1 2005/05/02 09:02:26;       # lease 结束租约时间#   binding state active;  next binding state free;  hardware ethernet 00:00:e8:a0:25:86;  #客户机网卡MAC地址#  uid "\001\000\000\350\240%\206";   #用来验证客户机的UID标示#  client-hostname "cjh1";    #客户机名称#}
注意lease 开始租约时间和lease 结束租约时间是格林威治标准时间(GMT),不是本地时间。
第一次运行DHCP服务器时dhcpd.leases是一个空文件,也不用手工建立。
如果不是通过 RPM 安装 ISC DHCP,或者 dhcpd 已经安装,那么您应该试着确定 dhcpd
将其 lease 文件写到何处,并确保该文件存在。也可以手工建立一个空文件:
#touch /var/lib/dhcp/dhcpd.leases
三、启动和检查DHCP服务器
使用命令启动DHCP服务器:
#service dhcpd start
使用ps命令检查dhcpd进程:
#ps -ef | grep dhcpdroot      2402     1  0 14:25 ?        00:00:00 /usr/sbin/dhcpdroot      2764  2725  0 14:29 pts/2    00:00:00 grep dhcpd
使用检查dhcpd运行的端口:
# netstat -nutap | grep dhcpdudp   0  0 0.0.0.0:67         0.0.0.0:*                           2402/dhcpd
四、配置DHCP客户端
通常网管员使用选择手工配置 DHCP 客户,需要修改 /etc/sysconfig/network 文件来启用联网;
并修改 /etc/sysconfig/network-scripts 目录中每个网络设备的配置文件。在该目录中,
每个设备都有一个叫做 ifcfg-eth? 的配置文件,eth?是网络设备的名称。 如eth0等。
如果你想在引导时启动联网,NETWORKING 变量必须 被设为 yes。
除了此处之外/etc/sysconfig/network 文件应该包含以下行:
NETWORKING=yesDEVICE=eth0BOOTPROTO=dhcpONBOOT=yes五、DHCP配置常见错误排除
通常配置DHCP 服务器很容易,不过,在这里有一些技巧可以帮助您避免出现问题。
对服务器而言,要确保网卡正常工作,并具备广播功能。
对客户机而言,还要确保客户机的网卡正常工作。
最后,要考虑网络的拓扑,并考虑客户机向 DHCP 服务器发出的广播消息是否会受到阻碍。
另外如果dhcpd进程没有启动,那么可以浏览 syslog 消息文件来确定是哪里出了问题。
这个消息文件通常是 /var/log/messages。
典型故障:
1.DHCP服务器配置完成,没有语法错误。但是网络中的客户机却没办法取得IP地址。
通常是Linux DHCP服务器沒有办法接收來自255.255.255.255 的 DHCP 客户机的Request
封包造成的。一般是Linux DHCP服务器的网卡没有设置具有MULTICAST功能。
为了让dhcpd(dhcp程序的守护进程)能够正常的和DHCP客户机沟通,
dhcpd必须传送封包到255.255.255.255这个IP地址,
但是有些Linux系统里255.255.255.255这个IP地址被用来做为监听区域子网域(local subnet)
广播的 IP地址,所以需要在路由表(routing table)里加入255.255.255.255
以激活MULTICAST功能;
使用命令:
route add -host 255.255.255.255 dev eth0
如果报告错误消息:255.255.255.255:Unkown host
那么请先修改/etc/hosts加入一行:
255.255.255.255 dhcp
2. DHCP客户端程序和DHCP服务器不兼容
由于Linux有许多发现版本,不同版本使用DHCP客户端程序和DHCP服务器也不相同。
Linux提供了四种DHCP客户端程序:pump, dhclient, dhcpxd, 和dhcpcd。
了解不同Linux发行版本的服务器端和客户端程序对于常见错误排除是必要的。
笔者曾经遇到过使用SuSE Linux 9.1 DHCP服务器和使用Mandrake Linux 9.0客户机不兼容的情况。
此时就必须更换客户端程序。方法是先停止客户机的网络服务,卸载原程序,安装和服务器端兼容程序。
附表:主要Linux发行版使用的DHCP客户端。
发行版本 缺省 DHCP客户端可选 DHCP 客户端 DHCP客户端启动脚本附加配置文件Red Hat Linux 9.0dhclient 无/sbin/ifup /etc/sysconfig/network,/etc/sysconfig/network-scripts/ifcfg-eth0Debian Linux 3.0dhclient 无/sbin/ifup/etc/network/interfaces, /etc/dhclient.confMandrake Linux 9.1dhclient dhcpcd, dhcpxd, pump /sbin/ifup /etc/sysconfig/network, /etc/sysconfig/network-scripts/ifcfg-eth0, /etc/dhclient-eth0.confSuSE Linux 9.1dhcpcd dhclient /sbin/ifup-dhcp /etc/sysconfig/network/dhcp,/etc/sysconfig/network/ifcfg-eth0六、DHCP服务器的安全
1. 在指定网络接口启动DHCP服务器
如果你的Linux系统连接了不止一个网络界面,但是你只想让 DHCP 服务器启动其中之一,
你可以配置 DHCP 服务器只在那个设备上启动。在 /etc/sysconfig/dhcpd 中,
把界面的名称添加到 DHCPDARGS 的列表中:
DHCPDARGS=eth0或者直接使用命令:
Echo “DHCPDARGS=eth0”>> /etc/ sysconfig/dhcpd
这样对于带有两个网卡的防火墙机器,更加安全:
一个网卡可以被配置成 DHCP 客户来从互联网上检索 IP 地址;
另一个网卡可以被用作防火墙之后的内部网络的 DHCP 服务器。
仅指定连接到内部网络的网卡使系统更加安全,因为用户无法通过互联网来连接它的守护进程。
2. 让DHCP服务器在监牢中运行
所谓"监牢"就是指通过chroot机制来更改某个软件运行时所能看到的根目录,
即将某软件运行限制在指定目录中,保证该软件只能对该目录及其子目录的文件有所动作,
从而保证整个服务器的安全。这样即使出现被破坏或被侵入,所受的损失也较小。
将软件chroot化的一个问题是该软件运行时需要的所有程序、配置文件和库文件都必须事先安装到
chroot目录中,通常称这个目录为chroot jail(chroot"监牢")。
如果要在"监牢"中运行dhcpd,而事实上根本看不到文件系统中那个真正的目录。
因此需要事先创建目录,并将dhcpd复制到其中。同时dhcpd需要几个库文件,
可以使用ldd(library Dependency Display缩写)命令,
ldd作用是显示一个可执行程序必须使用的共享库。  
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93926/showart_1873752.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP