文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>xinetd配置实例

xinetd配置实例

时间:2006-08-03  来源:lnycm

配置实例
1. defaults配置

【范例1】/etc/xinetd.conf

# Simple configuration file for xinetd

# Some defaults, and include /etc/xinetd.d/

 

defaults

{

instances               = 60

log_type                = SYSLOG authpriv

log_on_success          = HOST PID

log_on_failure             = HOST

cps                = 25 30

}

includedir /etc/xinetd.d

 解读:RedHat 7.x建议的配置方法不是将所有服务项都写在一个文件里面,/etc/xinetd.conf是作为默认配置文件用的,/etc/xinetd.d目录下面的每个文件对应一个服务。前面说过,默认项的设置是作用于所有服务的,由此可以看出上面的对所有服务都是设置了60个实例、设置的日志方式为SYSLOG authpriv,登陆成功时记录HOST和PID,失败时仅记录HOST,

每秒最多处理25个连接,如果超过这个数目的连接则等待30秒后继续处理。Includedir指令指定了配置文件的目录是/etc/xinetd.d

 2.telnet的配置 

【范例1】/etc/xinetd.d/telnet

# default: on

# description: The telnet server serves telnet sessions; it uses \

#     unencrypted username/password pairs for authentication.

service telnet

{

       disable   = no

       flags       = REUSE

       socket_type  = stream       

       wait        = no

       user              = root

       instances      = 10

       server           = /usr/sbin/in.telnetd

       log_on_failure      += USERID

       rlimit_as = 8M

       rlimit_cpu=20

}

解读:

1、 instances的设置覆盖了defaults项的设置;

2、 log_on_failure属性在defaults项的基础上加上了USERID。

3、 对TELNET服务设置了资源限制,最多可用内存为8M,CPU每秒处理20个进程。

3 .echo的配置 

【范例3.1】/etc/xinetd.d/echo

# default: off

# description: An echo server. This is the tcp \

# version.

service echo

{

       disable   = yes

       type              = INTERNAL

       id           = echo-stream

       socket_type  = stream

       protocol = tcp

       user              = root

       wait        = no

}

 

【范例3.2】/etc/xinetd.d/echo-udp

# default: off

# description: An echo server. This is the udp \

# version.

service echo

{

       disable   = yes

       type              = INTERNAL UNLISTED

       id           = echo-dgram

       socket_type  = dgram

       protocol = udp

       user              = root

       wait        = yes

       port        = 7

}

解读:由于它们的服务名相同,只是socket类型不同,所以,使用id属性来区分。
4. RPC类服务例子 

【范例4】/etc/xinetd.d/rstatd

service rstatd

{

       type              = RPC

       socket_type  = dgram

       protocol = udp

       server    = /usr/etc/rpc.rstatd

       wait        = yes

       user              = root

       rpc_version   = 2-4

       env =LD_LIBRARY_PATH=/etc/securelib

}

 

 

5. 自定义的服务配置范例 

【范例4】/etc/xinetd.d/sample

service sample

{

       type              = UNLISTED

       socket_type  = stream

       protocol = tcp

       server    = /usr/bin/sample

       port        =20020

}

 

xinetd进程


1 启动与中止:

如果你使用的是7.x 的默认安装:

/etc/rc.d/init.d/xinetd start

/etc/rc.d/init.d/xinetd stop

/etc/rc.d/init.d/xinetd restart

/etc/rc.d/init.d/xinetd reload

或者

/sbin/service xinetd start

/sbin/service xinetd stop

/sbin/service xinetd restart

/sbin/service xinetd reload

 

如果你使用的是6.x上的自行编译安装:

 

你需要自行建立xinetd启动脚本:

touch /var/run/xinetd.pid

touch /var/lock/subsys/xinetd

chmod 755 /etc/rc.d/init.d/xinetd

 

你可以用下面的命令来控制进程:

/etc/rc.d/init.d/xinetd start

/etc/rc.d/init.d/xinetd stop

/etc/rc.d/init.d/xinetd restart

/etc/rc.d/init.d/xinetd reload

 

vi /etc/rc.d/init.d/xinetd

##文件内容如下: 

/etc/rc.d/init.d/xinetd文件内容

