我们在网络通信时候用到socket套接字,有的时候我们更希望Linux能使用http协议等于前端有一定的交互,那么xinetd服务无疑是Linux下一种很好的方法。
什么是xinetd呢?xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器,常用来管理多种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。
简单介绍下xinetd的特色
1) 强大的存取控制功能
— 内置对恶意用户和善意用户的差别待遇设定。
— 使用libwrap支持,其效能更甚于tcpd。
— 可以限制连接的等级,基于主机的连接数和基于服务的连接数。
— 设置特定的连接时间。
— 将某个服务设置到特定的主机以提供服务。
2) 有效防止DoS攻击
— 可以限制连接的等级。
— 可以限制一个主机的大连接数,从而防止某个主机独占某个服务。
— 可以限制日志文件的大小,防止磁盘空间被填满。
3) 强大的日志功能
— 可以为每一个服务就syslog设定日志等级。
— 如果不使用syslog,也可以为每个服务建立日志文件。
— 可以记录请求的起止时间以决定对方的访问时间。
— 可以记录试图非法访问的请求。
4) 转向功能
可以将客户端的请求转发到另一台主机去处理。
5) 支持IPv6
6) 能与客户端交互
当我们在linux下安装了xinetd服务后,将/etc/services 这个文件中添加相应的服务协议和端口号,然后再/xinit.d目录中添加相应的配置文件就可以启动这个服务了。
让我们看一些基本的应用.我们要看的第一个基本的服务是echo,它是inetd 和 xinetd固有的服务。
service xecho
{
socket_type = stream
protocol = tcp
wait = no
user = root
type = INTERNAL
server = /usr/bin/rsync
}
下面说明每一行选项的含义:
— disable = yes:表示禁用这个服务。
— socket_type = stream:表示服务的数据包类型为stream。
— wait = no:表示不需等待,即服务将以多线程的方式运行。
— user = root:表示执行此服务进程的用户是root。
— server = /usr/bin/rsync:启动脚本的位置。
可以用sudo service xinetd restart启动。
当然如果连接的话你还需要有ssh或者telnet服务器 ,telnet服务器是通过xinetd(超级Internet守护进程)来管理的,安装apt-get install telnetd。
安装完后,需要为xinetd建立一个配置文件/etc/xinetd.d/telnet,该文件的内容如下所示:
service telnet
{
disable = no
type = UNLISTED
socket_type = stream
wait = no
user = nobody
server = /usr/sbin/in.telnetd
server_args = -h
log_on_failure += HOST USERID
log_on_success += PID HOST USERID EXIT DURATION
id = id-git-stream
log_type = FILE /gitdaemonlog
}
这只是一些xinetd的配置用法,具体还有很多方面的应用例如我们可以用一个简单的大小写转换的程序测试下,在连接xinetd的终端下实现,或者实现一个小的服务器,让我们的xinetd的可以连接到浏览器上。