请教高手:dhcp问题
请问高手,我的电脑是redhat 7.2现在用pppoe拨号上宽带。下面还有win2k机子,想用redhat 做服务器 win2k做客户机共享上网。本人已经用squid做了代理,但是我想让redhat 做dhcp服务器,win2k自动获得ip上网,不知我该如何做?恳请赐教,不胜感激!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
忘记说了,我有两块网卡,打算让eth1有dhcp功能。
期盼中
DHCP服务器详细配置(转贴)
希望能给对于一个网络维护人员,分配和管理网络内部计算机的IP地址是一件不太容易的事情,这个问题在网络内部的主机数量较多时更加突出,尤其是主机数量大于可用IP地址数量的时候。为了方便将来的IP地址资源管理,我们首先配置一个DHCP服务器,来自动完成管理局域网内部计算机的IP地址分配工作。
动态主机配置协议DHCP(Dynamic Host Configuration Protocol)使网络管理员可以集中管理一个网络系统,对网络中的IP地址进行自动分配。我们通常的拨号上网方式就是通过DHCP从ISP哪里动态得到IP地址的。
DHCP免除了管理员人为分配和改变IP地址的工作,减少网络管理的工作量。DHCP可以动态的或永久的给主机分配IP地址,也可以回收那些不用的,或者分配使用时间到期的IP地址,从而这些地址可以再分配给其他用户使用。当客户使用DHCP协议请求地址时,DHCP服务器将为客户进行地址分配,每个客户都有一个租期,在租期到达之前,客户可以请求重新获得租期,租期过后,客户将不允许使用该地址。
Red Hat Linux使用dhcpd进程提供DHCP服务,启动时dhcpd自动读它的配置文件/etc/dhcpd.conf,dhcpd将客户的租用信息保存在 /var/lib/dhcp/dhcpd.leases文件中,该文件不断被更新,从这里面可以查到IP地址分配的情况。
dhcpd为了向一个子网提供服务,需要知道子网的网络地址和网络掩码,并且还要知道地址分配的范围,下面给出一个简单的dhcpd.conf文件:
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.10 192.168.100.253;
}
此例中,dhcpd将给192.168.100.0网络分配192.168.100.10到192.168.100.253的IP地址。
租期时间可以从0秒到无限长,可以根据需要来定。缺省的租期时间为一天,即86400秒。可以为主机定义两个租期长度:
default-lease-time 默认租期时间
max-lease-time 用户可以获得的最长租期时间
下面的配置将缺省的租期时间设置为10分钟,最长租用时间为1小时:
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.10 192.168.100.253;
default-lease-time 600;
max-lease-time 3600;
}
DHCP还可以向客户提供更多的参数,这些参数可以用option来指定,下面是一个例子:
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.10 192.168.100.253;
default-lease-time 600;
max-lease-time 3600;
option subnet-mask 255.255.255.0;
option routers 192.168.100.254;
option domain-name-servers 202.102.134.68;
}
正如前面讲到的,通过DHCP获得IP地址的客户端电脑,在租期过后,可能就会失去了原来的IP。如果我想让我的某些主机永远都使用一个固定的IP地址,那么可以这样设置:
host pangty {
hardware ethernet 00:10:dc:8f:5b:ff;
fixed-address 192.168.100.9;
}
这样以来,当网卡物理地址(MAC地址)是00:10:dc:8f:5b:ff的主机pangty请求分配IP地址时,DHCP会固定的分配192.168.100.9这个地址给它。
Windows主机的网卡物理地址可以用ipconfig指令获得,在DOS窗口下键入
ipconfig /all
显示的信息里面找到类似这样的一行:
Physical Address. . . . . . . . . : 00-10-DC-8F-5B-FF
后面的00-10-DC-8F-5B-FF就是该网卡的物理地址。
§§ 在Linux服务器上安装配置DHCP服务
在刚才我们安装了Linux的机器上,先检查一下有没有安装dhcp软件包:
[root@rh73 ~]# rpm -qa|grep dhcp
如果还没有安装,在Red Hat Linux 7.3的安装盘上找到dhcp相关的软件包:
[root@rh73 ~]# mount /mnt/cdrom
[root@rh73 ~]# cd /mnt/cdrom/Red Hat/RPMS
[root@rh73 /mnt/cdrom/Red Hat/RPMS]# ll|grep dhcp
-rw-r--r-- 1 root root 121323 May 8 08:11 dhcp-2.0pl5-8.i386.rpm
-rw-r--r-- 1 root root 30509 May 8 07:58 dhcpcd-1.3.22pl1-7.i386.rpm
其中dhcpd是dhcp客户端软件,在系统安装时是默认安装的,现在只需要安装dhcp软件包
[root@rh73 /mnt/cdrom/Red Hat/RPMS]# rpm -ivh dhcp-2.0pl5-8.i386.rpm
Preparing... ########################################### [100%]
1:dhcp ########################################### [100%]
如前面所述,dhcpd默认的配置文件是/etc/dhcpd.conf,在使用之前,首先要配置一下该文件。其实在安装完毕软件包后,dhcp软件包会给出一个例子:/usr/share/doc/dhcp-2.0pl5/dhcpd.conf.sample,你可以将它复制到/etc目录下,名字改成 dhcpd.conf,然后对它进行相应的修改,来适应自己的需求。现在我们不管它,自己来创建一个:
[root@rh73 ~]# vi /etc/dhcpd.conf
然后键入下面的内容:
subnet 192.168.100.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
range 192.168.100.10 192.168.100.253;
option broadcast-address 192.168.100.255;
option routers 192.168.100.254;
option domain-name-servers 202.102.152.3, 202.102.134.68;
default-lease-time 86400;
max-lease-time 259200;
}
host pangty {
hardware ethernet 00:10:dc:8f:5b:ff;
fixed-address 192.168.100.9;
}
存盘退出。所有的配置基本完成了,配置文件很简单。这个DHCP服务器将为192.168.100.0/255.255.255.0的子网自动分配IP地址,自动分配地址的范围是192.168.100.10到192.168.100.253,自动获得IP地址的主机默认网关是 192.168.100.254,DNS为202.102.152.3和202.102.134.68。该配置文件还为MAC地址是00:10:dc: 8f:5b:ff的主机固定分配192.168.100.9这个地址。
还有一个问题:如果运行dhcpd的机器有多于一个的网卡,还需要告诉dhcpd是工作在哪块网卡接口上的:
[root@rh73 ~]# vi /etc/sysconfig/dhcpd
DHCPDARGS="eth1"
存盘退出。现在启动dhcpd进程:
[root@rh73 ~]# /etc/rc.d/init.d/dhcpd start
Starting dhcpd: [ OK ]
§§ Windows主机做客户端测试DHCP
现在到客户端,测试一下它是否正常工作,以Windows 2000 Professional为例,在控制面板打开“拨号与网络连接”,双击“本地连接”图表察看本地连接状态,选择“属性”:
选择“Internet 协议(TCP/IP)”,点击“属性”按钮:
选中“自动获得IP地址”和“自动获得DNS服务器地址”选项:
点“确定”关闭该对话框。打开一个“命令提示符”窗口(DOS窗口),键入下面的命令:
C:\>;ipconfig/renew
C:\>;ipconfig/all
Windows 2000 IP Configuration
Host Name . . . . . . . . . . . . : pangty
Primary DNS Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Intel(R) PRO/100 VM Network Connection
Physical Address. . . . . . . . . : 00-10-DC-8F-5B-FF
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.100.9
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.100.254
DHCP Server . . . . . . . . . . . : 192.168.100.254
DNS Servers . . . . . . . . . . . : 202.102.152.3
202.102.134.68
Lease Obtained. . . . . . . . . . : 2002年7月24日 08:21:52
Lease Expires . . . . . . . . . . : 2002年7月24日 20:21:52
一切工作正常,我的计算机pangty通过DHCP获得了IP地址192.168.100.9,以及其他相关的网卡参数。
我们希望服务器每次启动时自动启动dhcp服务,这可以用ntsysv来设置,在命令行键入ntsysv:
[root@rh73 ~]# ntsysv
显示如下对话框:
确定选中了dhcpd项,然后确认,这样每次服务器重起时会自动启动dhcpd进程。
[tips]
我们这里用到了ntsysv这个工具,它是用来管理Linux不同运行级下的进程的,这个工具可以直观的来管理/etc/rc.d/init.d下的启动脚本,决定在某个启动级别是否加载/停止某个服务,与之相关的另外一个命令是chkconfig,下面我们做简单的介绍。
对Linux运行级的了解有助于系统的维护工作。Linux系统启动时遵照Sys V init的boot过程进行,系统boot时首先加载运行init程序,由它负责启动所有的需要在boot时运行的进程。其中包括供你登入的getty, NFS守护进程,FTP守护进程,以及任何需要机器在boot时启动的进程。Sys V init已成为LINUX世界中boot时启动进程的标准。Sys V init的配置文件位于/etc下面的一个名为rc.d子目录中,在rc.d下会发现rc.sysinit以及以下目录:
init.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
init.d下面有许多脚本程序。一般来说,针对每一项需要在boot或改变运行级时启动的服务均需要一个脚本程序。这些服务包括网络,NFS,sendmail,httpd等等。启动事件的执行过程是这样的:
" 系统内核查找init并执行第一个发现的init。
" 由init来执行/etc/rc.d/rc.sysinit
" rc.sysinit执行了一系列的操作后接着运行rc.serial(如果存在的话)
" 由init执行所有默认运行级下的脚本程序
" 由init执行rc.local
默认的运行级由/etc/inittab控制。在该文件里面有一行:
id:3:initdefault:
对于大多数系统,该值被设置为3,也就是默认运行级为3。如果您想改变默认运行级,就编辑/etc/inittab,将3改为其它数值。
不同的运行级定义如下:
0 为停机,机器关闭。
1 为单用户模式,就像Win9x 下的安全模式类似。
2 为多用户模式,但是没有NFS 支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是 X11 ,启动时进到 X Window 系统。
6 为重启,运行 init 6 机器就会重启。
以rc2.d为例,该目录下有很多以S加数字开头的符号连接,如S10network。文件开头的S代表start就是启动服务的意思,后面的数字10就是启动、停止的顺序。在同一个目录下,你还可以看到S80sendmail这个文件,因为没有启动网络的情况下,启动sendmail是没有何作用的,所以用80这个数值来指出sendmail的启动在network(10)以后。
另外,在/etc/rc.d/rc2.d 还可以看到那些K开头的文件,例如/etc/rc.d/rc2.d/ K35dhcpd,K代表kill,就是停止或关闭服务。
不同的运行级有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了root 口令,那么可以让机器启动进入单用户状态来设置。在启动后的 lilo 提示符下输入:linux single,就可以使机器进入运行级1,并把 root 文件系统挂为读写。此时的单用户模式会跳过所有系统认证,你可以键入passwd指令来改变root口令。
标准的Linux运行级为3 或者5,如果设定是3的话,系统就运行在完全多用户状态。如果设定是5的话,则启动后自动运行X Window系统。
Linux运行级的改变可以通过 init 命令来切换。例如,假设你要维护系统进入单用户状态,那么,可以使用 init 1 来切换。在Linux的运行级的切换过程中,系统会自动寻找对应运行级的目录/etc/rc[0-6].d下的K 和 S 开头的文件,按后面的数字顺序,执行这些脚本。对这些脚本的维护,是很繁琐的一件事情,Linux 提供了chkconfig 命令用来更新和查询不同运行级上的系统服务。
chkconfig语法为:
chkconfig --list [name]
chkconfig --add name
chkconfig --del name
chkconfig [--level levels] name <on|off|reset>;
chkconfig [--level levels] name
chkconfig 有五项功能:添加服务,删除服务,列表服务,改变启动信息以及检查特定服务的启动状态。
chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回 true,否则返回 false。 --level 选项可以指定要查看的运行级而不一定是当前运行级。
如果在服务名后面指定了on,off 或者 reset,那么 chkconfig 会改变指定服务的启动信息。on 和 off 分别指服务在改变运行级时的启动和停止。reset 指初始化服务信息,无论有问题的初始化脚本指定了什么。
对于 on 和 off 开关,系统默认只对运行级 3,4,5有效,但是reset可以对所有运行级有效。指定--level选项时,可以选择特定的运行级。
需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。
chkconfig选项介绍:
--level levels
指定运行级,由数字 0 到 7 构成的字符串,如:--level 35 表示指定运行级3 和5。
--add name
这个选项增加一项新的服务,chkconfig确保每个运行级有一项启动(S) 或者 杀死(K) 入口。如有缺少,则会从缺省的init 脚本自动建立。
--del name
用来删除服务,并把相关符号连接从 /etc/rc[0-6].d 删除。
--list name
列表,如果指定了name 那么只是显示指定的服务名,否则,列出全部服务在不同运行级的状态。
每个被chkconfig管理的服务需要在对应的init.d 下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。第二行对服务进行描述,可以用“\”跨行注释。
例如,random.init 包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
表明random脚本在运行级 2, 3, 4, 5 启动,启动优先权为20,停止优先权为80。如果想了解更详细的内容,现在就去看看自己/etc/rc.d/init.d目录下的脚本吧。
__________________
我安装的dhcp服务器为什么在/etc/rc.d/init.d/下面没有dhcpd.conf?
我用rpm -qal |grep dhcp得到如下信息:
/etc/dhcpc
/ech/dhcpcd
/sbin/dhcpcd
/usr/share/doc/dhcpcd-1.3.18p8
/usr/share/doc/dhcpcd-1.3.18p8/readme
/usr/share/doc/dhcpcd-1.3.18p8/chcpcd-eth0.exe
/usr/share/doc/iproute-2.2.4/examples/dhcp-client-script
我该如何做?
dhcp已经安装,那么我的win2k的浏览器里面是否还需要设置proxy以及端口?如果我不设置win2k能不能上网?我想让我的redhat既做代理服务器,又做dhcp服务器,不知该如何?恳请赐教!