#!/bin/bash

 

#

 

# xinetd        This starts and stops xinetd.

 

#

 

# chkconfig: 345 56 50

 

# description: xinetd is a powerful replacement for inetd. \

 

#                                 xinetd has access control machanisms, extensive \

 

#              logging capabilities, the ability to make services \

 

#              available based on time, and can place \

 

#              limits on the number of servers that can be started, \

 

#              among other things.

 

#

 

# processname: /usr/sbin/xinetd

 

# config: /etc/sysconfig/network

 

# config: /etc/xinetd.conf

 

# pidfile: /var/run/xinetd.pid

 

prog="xinetd"

 

PATH=/sbin:/bin:/usr/bin:/usr/sbin

 

# Source function library.

 

. /etc/rc.d/init.d/functions

 

# Get config.

 

test -f /etc/sysconfig/network && . /etc/sysconfig/network

 

# Check that networking is up.

 

[ ${NETWORKING} = "yes" ] || exit 0

 

[ -f /usr/sbin/xinetd ] || exit 1

 

[ -f /etc/xinetd.conf ] || exit 1

 

RETVAL=0

 

start(){

 

    echo -n $"Starting $prog: "

 

    # Need to get rid of localization for external services -

 

    # it doesn't make much sense to have i18n on the server side here

 

    LANG=en_US

 

    LC_TIME=en_US

 

    LC_ALL=en_US

 

    LC_MESSAGES=en_US

 

    LC_NUMERIC=en_US

 

    LC_MONETARY=en_US

 

    LC_COLLATE=en_US

 

    export LANG LC_TIME LC_ALL LC_MESSAGES LC_NUMERIC LC_MONETARY LC_COLLATE

 

    unset HOME MAIL USER USERNAME

 

    daemon xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid

 

    RETVAL=$?

 

    echo

 

    touch /var/lock/subsys/xinetd

 

    return $RETVAL

 

}

 

stop(){

 

    echo -n $"Stopping $prog: "

 

    killproc xinetd

 

    RETVAL=$?

 

    echo

 

    rm -f /var/lock/subsys/xinetd

 

    return $RETVAL

 

}

 

reload(){

 

    echo -n $"Reloading configuration: "

 

    killproc xinetd -USR2

 

    RETVAL=$?

 

    echo

 

    return $RETVAL

 

}

 

restart(){

 

    stop

 

    start

 

}

 

condrestart(){

 

    [ -e /var/lock/subsys/xinetd ] && restart

 

    return 0

 

}

 

# See how we were called.

 

case "$1" in

 

    start)

                            start

                            ;;

 

    stop)

                            stop

                            ;;

 

    status)

                            status xinetd

                            ;;

 

    restart)

                            restart

                            ;;

 

    reload)

                            reload

                            ;;

    condrestart)

 

                            condrestart

                            ;;

    *)

 

                            echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"

 

                            RETVAL=1

 

esac

 

exit $RETVAL


etd自身的行为。例如,如果filelog标记指定为xinetd,那么将在那里登记所有状态转换消息,尽管 /etc/xinetd.conf文件中为和服务相关消息指定了其他登记位置。可用参数列在下表中。

应注意xinetd报告的所有状态信息,总是出现在-syslog或-filelog标记指定的登记文件中,不管设置如何,无论通过defaults还是在/etc/xinetd.conf中。如果要在一个文件中捕获xinetd的PID,可以用

xinetd –pid 2> /var/run.xinetd.pid

Xinetd 的命令参数

参数

描述

-d

调试模式。输出可和调试器如gdb一起使用。

-syslog facility

指定日志方式。可用的参数为daemon, auth, user和loca10-7其中之一,你可以使用man syslog.conf了解每个参数的含义。如果你使用调试模式,该参数无效,因为相应的信息已经被送到终端。

-filelog logfile

指定日志信息到文件。文件必须指定全路径,如果该文件不存在,文件将被创建,产生的信息以追加的方式写入到文件。如果你使用调试模式,该参数无效,因为相应的信息已经被送到终端。

-f config_file

指定配置文件。必须是全路径,默认配置文件为/etc/xinetd.conf

-pidfile pid_file

进程ID将被写入指定文件,在调试模式中该参数无效。

