免费注册 查看新帖 |

Chinaunix

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

Linux下配置完整安全的DHCP服务器详解(上) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-15 15:48 |只看该作者 |倒序浏览
  DHCP是动态主机配置协议。这个协议用于向计算机自动提供IP地址,子网掩码和路由信息。网络管理员通常会分配某个范围的IP地址来分发给局域网上的客户机。当设备接入这个局域网时,它们会向 DHCP 服务器请求一个 IP 地址。然后DHCP服务器为每个请求的设备分配一个地址,直到分配完该范围内的所有 IP 地址为止。已经分配的IP地址必须定时地延长借用期。这个延期的过程称作leasing,确保了当客户机设备在正常地释放IP地址之前突然从网络断开时被分配的地址可以归还给服务器。本文以Redhat Linux 9.0为例,介绍如何建立一个完整和安全的DHCP服务器。
准备:
1)配置网卡:(/etc/sysconfig/network-scripts/ifcfg-eth0:0)具体的参数如下
vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0        # 网卡在系统中的名称(新加一个IP地址接口,我的第一个IP有其它用)
#BOOTPROTO=dhcp
OTPROTO=static       #   设定IP为静态的
#GATEWAY=
#MTU="1500"
IPADDR=192.168.0.10
NETMASK=255.255.255.0  # 子网掩码
#BROADCAST=""
#NETWORK=
ONBOOT=yes   # 开机时自动启动
配置完毕,ifup eth0:0
记得首先用ping命令测试是否能接通其他计算机
2)安装rpm包
如果你安装系统时没有安装DHCP,则你要用RedHat9.0第二张光盘,
mount -o loop shrike-i386-disc2.iso /mnt/cdrom
cd /mnt/cdrom/RedHat/RPMS
rpm -ivh dhcp* 
安装装完后查询:
[root@localhost /]# rpm -qa |grep dhcp
dhcp-devel-3.0pl1-23
dhcp-3.0pl1-23
3) 配置dhcpd.conf 文件
在配置之前,首先要获取以下的数据内容。
整体设定: 租約期限、DNS、 IP 、 router 等內容;
动态IP设定:使用 subnet 的项目与 range 的参数IP [注意网段与网卡网段一致]
静态IP设定:使用 host 这个项段,配合 MAC地址 [ 除了括号那一行之外,其他的每一行后面都要以『 ; 』做为结尾!这很重要!]
在 /etc 下生成一个 dhcpd.conf 的配置文件
[root@localhost /]# vi /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.254;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option domain-name-servers 192.168.0.254, 172.18.8.2;
option domain-name "gdlw-linux";
range dynamic-bootp 192.168.0.20 192.168.0.254;
default-lease-time 21600;
max-lease-time 43200;
}
#为某块网卡指定固定的IP地址,指定不同的网关地址等:
#host pc1  {hardware ethernet 00:a0:c9:a6:96:33;fixed-address 192.168.0.12;}
#host pc1  {hardware ethernet 00:a0:c9:a6:96:33;fixed-address 192.168.0.12;option routers 192.168.0.1;}
编写完毕,保存并退出。
4)启动和检查DHCP服务器
  使用命令启动DHCP服务器:
#service dhcpd start   
  使用ps命令检查dhcpd进程:
[root@localhost /]# ps -ef|grep dhcpd
root      2241     1  0 10:39 ?        00:00:00 /usr/sbin/dhcpd
root      2884  2391  0 11:46 pts/0    00:00:00 grep dhcpd
  使用检查dhcpd运行的端口:
[root@localhost /]# netstat -nutap | grep dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*                           2241/dhcpd
5)配置DHCP客户端
 网络设备配置文件放在/etc/sysconfig/network-scripts 目录中,如第一块网卡为ifcfg-eth0  
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes   
6)配置文件说明:
    a.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地址的要求。   
  b. DHCP配置文件中的declarations (声明):用来描述网络布局、提供客户的IP地址等。主要内容见表2:
声 明   解 释  
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   设置服务器从引导文件中装如主机名,应用于无盘工作站。   
  c. DHCP配置文件中的option(选项):用来配置DHCP可选参数,全部用option关键字作为开始,主要内容包括见表3:
选 项   解 释  
subnet-mask   为客户端设定子网掩码。  
domain-name   为客户端指明DNS名字。  
domain-name-servers   为客户端指明DNS服务器IP地址。  
host-name   为客户端指定主机名称。  
routers   为客户端设定默认网关。  
broadcast-address   为客户端设定广播地址。  
ntp-server   为客户端设定网络时间服务器IP地址。  
time-offset   为客户端设定和格林威治时间的偏移时间,单位是秒。   
  注意:如果客户端使用的是视窗操作系统,不要选择"host-name"选项,即不要为其指定主机名称。

附1、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.0   dhclient   无   /sbin/ifup   /etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0  

Debian Linux 3.0   dhclient   无   /sbin/ifup   /etc/network/interfaces
/etc/dhclient.conf  
Mandrake Linux 9.1   dhclient   dhcpcd, dhcpxd, pump   /sbin/ifup   /etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/dhclient-eth0.conf  
SuSE Linux 9.1   dhcpcd   dhclient   /sbin/ifup-dhcp   /etc/sysconfig/network/dhcp
/etc/sysconfig/network/ifcfg-eth0   
附2、DHCP服务器的安全
 1. 在指定网络接口启动DHCP服务器
  如果你的Linux系统连接了不止一个网络界面,但是你只想让 DHCP 服务器启动其中之一,你可以配置 DHCP 服务器只在那个设备上启动。在 /etc/sysconfig/dhcpd 中,把界面的名称添加到 DHCPDARGS 的列表中:
DHCPDARGS=eth0   
  或者直接使用命令:
Echo "DHCPDARGS=eth0" >> /etc/ sysconfig/dhcpd   
  这样对于带有两个网卡的防火墙机器,更加安全:一个网卡可以被配置成 DHCP 客户来从互联网上检索 IP 地址;另一个网卡可以被用作防火墙之后的内部网络的 DHCP 服务器。仅指定连接到内部网络的网卡使系统更加安全,因为用户无法通过互联网来连接它的守护进程。














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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP