arch搭建dhcp服务器
Ⅰ linux如何配置网络游戏服务器
要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置。在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,但是这些配置文件大都可以通过配置命令linuxconf(其中网络部分的配置可以通过netconf命令来实现)命令来实现。下面介绍基本的TCP/IP网络配置文件。
*/etc/conf.moles文件
该配置文件定义了各种需要在启动时加载的模块的参数信息。这里主要着重讨论关于网卡的配置。在使用Linux做网关的情况下,Linux服务器至少需要配置两块网卡。为了减少启动时可能出现的问题,Linux内核不会自动检测多个网卡。对于没有将网卡的驱动编译到内核而是作为模块动态载入的系统若需要安装多块网卡,应该在“conf.moles”文件中进行相应的配置。
若设备驱动被编译为模块(内核的模块):对于PCI设备,模块将自动检测到所有已经安装到系统上的设备;对于ISA卡,则需要向模块提供IO地址,以使模块知道在何处寻找该卡,这些信息在“/etc/conf.moles”中提供。
例如,我们有两块ISA总线的3c509卡,一个IO地址是0x300,另一个是0x320。编辑“conf.moles”文件如下:
aliaseth03c509
aliaseth13c509
options3c509io=0x300,0x320
这是说明3c509的驱动程序应当分别以eth0或eth1的名称被加载(aliaseth0,eth1),并且它们应该以参数io=0x300,0x320被装载,来通知驱动程序到哪里去寻找网卡,其中0x是不可缺少的。
对于PCI卡,仅仅需要alias命令来使ethN和适当的驱动模块名关联,PCI卡的IO地址将会被自动的检测到。对于PCI卡,编辑“conf.moles”文件如下:
aliaseth03c905
aliaseth13c905
若驱动已经被编译进了内核:系统启动时的PCI检测程序将会自动找到所有相关的网卡。ISA卡一般也能够被自动检测到,但是在某些情况下,ISA卡仍然需要做下面的配置工作:
在“/etc/lilo.conf”中增加配置信息,其方法是通过LILO程序将启动参数信息传递给内核。对于ISA卡,编辑“lilo.conf”文件,增加如下内容:
append="ether="0,0,eth0ether="0,0,eth1"
注:先不要在“lilo.conf”中加入启动参数,测试一下你的ISA卡,若失败再使用启动参数。
如果用传递启动参数的方法,eth0和eth1将按照启动时被发现的顺序来设置。
*/etc/HOSTNAME文件
该文件包含了系统的主机名称,包括完全的域名,如:deep.openarch.com。
*/etc/sysconfig/network-scripts/ifcfg-ethN文件
在RedHat中,系统网络设备的配置文件保存在“/etc/sysconfig/network-scripts”目录下,ifcfg-eth0包含第一块网卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。
下面是“/etc/sysconfig/network-scripts/ifcfg-eth0”文件的示例:
DEVICE=eth0
IPADDR=208.164.186.1
NETMASK=255.255.255.0
NETWORK=208.164.186.0
BROADCAST=208.164.186.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
若希望手工修改网络地址或在新的接口上增加新的网络界面,可以通过修改对应的文件(ifcfg-ethN)或创建新的文件来实现。
DEVICE=name name表示物理设备的名字
IPADDR=addr addr表示赋给该卡的IP地址
NETMASK=mask mask表示网络掩码
NETWORK=addr addr表示网络地址
BROADCAST=addr addr表示广播地址
ONBOOT=yes/no 启动时是否激活该卡
none:无须启动协议
bootp:使用bootp协议
dhcp:使用dhcp协议
USERCTL=yes/no 是否允许非root用户控制该设备
*/etc/resolv.conf文件
该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件,示例如下:
searchopenarch.com
nameserver208.164.186.1
nameserver208.164.186.2
“searchdomainname.com”表示当提供了一个不包括完全域名的主机名时,在该主机名后添加domainname.com的后缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。
*/etc/host.conf文件
该文件指定如何解析主机名。Linux通过解析器库来获得主机名对应的IP地址。下面是一个“/etc/host.conf”的示例:
orderbind,hosts
multion
ospoofon
“orderbind,hosts”指定主机名查询顺序,这里规定先使用DNS来解析域名,然后再查询“/etc/hosts”文件(也可以相反)。
“multion”指定是否“/etc/hosts”文件中指定的主机可以有多个地址,拥有多个IP地址的主机一般称为多穴主机。
“nospoofon”指不允许对该服务器进行IP地址欺骗。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算机,来取得其它计算机的信任。
*/etc/sysconfig/network文件
该文件用来指定服务器上的网络配置信息,下面是一个示例:
NETWORK=yes
RORWARD_IPV4=yes
HOSTNAME=deep.openarch.com
GAREWAY=0.0.0.0
GATEWAYDEV=
NETWORK=yes/no 网络是否被配置;
FORWARD_IPV4=yes/no 是否开启IP转发功能
HOSTNAME=hostnamehostname表示服务器的主机名
GAREWAY=gw-ip gw-ip表示网络网关的IP地址
GAREWAYDEV=gw-dev gw-dw表示网关的设备名,如:etho等
注意:为了和老的软件相兼容,“/etc/HOSTNAME”文件应该用和HOSTNAME=hostname相同的主机名。
*/etc/hosts文件
当机器启动时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。
下面是一个“/etc/hosts”文件的示例:
IPAddress Hostname Alias
127.0.0.1 Localhost Gate.openarch.com
208.164.186.1 gate.openarch.comGate
………… ………… ………
最左边一列是主机IP信息,中间一列是主机名。任何后面的列都是该主机的别名。一旦配置完机器的网络配置文件,应该重新启动网络以使修改生效。使用下面的命令来重新启动网络:/etc/rc.d/init.d/networkrestart
*/etc/inetd.conf文件
众所周知,作为服务器来说,服务端口开放越多,系统安全稳定性越难以保证。所以提供特定服务的服务器应该尽可能开放提供服务必不可少的端口,而将与服务器服务无关的服务关闭,比如:一台作为www和ftp服务器的机器,应该只开放80和25端口,而将其他无关的服务如:fingerauth等服务关掉,以减少系统漏洞。
而inetd,也叫作“超级服务器”,就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。inetd.conf则是inetd的配置文件。inetd.conf文件告诉inetd监听哪些网络端口,为每个端口启动哪个服务。在任何的网络环境中使用Linux系统,第一件要做的事就是了解一下服务器到底要提供哪些服务。不需要的那些服务应该被禁止掉,最好卸载掉,这样黑客就少了一些攻击系统的机会。查看“/etc/inetd.conf”文件,了解一下inetd提供哪些服务。用加上注释的方法(在一行的开头加上#号),禁止任何不需要的服务,再给inetd进程发一个SIGHUP信号。
第一步:把文件的许可权限改成600。
[root@deep]#chmod600/etc/inetd.conf
第二步:确信文件的所有者是root。
[root@deep]#stat/etc/inetd.conf
第三步:编辑“inetd.conf”文件(vi/etc/inetd.conf),禁止所有不需要的服务,如:ftp、telnet、shell、login、exec、talk、ntalk、imap、pop-2、pop-3、finger、auth,等等。如果你觉得某些服务有用,可以不禁止这些服务。但是,把这些服务禁止掉,系统受攻击的可能性就会小很多。改变后的“inetd.conf”文件的内容如下面所示:
#Tore-readthisfileafterchanges,justdoa'killall-HUPinetd'
#
#
#echodgramudpwaitrootinternal
#
#
#
#
#
#
#
#timedgramudpwaitrootinternal
#
#Thesearestandardservices.
#
#ftpstreamtcpnowaitroot/usr/sbin/tcpdin.ftpd-l-a
#telnetstreamtcpnowaitroot/usr/sbin/tcpdin.telnetd
#
#Shell,login,exec,comsatandtalkareBSDprotocols.
#
#shellstreamtcpnowaitroot/usr/sbin/tcpdin.rshd
#loginstreamtcpnowaitroot/usr/sbin/tcpdin.rlogind
#execstreamtcpnowaitroot/usr/sbin/tcpdin.rexecd
#comsatdgramudpwaitroot/usr/sbin/tcpdin.comsat
#talkdgramudpwaitroot/usr/sbin/tcpdin.talkd
#ntalkdgramudpwaitroot/usr/sbin/tcpdin.ntalkd
#dtalkstreamtcpwaitnobody/usr/sbin/tcpdin.dtalkd
#
#Popandimapmailservicesetal
#
#pop-2streamtcpnowaitroot/usr/sbin/tcpdipop2d
#pop-3streamtcpnowaitroot/usr/sbin/tcpdipop3d
#imapstreamtcpnowaitroot/usr/sbin/tcpdimapd
#
#TheInternetUUCPservice.
#
#uucpstreamtcpnowaituucp/usr/sbin/tcpd/usr/lib/uucp/uucico-l
#
#.Mostsites
#runthisonlyonmachinesactingas"bootservers."Donotuncomment
#thisunlessyou*need*it.
#
#tftpdgramudpwaitroot/usr/sbin/tcpdin.tftpd
#bootpsdgramudpwaitroot/usr/sbin/tcpdbootpd
#
#Finger,
#valuabletopotential"systemcrackers."Manysiteschoosetodisable
#.
#
#fingerstreamtcpnowaitroot/usr/sbin/tcpdin.fingerd
#cfingerstreamtcpnowaitroot/usr/sbin/tcpdin.cfingerd
#systatstreamtcpnowaitguest/usr/sbin/tcpd/bin/ps-auwwx
#netstatstreamtcpnowaitguest/usr/sbin/tcpd/bin/netstat-finet
#
#Authentication
#
#authstreamtcpnowaitnobody/usr/sbin/in.identdin.identd-l-e-o
#
#Endofinetd.conf
注意:改变了“inetd.conf”文件之后,别忘了给inetd进程发一个SIGHUP信号(killall–HUPinetd)。
[root@deep/root]#killall-HUPinetd
第四步:
为了保证“inetd.conf”文件的安全,可以用chattr命令把它设成不可改变。把文件设成不可改变的只要用下面的命令:
[root@deep]#chattr+i/etc/inetd.conf
这样可以避免“inetd.conf”文件的任何改变(意外或是别的原因)。一个有“i”属性的文件是不能被改动的:不能删除或重命名,不能创建这个文件的链接,不能往这个文件里写数据。只有系统管理员才能设置和清除这个属性。如果要改变inetd.conf文件,你必须先清除这个不允许改变的标志:
[root@deep]#chattr-i/etc/inetd.conf
但是对于诸如sendmail,named,www等服务,由于它们不象finger,telnet等服务,在请求到来时由inet守护进程启动相应的进程提供服务,而是在系统启动时,作为守护进程运行的。而对于redhatlinux,提供了一个linuxconfig命令,可以通过它在图形界面下交互式地设置是否在启动时运行相关服务。也可以通过命令来设置是否启动时启动某个服务,如:[root@deep]#chkconfig–level35namedoff
具体命令可以参考manchkconfig的说明。
*/etc/hosts.allow文件
但是对于telnet、ftp等服务,如果将其一同关闭,那么对于管理员需要远程管理时,将非常不方便。Linux提供另外一种更为灵活和有效的方法来实现对服务请求用户的限制,从而可以在保证安全性的基础上,使可信任用户使用各种服务。Linux提供了一个叫TCPwrapper的程序。在大多数发布版本中该程序往往是缺省地被安装。利用TCPwrapper你可以限制访问前面提到的某些服务。而且TCPwrapper的记录文件记录了所有的企图访问你的系统的行为。通过last命令查看该程序的log,管理员可以获知谁曾经或者企图连接你的系统。
在/etc目录下,有两个文件:hosts.denyhosts.allow通过配置这两个文件,你可以指定哪些机器可以使用这些服务,哪些不可以使用这些服务。
当服务请求到达服务器时,TCPwrapper就按照下列顺序查询这两个文件,直到遇到一个匹配为止:
1.当在/etc/hosts.allow里面有一项与请求服务的主机地址项匹配,那么就允许该主机获取该服务
2.否则,如果在/etc/hosts.deny里面有一项与请求服务的主机地址项匹配,就禁止该主机使用该项服务。
3.如果相应的配置文件不存在,访问控制软件就认为是一个空文件,所以可以通过删除或者移走配置文件实现对清除所有设置。在文件中,空白行或者以#开头的行被忽略,你可以通过在行前加#实现注释功能。
配置这两个文件是通过一种简单的访问控制语言来实现的,访问控制语句的基本格式为:
程序名列表:主机名/IP地址列表。
程序名列表指定一个或者多个提供相应服务的程序的名字,名字之间用逗号或者空格分割,可以在inetd.conf文件里查看提供相应服务的程序名:如上面的文件示例中,telent所在行的最后一项就是所需的程序名:in.telnetd。
主机名/IP地址列表指定允许或者禁止使用该服务的一个或者多个主机的标识,主机名之间用逗号或空格分隔。程序名和主机地址都可以使用通配符,实现方便的指定多项服务和多个主机。
Linux提供了下面灵活的方式指定进程或者主机列表:
1.一个以"."起始的域名串,如.amms.ac.cn那么www.amms.ac.cn就和这一项匹配
2.以"."结尾的IP串如202.37.152.那么IP地址包括202.37.152.的主机都与这一项匹配。
3.格式为n.n.n.n/m.m.m.m表示网络/掩码,如果请求服务的主机的IP地址与掩码的位与的结果等于n.n.n.n那么该主机与该项匹配。
4.ALL表示匹配所有可能性
5.EXPECT表示除去后面所定义的主机。如:list_1EXCEPTlist_2表示list_1主机列表中除去List_2所列出的主机
6.LOCAL表示匹配所有主机名中不包含"."的主机
上面的几种方式只是Linux提供的方式中的几种,但是对于我们的一般应用来说是足够了。我们通过举几个例子来说明这个问题:
例一:我们只希望允许同一个局域网的机器使用服务器的ftp功能,而禁止广域网上面的ftp服务请求,本地局域网由202.39.154.、202.39.153.和202.39.152.三个网段组成。
在hosts.deny文件中,我们定义禁止所有机器请求所有服务:
ALL:ALL
在hosts.allow文件中,我们定义只允许局域网访问ftp功能:
in.ftpd-l–a:202.39.154202.39.153.202.39.152.
这样,当非局域网的机器请求ftp服务时,就会被拒绝。而局域网的机器可以使用ftp服务。此外,应该定期检查/var/log目录下的纪录文件,发现对系统安全有威胁的登录事件。last命令可以有效的查看系统登录事件,发现问题所在。
最后tcpdchk是检查TCP_WAPPERS配置的程序。它检查TCP_WAPPERS的配置,并报告它可以发现的问题或潜在的问题。在所有的配置都完成了之后,请运行tcpdchk程序:
[root@deep]#tcpdchk
*/etc/services文件
端口号和标准服务之间的对应关系在RFC1700“AssignedNumbers”中有详细的定义。“/etc/services”文件使得服务器和客户端的程序能够把服务的名字转成端口号,这张表在每一台主机上都存在,其文件名是“/etc/services”。只有“root”用户才有权限修改这个文件,而且在通常情况下这个文件是没有必要修改的,因为这个文件中已经包含了常用的服务所对应的端口号。为了提高安全性,我们可以给这个文件加上保护以避免没有经过授权的删除和改变。为了保护这个文件可以用下面的命令:
[root@deep]#chattr+i/etc/services
*/etc/securetty文件
“/etc/securetty”文件允许你规定“root”用户可以从那个TTY设备登录。登录程序(通常是“/bin/login”)需要读取“/etc/securetty”文件。它的格式是:列出来的tty设备都是允许登录的,注释掉或是在这个文件中不存在的都是不允许root登录的。
注释掉(在这一行的开头加上#号)所有你想不让root登录的tty设备。
编辑securetty文件(vi/etc/securetty)象下面一样,注释掉一些行:
tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
*使Control-Alt-Delete关机键无效
把“/etc/inittab”文件中的一行注释掉可以禁止用Control-Alt-Delete关闭计算机。如果服务器不是放在一个安全的地方,这非常重要。
编辑inittab文件(vi/etc/inittab)把这一行:
ca::ctrlaltdel:/sbin/shutdown-t3-rnow
改为:
#ca::ctrlaltdel:/sbin/shutdown-t3-rnow
用下面的命令使改变生效:
[root@deep]#/sbin/initq
*改变“/etc/rc.d/init.d/”目录下的脚本文件的访问许可
/etc/rc.d/init.d/下的脚本主要包含了启动服务的脚本程序。一般用户没有什么必要知道脚本文件的内容。所以应该改变这些脚本文件的权限。
[root@deep]#chmod-R700/etc/rc.d/init.d/*
这样只有root可以读、写和执行这个目录下的脚本。
*/etc/rc.d/rc.local文件
在默认情况下,当登录装有Linux系统的计算机时,系统会告诉你Linux发行版的名字、版本号、内核版本和服务器名称。这泄露了太多的系统信息。最好只显示一个“Login:”的提示信息。
第一步:
编辑“/ect/rc.d/rc.local”文件,在下面这些行的前面加上“#”:
--
#Thiswilloverwrite/etc/issueateveryboot.So,makeanychangesyou
#wanttomaketo/etc/.
#echo"">/etc/issue
#echo"$R">>/etc/issue
#echo"Kernel$(uname-r)on$a$(uname-m)">>/etc/issue
#
#cp-f/etc/issue/etc/issue.net
#echo>>/etc/issue
--
第二步:
删除“/etc”目录下的“issue.net”和“issue”文件:
[root@deep]#rm-f/etc/issue
[root@deep]#rm-f/etc/issue.net
注意:“/etc/issue.net”文件是用户从网络登录计算机时(例如:telnet、SSH),看到的登录提示。同样在“”目录下还有一个“issue”文件,是用户从本地登录时看到的提示。这两个文件都是文本文件,可以根据需要改变。但是,如果想删掉这两个文件,必须向上面介绍的那样把“/etc/rc.d/rc.local”脚本中的那些行注释掉,否则每次重新启动的时候,系统又会重新创建这两个文件。
Ⅱ 如何组建一个无盘工作站,具体步骤
无盘工作站构架指南2(5-10)
5、486运行Win2000?无盘工作站
你想用486机运行Win2000吗?你想不买终端卡组建无盘Win2000网络吗?好了,请跟我来吧。根据本人长期的组网实践经验,总结出一套完整的无盘Win2000方案,给大家分享!
首先说说大致工作原理:
主要先通过Win2000远程无盘引导Win32工作站,再利用Win2000终端服务和终端连网软件从无盘win32中登陆到终端服务器上。
请看以下具体步骤:
一、硬件配置:
1.服务器:建议CPU PIII500 以上、256M内存,硬盘15G以上(经济允许的话最好用SCSI)因为服务器是整个网络核心的核心,所以配置一定要好。
2.工作站:低配置的486,586即可。笔者这里是奔腾75,8M内存,无硬盘。
二、安装步骤:
1.首先把服务器装好Win2000 Server,并配置好所有硬件。
2.为window2000安装终端服务。
打开控制面版---添加/删除程序---添加/删除Windows组件--选中Windows终端服务确定。安装时要放入Win2000光盘.
3.在服务器上安装MetaFrame。Metaframe是citrix公司在Win2000下的终端服务器他比Win2000的终端服务更加强大,提供多种客户终端接入服务。
4.安装好Metafrmae后,开始制作终端客户安装软盘.
开始---程序---Metaframe tools---Ica client creator----Ica Client For win3x
5.为Win2000添加远程启动服务。由于Win2000已经不在支持远程启动服务。因此,我们考虑将NT4的远程启动服务移植到Win2000中。可到凌心之 家(www.lingxin-home.com)或我的主页(networld2001.8u8.com)去下载远程服务安装工具。
6.在Win2000下依次配一台Dos、win32无盘站.方法与nt下一模一样,别告诉我你不会配置.不会的,以下就不用看了。
7.以无盘win32启动工作站,把第4步制作的终端客户盘安装在无盘站上。
8.配置客户端。双击citrix图标,建立一个新连接,这里注意:要填好主机名(服务器名称),协议选择Netbios,的其它全部用他的默认就可以了。
9.建立连接完成后,双击刚才建立的连接,就出现梦寐以求的Win2000桌面了。你可以运行任何在服务器的软件了!
6、安装Linux无盘工作站
[文章导读]
其实Linux 对远程引导的支持非常好,Linnx内核自身又支持网络文件系统,因此非常适合做无盘工作站,本文将以一个实例向大家详细介绍无盘Linux工作站的安装办法。
[正文]
当年Novell下的无盘DOS工作站很是流行,后来又流行过Win95无盘工作站,只是由于问题多多,后来微软自己停止了对无盘Windows的支持。随着Linux的日益流行,使用Linux的人越来越多,其实Linux 对远程引导的支持非常好,Linnx内核自身又支持网络文件系统,因此非常适合做无盘工作站,本文将以一个实例向大家详细介绍无盘Linux工作站的安装办法。
这个网络是一个小的局域网,有1台服务器和4台 Linux 无盘工作站,彼此之间用双绞线通过HUB连接,服务器的IP地址定为192.168.0.80 ,名字是server ,5台无盘工作站的地址由服务器动态分配,地址范围从 192.168.0.1 到192.168.0.4 ,名字分别是c1,c2, c3,c4,服务器和无盘工作站使用的都是NE2000 兼容网卡,无盘工作站使用的网卡上都安 装了BOOTROM 启动芯片,服务器操作系统安装的是 RedHat Linux 6.0 ,安装时选用定制安装,并安装了全部软件。
Linux的远程引导有两种方式,一是利用Bootp协议,有一个专门的项目EtherBoot 提供支持(http://www.slug.org.au/etherboot/),这种方式引导 Linux 的速度是最快的,但这种方式有一个最大的问题,就是在市场上找不到支持这种远程引导协议的 BOOTROM 启动 芯片(除非自己刻录),因为市场上几乎所有的 BOOTROM 启动芯片都是遵循NOVELL远程引导 协议的,于是有人提出另外一种方式,就是服务器端用 NetWare 服务器,客户端就可以用现 有的BOOTROM 启动芯片了,说到这里大家一定胡涂了,作Linux无盘工作站岂不是还一台 NetWare 服务器?不是的,因为神通广大的 Linux 可以模拟 NetWare 服务器,就象Samba 可以把 Linux 模拟成 NT 一样,mars_nwe 可以把 Linux 模拟成 NetWare,不仅能提供 NetWare 文件和打印服务,还能提供远程引导支持(知道Linux的厉害了吧),本文讲述的 Linux 无盘工作站就是用这种方式作远程引导的。
准备启动盘
由于在 Linux 下没有制作符合 NetWare 远程引导协议启动映象的工具,所以只能用早期的Win95提供的工具(遗憾)。找一台装有 Win95 的机器启动后按 F8 进入纯DOS方式,格式化一张启动盘 format a: /s ,然后将RedHat Linux安装光盘上 dosutils 目录下的 loadlin.exe复制到启动盘,在启动盘上作一个 autoexec.bat 文件,代码只有一行 loadlin.exe bzImage root=/dev/nfsroot从 Windows 95 安装光盘的 Win95 目录下的cab文件中解出 rplboot.sys 文件放在启动 盘上,命令如下:
extract.exe /a /l a:\ win95-27.cab rplboot.sys
一张用来做启动映象的启动盘就作好了,保存好启动盘,以后作启动映象时会用到它。
编译内核
用于无盘工作站的Linux内核与用于从本地硬盘引导的Linux内核是不同的,无盘工作站的内核必须支持NFS作为根文件系统,即远程根文件系统,所以必须编译无盘工作站专用的内核。笔者使用的内核代码版本是2.2.16,将内核源代码解压到/usr/src下, cd /usr/src/linux 进入内核子目录,执行命令make menuconfig 进行内核编译配置,下列项目必须按要求设置:
Processor type and features 该项目下面的选项必须根据无盘工作站的CPU类型设置,而不是根据服务器的CPU类型设置
Loadable mole support 该项目下面的所有选项都禁止,即不支持模块功能
Plug and Play support 设置为有效
Block devices 该项目下面的
Loopback device support
Network block device support
都设置为有效
Networking option 该项目下面的
kernel level autoconfiguration
DHCP support (NEW)
都设置为有效
Network device support 该项目下面的选项必须根据无盘工作站使用的网卡进 行设置,本例中使用的是NE2000兼容网卡,选项
Ethernet (10 or 100Mbit)
Other ISA cards
NE2000/NE1000 support (NEW)
都设置为有效
Filesystems 该项目下面的Network File Systems子项目下面的
NFS filesystem support
Root file system on NFS (NEW)
都设置为有效
以上设置完成后,退出内核编译设置程序,会出现一个对话框:Do you wish to save your new kernel configuration?
然后执行 make dep && make bzImage 进行内核编译,这个过程得花一点时间,特别是如果计算机的速度不快的话,花的时间会更长一些。编译内核如果没有错误,会得到内核映象文件/usr/src/linux/arch/i386/boot/bzImage ,将启动软盘插入计算机,执行下面的命令 mount -t vfat /dev/fd0 /mnt/floopy cp /usr/src/linux/arch/i386/boot/bzImage /mnt/floppy umount /dev/fd0
好了,启动盘上的文件都准备齐全了,等会儿用它到Win95环境下制作启动映象。
服务器设置
服务器端需要运行nfsd、dhcpd、mars_new等几个服务进程,这些软件在ReHat Linux 发行套件里都有,如果在安装 Linux 的时候选择全部安装,这些软件都会随着安装操作 系统而装好了,下面对这些软件进行设置,注意,下面的操作要以 root 身份进行。
1、 NFS 守护进程nfsd
首先要建立几个供无盘工作站使用的目录,并通过nfsd 导出,命令如下:
mkdir /tftpboot
然后编辑文件 /etc/hosts ,加入下面的内容
192.168.0.80 server server.domain
192.168.0.1 c1 c1.domain
192.168.0.2 c2 c2.domain
192.168.0.3 c3 c3.domain
192.168.0.4 c4 c4.domain
第一台工作站的工作目录设置方法如下:
mkdir /tftpboot/192.168.0.1
cd /tftpboot/192.168.0.1
c000p -a /bin .
cp -a /dev .
mknod dev/nd0 b 43 0
chmod 600 dev/nd0
cp -a /etc .
cp -a /home .
cp -a /lib .
rm -rf lib/moles
cp -a /root .
cp -a /sbin .
cp -a /var .
mkdir proc
mkdir usr
mkdir tmp
chmod 777 tmp
touch fastboot
chattr +i fastboot
cd etc
编辑文件 sysconfig/network-scripts/ifcfg-eth0
保留其中的
DEVICE=eth0
ONBOOT=yes
其余的行全部删除,然后增加一行
BOOTPROTO=dhcp
编辑文件 rc.d/rc.sysinit ,在文件最后加上两行
mount -t nfs server:/usr /usr
/usr/X11R6/bin/xfs
编辑文件 fstab
保留其中的
none /proc proc defaults 0 0
其余的行全部删除,然后增加一行
server:/tftpboot/192.168.0.1 / nfs defaults 1 1
其它工作站的工作目录设置方法就简单多了
cd /tftpboot
cp -a 192.168.0.1 192.168.0.2
cp -a 192.168.0.1 192.168.0.3
cp -a 192.168.0.1 192.168.0.4
编辑文件 /etc/exports ,加入以下内容
/usr (ro,no_root_squash)
/tftpboot/192.168.0.1 (rw,no_root_squash)
/tftpboot/192.168.0.2 (rw,no_root_squash)
/tftpboot/192.168.0.3 (rw,no_root_squash)
/tftpboot/192.168.0.4 (rw,no_root_squash)
2、动态主机配置协议服务器 dpchd
检查一下文件/etc/dhcpd.leases是否存在,若不存在就用命令touch /etc/dhcpd.leases 创建一个,然后编辑文件 /etc/dhcpd.conf ,加入以下内容
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.1 192.168.0.4;
}
3、NetWare 模拟器 marsw_nwe
编辑文件 /etc/nwserv.conf,找到下面的行
# 4 0x10 eth0 802.3 1
将该行开头的'#'去掉,再找到
4 0x0 * 802.3 1
在该行开头加上'#'
制作启动映象
进入Win95,将Win95(早期的版本,可以用服务器安装方式安装)安装光盘的admin\nettools\netsetup\rplimage.exe 复制到硬盘,将启动软盘插入软驱,然后在纯MSDOS方式下执行 rplimage a: 就会得到启动映象 net$dos.sys,再将启动映象 net$dos.sys 复制到启动盘上(如果启动盘空间不够,可以先删除启动盘上的一些文件以留出空间)。
启动 Linux 服务器,以 root 用户登录,将启动软盘插入软驱,执行下面的命令 mount -t vfat /dev/fd0 /mnt/floppy cp /mnt/floppy/net\$dos.sys /var/mars_nwe\sys\login umount /dev/fd0 然后执行 setup ,移动光棒至 System services 选项回车,出现 Services 设置画面,将dhcpd,nfs,mars-nwe 都设为有效,退出 setup 程序,执行以下的命令以启动上述服务进程:
/etc/rc.d/rc3.d/*mars-nwe restart
/etc/rc.d/rc3.d/*dhcpd restart
/etc/rc.d/rc3.d/*nfs restart
下一次再启动服务器时,上述服务进程会自动执行。
至此,所有的设置工作全部完成了,联好网络随便打开一台无盘工作站,稍等一下,出现远程引导的信息,接着会启动 Win95,接下来很快就会装载 Linux ,在一大堆 Linux 的启动信息之后如果看到 Linux 的登录提示,就说明远程启动成功了。
Linux 无盘工作站虽然运转起来了,但还有一个问题,就是交换的问题,因为Linux 是一个支持虚拟存储的操作系统,当机器内存不够时,Linux 就会把内存中暂时不用的数 据换出到交换设备上,等需要时再换回来,刚才我们没有设置交换区,在无盘工作站上用 free 命令就会发现交换区为零,如果无盘工作站内存较大,运行一些不大的程序,没有交换区还是可以的,但若运行大型程序就会出问题,下面介绍在服务器上设置交换区即远 程交换的方法。
对于2.1.101版以前的内核,要实现远程交换可有点费事,得从网络上下载有关的补丁来修改内核代码,然后再编译内核映象。从2.1.101版后的内核支持网络块设备,这样,实现远程交换就容易了。首先编译内核时要使 Network block device support 选项有效(刚才编译内核时就是这么作的),再从http://atrey.karlin.mff.cuni.cz/~pavel/nbd/nbd.html 下载实用程序 nbd.14.tar.gz ,执行下面的命令
tar zxvf nbd.14.tar.gz
cd nbd
./configure
make
编译完后会得到文件 nbd-server 和 nbd-client,将它们复制到 /usr/sbin 下面:
cp nbd-server nbd-client /usr/sbin
然后编辑文件 /etc/rc.d/rc.sysinit,在文件最后加上一行
/usr/sbin/nbd-server 7999 /tftpboot/%s/swap > /dev/null &
执行刚才的命令激活nbd服务:
/usr/sbin/nbd-server 7999 /tftpboot/%s/swap > /dev/null &
下一次服务器启动时,上述命令会自动执行。
再在服务器上每个工作站目录(/tftpboot/192.168.0.1,/tftpboot/192.168.0.2等等)下为各个无盘工作站建立交换文件,命令如下(本例中交换区大小为32M):
dd if=/dev/zero of=swap count=32768 bs=1024
mkswap swap
在每个工作站目录下文件 /etc/rc.d/rc.sysinit 的最后加上两行
/usr/sbin/nbd-client server 7999 /dev/nd0
swapon /dev/nd0
就这么简单,再打开无盘工作站试一试启动成功后登录系统,执行命令 free 就会看到在显示信息的最后有这样一行:
Swap: 32764 XX XXXX
这说明交换区设置成功了。
通过以上步骤,一个完整的 Linux 无盘工作站网络就作好了,Linux 无盘工作站的用法很灵活,既可以象使用普通有盘工作站一样使用,还可以把无盘工作站当成别的 Unix 主机的终端,特别是可以作为 X 终端,运行远程 Unix 主机上的 X 应用。
7、实战Linux无盘工作站
[文章导读]
本文将详细叙述一下建立linux无盘工作站的步骤。
[正文]
LINUX无盘工作站的建立,需要作客户端和服务器端两方面的工作,本文将详细叙述一下建立linux无盘工作站的步骤。
一.无盘工作站客户端
这部分的主要任务是做一个EPROM的启动文件,还包括一个处理Linux内核的工具mknbi-linux。有两个package:etherboot和netboot可供选用, etherboot对网卡型号有要求,支持的网卡种类不算很多,但对最常用的网卡如3c503/507/509/905b、NE1000/2000/PCIne2000、Intel eepro等基本上都能支持;Netboot可以用ndis或pktdrv,这些文件一般在随卡附带的驱动盘上都有,但这仅限于网络启动,对网卡的要求首先是Linux能识别。
以下步骤所述适用于etherboot;
1. 展开etherboot,进入src-32,编辑Config。有许多选项可以让你做多重启动、显示信息、询问口令之类的事情,这时你需要做的是用bootp代替dhcp,即在Config中定义-DNO_DHCP_SUPPORT设置。因为我们打算在服务器端用bootp,所以这是必须的,否则在启动时会因为未能寻找到dhcp server而启动不了。如果你准备在服务器端使用dhcp,那么这一步就不需要了。
2. make。对每种网卡都会生成两个文件 .rom和 .lzrom,后者是压缩过的。
3. 使用软盘启动验证所作的启动ROM没问题,假设你用的网卡是ne2000兼容的:
cat ../src/floppyload.bin ne.lzrom > /dev/fd0
如用软盘启动,系统能探测到你的网卡并发出bootp请求。如果一切OK,你就可以把ROM文件刻写到EPROM里了。
4. cd ../netboot*;make;make install。make如果出错,解决办法是把系统中的bcc改名,然后将gcc连接成bcc,再重新make。最后在系统中会增加一个程序mknbi-linux,这是用来处理linux内核的,在服务器端设置部分会讲它的用法。
客户端的工作完成了。
二、服务器端:
假设你的无盘工作站ip为10.0.0.1; 机器名为dc1.subnet.net,另一台无盘工作站ip为10.0.0.2,机器名为dc2.subnet.net, 服务器ip为10.0.0.254,名为server.subnet.net。
1. 修改/etc/hosts,增加dc1.subnet.net,dc2.subnet.net
2. 取得bootp-2.x.x,展开后注意把带的各种patch都打上。然后make; make install
3. 建立/etc/bootptab,如下:
global.prof:
:sm=255.255.255.0:
:bf=/tftpboot/vmlinuz.nb:
dc1:tc=global.prof:ha=0000c0863d7a:ip=10.0.0.1:
dc2:tc=global.prof:ha=0800110244e1:ip=10.0.0.2:
ha用无盘工作站网卡的MAC地址代替。
4. 修改inetd.conf,去掉bootpd和tftpd的#号,如下:
tftp dgram udp wait root /usr/sbin/tcpd tftpd –s /tftpboot
bootps dgram udp wait root /usr/sbin/tcpd bootpd -i
kill –HUP `cat /var/run/inetd.pif`
5. 建立/tftpboot/10.0.0.1,cd /tftpboot/10.0.0.1,
(cd /; tar cpf – lib sbin bin var etc dev)| tar xpf –
mkdir usr; mkdir tmp; chmod 1777 tmp; mkdir home;mkdir root; makdir
proc; mkdir mnt
6. touch fastboot; chattr +i fastboot
(fstab 中 / 和 /usr 的最后一项设成0,也许不需要这一步了,但我没试过)
以下是一个shell script,可用于自动执行以上操作。
#!/bin/sh
if [ $# != 1 ]
then
echo Usage: $0 client-IP-addr
exit 1
fi
cd /
umask 022
mkdir -p /tftpboot/$1
# just make these ones
for d in home mnt proc tmp usr
do
mkdir /tftpboot/$1/$d
done
chmod 1777 /tftpboot/$1/tmp
touch /tftpboot/$1/fastboot
chattr +i /tftpboot/$1/fastboot
# these ones
(cd /; tar cpf - bin lib sbin dev etc var) | (cd /tftpboot/$1; tar xpf -)
7. 删除var下一切不需要的东西, 减小空间。删除lib/moles下一切不需要的模块。
8. 修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,
etc/fstab,etc/conf.mole
fstab中指明root在服务器server上,like this
server:/tftpboot/10.0.0.1 / nfs default 0 0
server:/usr /usr nfs default 0 0
9. 配置etc/rc.d/rc3.d,关掉一切不需要的网络服务。
10. 删除etc/rc.d/rc6.d/K??network。
11. 修改etc/rc.d/rc.sysinit,寻找“mount –a –t nonfs,smbfs…"改成
“mount.–a –t nosmbfs…"
12. mkdir /tftpboot/10.0.0.2; cd /tftpboot/10.0.0.2;
13. 修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,
etc/fstab,etc/conf.mole
14. cd /etc; vi exports;
/usr dc*.subnet.net(ro)
/tftpboot/10.0.0.1 dc1.subnet.net(rw,no_root_squash)
/tftpboot/10.0.0.2 dc2.subnet.net(rw,no_root_squash)
exportfs –a
15. 编译一个新内核,必须包含以下特性:
NFS filesystem 支持
Root on NFS 支持
Bootp 支持
无盘工作站所用的网卡型号支持
编译出新内核之后,用mknbi-linux处理,
mknbi-linux bzImage vmlinuz.nb
将vmlinuz.nb放在/tftpboot下即可。
至此,服务器端的工作就完成了。
注意事项:
1. 如果你打算在服务器端用dhcp,需要自己配置,参看dhcp的文档。
2. Rh6.1自带一个bootparamd,也应该能完成同样的工作,但在manual中语焉不详,不知该如何设置。
3. 服务器端 / 和 /usr 最好单独分区。
4. etherboot的文档上说对有些网卡比如PCI NE2000兼容网卡,可能需要调整Makefile中的vendor信息和ID信息,我还未试过。
启动你的无盘工作站,如一切操作无误的话,工作站则应该能启动起来。启动过程中如果有一些地方不顺利,可以在启动之后对无盘工作站上按一般方法进行设置。
希望以上的讲述能给读者有所帮助和启迪!
8、Linux无盘工作站架设实例
后面还有实例你自己看吧!