-stayalive

即使没有服务被指定,也使得xinetd继续运行

-loop rate

指定每秒钟分叉的进程数。缺省是10.对较快机器来说可能希望改变它

-reuse

设置可重用的TCP socket, 这意味着以前的实例运行时也可启动其他进程。当和flags属性一起使用时,有更特殊的服务控制,参见xinetd的属性列表,注意这个选项对于RPC类型的服务无效。

-limit proc_limit

指定由xinetd产生的并发进程总数的上限,以防止进程溢出。

-logprocs limit

指定远程用户可以请求的并发服务总数上限

-shutdownprocs limit

当log_on_failure属性中使用了RECORD值时,xinetd分叉称为shutdown的服务以收集服务终止时的信息。该选项限制同时运行的shutdown进程总数为limit

-cc interval

使xinetd每隔interval秒运行对其内部状态的一致性检查。用killall –IOT xinetd可手工实现

 

注意:syslog和filelog选项是互斥的。如果你什么也没有指定,默认采用的是syslog方式和daemon工具。请不要混淆xinetd的信息和在登陆某个服务时产生的信息。后者是在相关服务的配置文件中指定的。

 

3 控制信号


当xinetd收到某个信号时会执行相应的动作,这些信号可以通过修改config.h并重新编译来自定义。默认的可用信号如下: 

xinetd 的控制信号

信号

描述

SIGUSR1

软性重配置。重读/etc/xinetd.conf并作相应调整

SIGUSR2

硬性重配置。重读配置文件并终止和新的配置规则不匹配的进程。它会对正在运行的进程重新进行远程访问者位置、访问次数、服务实例等方面的访问控制校验,如果检验的结果与新的规则不匹配,它会强制终止一些实例来匹配新的规则。举例来说,某个服务新的配置比原先的配置中的实例数目要少,它会杀死几个进程来满足新的数目。

SIGQUIT

终止xinetd但不终止它分叉的任何进程

SIGTERM

终止xinetd分叉的所有进程;然后终止xinetd

SIGHUP

把xinetd状态信息写到/tmp/xinetd.dump中

SIGIOT

检查内部数据库毁坏情况并报告结果


xinetd日志
1 日志条目

当用户试图访问一个服务的时候,将产生一条访问的日志记录,格式如下(每一项都有一个时间戳作为前缀):entry:service-id data

data 依赖于entry,可用的entry类型包括:

xinetd 的日志条目类型(entry type)

日志类型

引发条件

START

连接开始

EXIT

连接结束

FAIL

连接失败

DATA

对于启用了RECORD登陆选项的服务而言,当连接失败时产生

USERID

连接启用了USERID登陆选项的服务时产生

NOID

使用了USERID登陆选项和IDONLY标记(flag),不识别是谁正在试图访问此服务

 

2 日志格式

如果服务使用了appropriate登陆选项,将有某些信息附加日志条目里,具体描述如下:

xinetd 的日志格式

日志类型

格式

START

START:service-id [pid=%d] [from=%d. %d. %d. %d]

EXIT

EXIT:service-id [type=%d] [pid=%d] [duration=%d(sec)]

说明:type是status或signal,数值是离开的状态或者引发进程终止的信号。

FAIL

START:service-id reason [from=%d. %d. %d. %d]

说明:可能的reason包括:fork、time、address、service_limit、process_limit

DATA

DATA:service-id data

说明:data的值根据不同的服务有所不同

login:remote_user=%s local_user=%s tty=%s

exec:remote_user=%s verify=status command=%s

      exec可用的status包括ok(密码正确)、failed(密码错误)、bad(无此用户)

shell:remote_user=%s local_user=%s command=%s

finger:其值为接收到的字符串或者一空行

USERID

USERID:service-id text

说明:text是负责校验的后台进程的响应信息

NOID

NOID:service-id IP-address reason

 

相关阅读 更多 +
排行榜 更多 +
疯狂超市旅行

疯狂超市旅行

模拟经营 下载
马桶人大战开放世界游戏下载

马桶人大战开放世界游戏下载

角色扮演 下载
最后一班列车巴奎达诺手游下载

最后一班列车巴奎达诺手游下载

休闲益智 下载