服务perl教程

perl教程  时间:2021-04-05  阅读:()
版权所有IBM公司2001商标功能丰富的Perl:将xinetd程序用于系统管理第1页,共8功能丰富的Perl:将xinetd程序用于系统管理inetd程序了不起的替代TeodorZlatanov(tzz@iglou.
com)程序员GoldSoftwareSystems2001年11月01日每个UNIX管理员都熟悉inetd,inetd是一个守护程序,通过一个集中的配置文件(inetd.
conf)来管理大多数入网连接.
xinetd守护程序是inetd的替代,它提供许多改进的或新的特性,以及更容易的配置.
Ted解释了inetd背后的概念,并且给出了在您自己的站点上设置xinetd的示例.
经典的inetd守护程序已经存在很久了.
有几种替换inetd的功能的方法,但是最灵活、最简便的方法似乎是xinetd.
inetd能做的,xinetd也能做,并且xinetd还能做更多的事情.
譬如,TCP封装、模块化配置、连接重定向和入站连接的负载限制,而这些只是使得xinetd成为系统管理员良好选择的部分特性.
本文是为从初学者到中级系统管理员这样的读者而准备的,并且文中的说明和示例并不尝试假设您已经熟悉inetd.
在本文中,我们将研究xinetd的一些简单用法,从安装到安全性策略的实现.
开始之前为实现本文的目的,您的系统最好安装了最近的主流(2000或更新)UNIX(Linux、Solaris、BSD).
这些示例在Perl和UNIX(以及其它操作系统)的早期版本上也可以运行,但是它们功能方面的障碍应该由读者作为练习来解决.
给定的特定示例是用于RedHatLinux的,但是它们在其它系统上应该也可以运行(除chkconfig以外).
inetd到底是什么对于UNIX系统管理员,inetd和cp/rm/mv命令一样基本.
它总是存在,并准备着处理入站连接.
但它到底是什么它用来做什么首先从TCP/IP(它也包括UDP,但我们目前还不考虑)开始回答.
当您建立与一台主机的连接时,实际上是创建了一个TCP/IP连接(通常是一个套接字)―这好象是在您和主机之间打了一个电话.
TCP/IP连接由起始主机和接收主机唯一地定义,但还有其它标识.
如果我们都连接到一台服务器,它如何区分webserver、telnet、SSH、FTP和其它连接呢套接字也通过建立连接所使用的端口developerWorksibm.
com/developerWorks/cn/功能丰富的Perl:将xinetd程序用于系统管理第2页,共8来定义.
例如,端口21是入站FTP、端口22是SSH、端口23是TELNET(有关其它大多数端口,可以查看UNIX系统上的/etc/services).
一旦建立了连接,某人就在另一端拿起了电话.
这可以是接线员或直线.
直线表示您直接连接到了服务器,而接线员是涉及inetd的方法.
接线员实际上处理一组入站直线(主机上的端口),并亲自将它们交给负责的程序(服务器).
UDP是另一种连接方法.
象TCP一样,UDP基本上是和某人的对话,但是不保证它是可靠的.
UDP(继续使用电话的比喻)就象将消息扔到传送带上,让接收者站到另一端.
您可以从传送带得到许多消息,但是如果消息太多(网络流量高)或者读取消息费时太久(服务器忙),则接收者可能会丢失一些消息.
如果使用inetd,在执行一些检查后,您被重定向到特定服务器.
只有一个配置文件―inetd.
conf,管理所有入站连接.
因而在系统上添加、删除、更改或复查服务变得更为简单.
例如,在Solaris系统上使用TCP封装器将ftp定义如下:清单1,FTP服务的inetd.
conf定义ftpstreamtcpnowaitroot/usr/sbin/tcpdin.
ftpd这些是创建一个FTP连接所需的全部参数.
简单地说,我们以面向流(stream)的方式使用TCP/IP(tcp)时,同时允许多个FTP连接(nowait)、作为root运行以及调用FTP(接下来,TCP封装器将调用FTP守护程序).
用一上午的时间解析很困难吗绝对困难.
有必要这么复杂吗不.
xinetd继承了inetd的设计并将它模块化,这意味着每个服务都可以存在于它自己的配置文件中.
xinetd还添加了一些象TCP封装器之类的功能部件,使得配置更加简单.
xinetd保持了中央配置(接线员)方法,将所有配置文件存储到单一位置,通常是/etc/xinetd.
conf和/etc/xinetd.
d/*,使系统管理员可以更容易地获得.
模块化配置意味着,您可以通过将服务复制到xinetd.
d目录来向多台机器上分发该服务,也可以用同类的手段除去它.
甚至可以指定额外的包含目录.
最后,xinetdFAQ(请参阅本文后面的参考资料)声明了RPC程序在xinetd下运行得不太好.
不过没问题,对RPC使用inetd,并对其它所有服务使用xinetd.
这就象雇了两个接线员,一个说西班牙语,另一个说所有其它语言.
xinetd简介那么xinetd是什么一句话,它就是个程序.
处理入站网络连接没什么神奇.
可以使用Perl、Python或Java来处理.
Xinetd是用C编写的,而且它和它的前辈inetd一样快,如果不是更快的话(例如,TCP封装器不必为每个入站连接而执行;它们在启动时装入内存).
xinetd正在开发中.
(您的版本可能过时了,所以请务必到主页上查找最新的版本;请参阅参考资料.
)因为它正在开发中,所以xinetd的安全漏洞得以迅速弥补,而不象inetd那样薄弱,通常要很长时间才能弥补.
当然,xinetd是随源代码一起交付的,所以您可以复查源代码并自己找到可能存在弱点的地方.
ibm.
com/developerWorks/cn/developerWorks功能丰富的Perl:将xinetd程序用于系统管理第3页,共8如何使用xinetd定义服务呢编写一个服务文件,它除了指定/etc/xinetd.
conf中所指定的一般参数之外,还指定特定配置.
所以,如果/etc/xinetd.
conf是这样的:清单2,样本xinetd.
conf(标准的RedHat7.
1)defaults{instances=60log_type=SYSLOGauthprivlog_on_success=HOSTPIDlog_on_failure=HOSTcps=2530}servicetelnet{flags=REUSEsocket_type=streamwait=nouser=rootserver=/usr/sbin/in.
telnetdlog_on_failure+=USERIDdisable=yes}includedir/etc/xinetd.
d您放到/etc/xinetd.
d中的每个服务文件都会继承这些缺省值,并指定它自己的参数.
这里,telnet服务在顶级定义,而不是在子目录中定义.
这太棒了,这种模块性允许复杂的配置.
要使xinetd重新读取配置文件,不必重新启动它.
只要向它发送USR2信号即可.
那些参数表示什么意思让我们通读整个清单.
您也可以在命令行下使用manxinetd.
conf来查看列表(如果那个帮助页面正确安装的话),但这个概述试图用更简单的术语来解释参数,并不假定您已经知道关于套接字和服务的所有信息.
一些参数(rpc_version、rpc_number)被跳过.
常规参数id该服务的唯一名称.
服务名称在花括号之前指定,但是ID使逻辑上相同的服务可能拥有多个协议.
这是对于临时用户的受限使用.
例如,NFS服务可以在UDP或TCP传输协议上运行.
在RedHatLinux7.
1上,TCP版本(在/etc/xinetd.
d/time中)和UDP版本(在/etc/xinetd.
d/time-udp中)中提供了对于xinetd来说内部的时间服务.
type这实际上应该称为"特殊类型",因为它只适用于特殊服务.
它可以是以下几种类型的组合:"RPC",用于RPC服务(由SUN引入的远程过程调用,导致了很多安全性问题,最好避免使用);"INTERNAL",用于构建到xinetd内部的服务,譬如时间服务;"UNLISTED",用于在系统列表(/etc/services或用于RPC服务的/etc/rpc)中找不到的非标准服务.
flags这里放置着所有额外标志.
列表很长并且技术性很强;我们感兴趣的标志包括REUSE(用于套接字重用,譬如telnet)、NAMEINARGS/NOLIBWRAP(如果您希望手工调用TCP封装器或者完全地避免使用封装器)、NODELAY/KEEPALIVE(用于调整TCP套接字)、DISABLE(覆盖顶级"disable"参数)以及SENSOR(用于检测和防止某些类型的"拒绝服务(denial-of-service)"网络攻击).
developerWorksibm.
com/developerWorks/cn/功能丰富的Perl:将xinetd程序用于系统管理第4页,共8disable除非您希望禁用某项服务,否则总是把它设成"no".
RedHatLinux的chkconfig程序将为您打开或关闭"disable"参数;在RedHat上,用chkconfig启用和禁用特定服务可能比手工方式简单些.
请注意,chkconfig预期在/etc/xinetd.
d/SERVICE中找到服务文件.
所以对于上面清单2中的示例,chkconfig将不会在请求时打开或关闭telnet.
可以将它认为是一个错误或特性,取决于您的观点.
socket_type通常您希望这个参数设置成"stream",除非使用UDP服务,此时设置成"dgram".
该参数也可以设置成"raw"和"seqpacket",但极少见.
protocol这是连接所用的协议,通常是"tcp"或"udp",但是在理论上您可以使用来自/etc/protocols的任何值.
wait如果设置成"no",xinetd将为每个连接上的服务启动一个新的处理程序.
如果是"yes",xinetd预期该处理程序处理所有后续连接直到它死亡.
在大多数情况下,这个参数是"no".
server,server_args处理程序的程序名,以及它应当获得的参数.
处理程序名不应该象在inetd环境下那样,出现在参数中.
port服务的端口.
通常不需要,因为端口通过/etc/services文件来映射到服务.
redirect允许xinetd将所有服务的流量发送给另一台主机.
因此,受防火墙保护的主机可以通过中央xinetd转发器接受安全流量,而不必建立与外部网络的连接.
在某些工作中,可以采用这个特征来在两台主机间执行故障转移服务.
banner,banner_success,banner_fail一个将要在"任意/一个成功/一个不成功"连接上打印的来自文件的定制文本块.
enabled在全局级别上补充"disabled"参数和DISABLE标志.
include,includedir告诉xinetd要包含文件或目录.
环境参数user,group,umask,groups当启动服务处理程序时,xinetd应该扮演的UNIX属性.
这主要用于非安全服务.
nice确定该服务对于系统有多重要的UNIX优先级级别.
可以针对您的系统调整它,请查看"nice"的man页面.
env用于服务处理程序的环境变量.
passenv应该向下传递到服务处理程序的xinetd中的环境变量.
资源管理参数instances可以同时启动的处理程序数.
可以调整这个参数以防止拒绝服务攻击.
如果您希望缺省(无限制)行为,将它设置成"UNLIMITED".
ibm.
com/developerWorks/cn/developerWorks功能丰富的Perl:将xinetd程序用于系统管理第5页,共8max_loadI:)如果系统过载,停止接受连接.
负载数取决于系统,仅当您确实知道自己在做什么时才能调整它.
rlimit_as,rlmist_cpu,rlimit_data,rlimit_rss,rlimit_stackrlimit参数指定用于服务处理程序的资源限制(内存、CPU以及特定内存区域).
特定于安全性的参数only_from,no_access对TCP封装器的补充,这是阻挡主机建立与我们的连接的方法之一.
请注意,缺省值是允许对任何人的访问,除非TCP封装器(其规则通常在/etc/hosts.
allow中)另有规定.
access_times一天中服务可用的时间.
例如,"6:00-23:00"意味着服务从上午6点到晚上11:01可用.
log_type,log_on_success,log_on_failure各种日志记录选项.
USERID标志可能特别麻烦,因为它向连接的主机询问关于与我们连接的用户,这使得处理变慢.
尽可能避免使用USERID.
bind允许服务特定于接口,通常是出于安全性考虑.
例如,在网络内部的FTP服务只是FTP,而外部FTP连接将生成入侵者警报.
"id"参数在这里很有用.
per_source指定来自源IP的服务的最大实例数.
对于处理"单源拒绝服务(single-sourcedenial-of-service)"攻击或出错程序建立的过多连接非常有用.
cps每秒允许的最大连接数,以及服务再度启用之前的秒数.
"3045"表示"每秒30个入站连接,如果超过限制,则等待45秒".
主要用于对付拒绝服务攻击.
deny_time对引发SENSOR标志的人拒绝服务的时间.
替换TCP封装器经典的TCP封装器软件包是个非常有用的工具.
通过一个集中式的文件(通常是/etc/hosts.
allow和/etc/hosts.
deny),针对每个服务,根据需要来允许或拒绝对任何主机的访问.
不幸的是,TCP封装器库不太了解系统负载、资源限制、多重攻击之类的情况.
xinetd合并了TCP封装器功能性(通过libwrap库),所以您可以顺利地迁移到xinted,并继续使用和以前相同的配置文件.
这差不多就是迁移所要做的全部工作了.
保持旧的hosts.
deny和hosts.
allow文件,xinetd将乐意遵循它们.
但是,请牢记,xinetd有许多在TCP封装器基础上改进的连接控制选项.
例如,限制每秒连接数或过载时的连接数,可以成为对服务器管理极有价值的帮助.
确保您是使用libwrap选项编译xinetd的,否则,它将不知道TCP封装器.
如果xinetd来自于RedHatLinux上的RPM,确保您在开放机器"之前",测试TCP封装器文件是否正常运行.
高级用途:故障转移尽管可以有多种方法使用xinetd,redirect参数为我们提供了最有趣的使用方法.
众所周知,故障转移很难实现,并且硬件故障转移很昂贵.
这里所描述的方法(通过简单的软件)既便宜又有效.
它具有单故障点―重定向点,所以您应该考虑该方式是否可接受.
如果不能接受,那么,硬件故障转移就贵得有道理了.
developerWorksibm.
com/developerWorks/cn/功能丰富的Perl:将xinetd程序用于系统管理第6页,共8首先,确定一种方法从两台或者更多的机器中选出一台"活动的"机器.
假设您通过一个脚本set_active.
pl来完成(我们将为telnet服务完成该步,但是它对任何其他服务也有效,只要能保持服务切换到其他服务器而不带来不良影响).
脚本将采用我们用来设置新故障转移的机器名,以及给我们适当的用于编辑的/etc/xinetd.
d/SERVICE文件的服务名.
请随意定制脚本以编辑不同文件,或使用不同参数.
可以用一行"perl-p-i-e"脚本执行这个作业,但您可以在将来对这种方法作许多扩展,并可以对参数执行错误检查.
这太简单了.
现在只要决定调用这个脚本的过程即可―可以是手工、通过一个cron作业、或者由另一个程序触发.
此时,它成为体系结构决策.
别忘了在这时向xinetd发送USR2信号,如果愿意,也可以重新启动它.
在RedHatLinux上可以用"pkill-USR2xinetd"完成信号的自动化,而重新启动xinetd只要使用"/etc/rc.
d/init.
d/xinetdrestart"(在Linux上)或者其它类似命令(在大多数UNIX系统上).
这种故障转移将"不会"对数据库连通性生效,除非在数据库端做许多额外工作.
建议您最好将它用于诸如rsync、ssh、ftp和telnet之类的协议,其中,故障转移机器彼此没有相互依赖性.
结束语很清楚,xinetd所提供的众多特性是选择它的一个好理由.
但是,请不要忘记xinetd的其它好处:错误一经报告就得到修正、源代码免费可用以及从现有的inetd配置进行迁移(当您使用随xinetd一起交付的itox助手程序时)非常容易.
为什么不使用xinetd向后兼容性将成为您最好的理由,还有与您的特定平台的非兼容性.
xinetd软件在Solaris和Linux服务器上最流行,所以在您的特定平台上可能会有尚未解决的问题.
ibm.
com/developerWorks/cn/developerWorks功能丰富的Perl:将xinetd程序用于系统管理第7页,共8参考资料您可以参阅本文在developerWorks全球站点上的英文原文.
获得Perl脚本来从两台或者更多的机器中选出一台"活动的"机器:set_active.
pl.
请查看xinetd主页.
xinetdFAQ回答了许多问题.
请阅读FredericRaynal的关于xinetd的文章.
获得MacSecurity.
org的xinetd教程.
请阅读developerWorks上"功能丰富的Perl"系列中Teodor的其它Perl文章:Aprogrammer'sLinux-orientedsetupApplicationconfigurationwithPerlAutomatingUNIXsystemadministrationwithPerlDebuggingPerlwitheaseTheeleganceofJAPHGeneticalgorithmsappliedwithPerlOne-liners101ParsingwithPerlmodulesPerl5.
6forCandJavaprogrammersReadingandwritingExcelfileswithPerlReviewofProgrammingPerl,ThirdEdition请浏览developerWorks上的更多Linux参考资料.
请浏览developerWorks上的更多开放源码参考资料.
developerWorksibm.
com/developerWorks/cn/功能丰富的Perl:将xinetd程序用于系统管理第8页,共8关于作者TeodorZlatanovTeodorZlatanov,1999年毕业于波士顿大学(BostonUniversity),获计算机工程硕士学位.
他从1992年以来一直担任程序员,使用Perl、Java、C和C++语言.
他的兴趣是用于文本解析的开放源码、三层客户机服务器数据库体系结构、UNIX系统管理、COBRA和项目管理.
通过tzz@iglou.
com与Teodor联系.
版权所有IBM公司2001(www.
ibm.
com/legal/copytrade.
shtml)商标(www.
ibm.
com/developerworks/cn/ibm/trademarks/)

UCloud云服务器低至年59元

最近我们是不是在讨论较多的是关于K12教育的问题,培训机构由于资本的介入确实让家长更为焦虑,对于这样的整改我们还是很支持的。实际上,在云服务器市场中,我们也看到内卷和资本的力量,各大云服务商竞争也是相当激烈,更不用说个人和小公司服务商日子确实不好过。今天有看到UCloud发布的夏季促销活动,直接提前和双十一保价挂钩。这就是说,人家直接在暑假的时候就上线双十一的活动。早年的双十一活动会提前一周到十天...

LiCloud:香港CMI/香港CN2+BGP服务器,30Mbps,$39.99/月;香港KVM VPS仅$6.99/月

licloud怎么样?licloud目前提供香港cmi服务器及香港CN2+BGP服务器/E3-1230v2/16GB内存/240GB SSD硬盘/不限流量/30Mbps带宽,$39.99/月。licloud 成立於2021年,是香港LiCloud Limited(CR No.3013909)旗下的品牌,主要提供香港kvm vps,分为精简网络和高级网络A、高级网络B,现在精简网络和高级网络A。现在...

hosteons:10Gbps带宽,免费Windows授权,自定义上传ISO,VPS低至$21/年,可选洛杉矶达拉斯纽约

hosteons当前对美国洛杉矶、达拉斯、纽约数据中心的VPS进行特别的促销活动:(1)免费从1Gbps升级到10Gbps带宽,(2)Free Blesta License授权,(3)Windows server 2019授权,要求从2G内存起,而且是年付。 官方网站:https://www.hosteons.com 使用优惠码:zhujicepingEDDB10G,可以获得: 免费升级10...

perl教程为你推荐
网易网盘关闭入口网易网盘怎么用????18comic.fun18岁以后男孩最喜欢的网站比肩工场大运比肩主事,运行长生地是什么意思?百度关键词价格查询百度关键字如何设定竟价价格?www.haole012.comhttp://fj.qq.com/news/wm/wm012.htm 这个链接的视频的 第3分20秒开始的 背景音乐 是什么?8090lu.com8090向前冲电影 8090向前冲清晰版 8090向前冲在线观看 8090向前冲播放 8090向前冲视频下载地址??www.vtigu.com如图所示的RT三角形ABC中,角B=90°(初三二次根式)30 如图所示的RT三角形ABC中,角B=90°,点p从点B开始沿BA边以1厘米每秒的速度向A移动;同时,点Q也从点B开始沿BC边以2厘米每秒的速度向点C移动。问:几秒后三角形PBQ的面积为35平方厘米?PQ的距离是多少kb123.netwww.zhmmjyw.net百度收录慢?javlibrary.comsony home network library官方下载地址sodu.tw今天sodu.org为什么打不开了?
我的世界服务器租用 vps侦探 最便宜虚拟主机 万网免费域名 万网域名证书查询 互联网域名管理办法 t牌 hawkhost优惠码 cpanel kddi tightvnc 免费静态空间 ibrs 南昌服务器托管 创梦 亚马逊香港官网 智能dns解析 免费蓝钻 国内空间 apnic 更多