简析Suse Linux的xinetd服务

引言

xinetd服务是Unix操作系统一项比较特殊的服务,因为它本身可以负责其他一些网络服务的启动、停止、记录。Xinetd的全称是 eXtended InterNET services daemon,经常用来管理多种轻量级Internet 服务,如telnet、 talk、 pop3、 imap 等,有时也用来管理Apache 和ftp服务。Xinetd 可以在Linux、FreeBSD、Solaris等多种Unix操作系统上使用。下面就以Suse Linux 为例,分析一下xinetd服务的特点。本文所使用的 Suse Linux系统版本是Suse Enterprise Server 9,内核版本号是2 6 5-7 97-smp。Xinetd有点像windows操作系统中的Internet服务管理器,但是比windows的 Internet服务管理器管理的服务更多,而且功能更强大。Xinetd可以为管理的进程记录日志,还可以结合tcp_wrapper对管理的服务进行 安全保护。

1 xinetd的启动

xinetd程序位于/etc/init d目录下,程序的名称是xinetd。启动方 式有两种:一种是改变工作目录至/etc/init d目录下,在shell提示符后键入 /xinetd start;另外一种是键入xinetd的绝对路径以及程序名和启动参数,/etc/init d/xinetd start。如果为了实现开机自启动,可以参照以下方式创建启动链接。Xinetd服务在Suse Linux 中运行级别3中运行,所以在/etc/rc d/rc3 d中创建启动链接。可以使用chkconfig -l命令察看xientd服务在哪个运行级别中运行。

# cd /etc/rc d/rc3 d
# ln -s /etc/init d/xinetd S19xinetd
# ln -s /etc/init d/xinetd K03xinetd

2 xinetd的配置

xinetd的配置文件为/etc/xinetd conf,配置行如下:

defaults
{
log_type = FILE /var/log/xinetd log
log_on_success = HOST EXIT DURATION
log_on_failure = HOST ATTEMPT
# only_from = localhost
instances = 30
cps = 50 10
}

log_type的含义是指定服务log记录方式,File的含义是以普通文件记录日志,日志的文件名为xinetd log,位于/var/log目录下。
Log_on_success 指定当一个服务启动、退出期间那些信息被记录。
Host 记录远程主机IP地址。
Exit 记录一个服务推出的信息。
Duration 记录一个服务持续的时间。
Log_on_failure 指定当一个服务不能启动时哪些信息被记录。
Host 记录远程主机IP地址。
Attempt 记录一次失败的尝试。
instances指定对于一个服务最多同时可以活动的进程数目,默认是没有限制。这个参数的数值可以是一个具体的整数,也可以是unlimited,没有限制。
Cps 限定连接的比率,需要有两个值。第一个值是每秒钟可以处理的连接数目,如果系统每秒钟建立的连接数目超过这个值,那么这项服务就会停止。第二个数值指定当 服务停止后,多长时间间隔后,这项服务重新启动。第一个值50表示对于一项服务,每秒最多可以建立50个连接,如果每秒钟建立的连接数超过50,那么这项 服务就会停止。第二个值表示服务在停止后 ,间隔10 秒后启动。
includedir /etc/xinetd d 指定一个目录,这个目录下的所有文件都被看作xinetd的配置文件,但是排出以“ ”开头的文件,或者以“~”结尾的文件。

3 具体服务的配置

由xinetd服务启动与管理的服务,其对应的配置文件存放在/etc/xinetd d目录下,下面就以telnet服务和vsftp服务为例,分析一下xinetd如何启动和管理这些服务。

telnet服务对应的文件名是telnet,位于/etc/xinetd d目录下,文件内容如下:
service telnet
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in telnetd
disable = no
}

Socket_type表示服务的数据包类型,其中,Stream表示服务的数据包类型。
Protocol表示服务的协议, tcp表示的是服务的协议是TCP协议。
Wait的值有两个,其中,no表示服务是多线程的,yes表示服务是单线程的。
Server的值是启动服务的程 序。
Disable的值为两个,no 表示这项服务由xinetd启动,yes表示这项服务不由xinetd启动。

这个配置文件就能goy保证xinetd服务启动时,就把telnet服务启 动。

Vsftp服务对应的文件名是vsftp,位于/etc/xinetd d目录下,内容如下:

service ftp
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/vsftpd
disable = yes
}

在vsftp配置文件中,disable选项的值是yes,表示vsftp服务不由xientd启动。Vsftp服务有两种启动模式,一种是 standlone模式,一种是xinetd模式。简单解释一下, standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此,经常应用于对实时反应要求较高 的专业FTP服务器。xinetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此,不适合应用在同时连接数量较多的系统。此 外,xinetd模式不占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd还提供了一些额外的高级功能,如xinetd模式支持 per_IP(单一IP)限制,而 standalone模式则更有利于PAM验证功能的应用。

如果需要采用standalone模式启 动,只需要在/etc/vsftpd conf加入一行listen=yes即可。Vsftp服务只能采用一种模式启动,如果采用standalone模 式启动,那么xinetd模式启动就需要禁用,所以在/etc/xinetd d 中的vsftp文件中的disable的值是yes。如果是no,在系统启动后,vsftp服务就会无法启动。

Xinetd对于由xinetd启动的服务,其服务的活动记录在日志文件xinetd log中,位于/var/log目录下。

4 结语

Linux操作系统是作为现在主流的服务系统,因为其内核精简,运行稳定而在很多方面获得应用。Xinetd服务是Linux操作系统一项重要的服务, 对于系统很多服务都有启动、停止、管理的作用。随着Linux操作系统的使用,对xinetd这项服务的各种特性理解会越来越深。


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。