什么是xinetd?
大家对被称作超级服务器的Inetd一定很熟悉,其实现控制对主机网络连接 。
当一个请求到达由Inetd管理的服务端口,Inetd将该请求转发给名为 tcpd的程序。
Tcpd根据配置文件hosts.{allow, deny}来判断是否允许服务该请求。
如果请求被允许则相应的服务器程序(如:ftpd、telnetd)将被启动。
这个机制也被称作 tcp_wrapper .
>>xinetd(eXtended InterNET services daemon )提供类似于inetd+tcp_wrapper 的功能,
但是更加强大和安全。它能提供以下特色:
支持对tcp、ucp、RPC服务(但是当前对RPC的支持不够稳定)
基于时间段的访问控制
功能完备的log功能,即可以记录连接成功也可以记录连接失败的行为
能有效的防止DoS攻击(Denial of Services)
能限制同时运行的同意类型的服务器数目
能限制启动的所有服务器数目
能限制log文件大小
将某个服务绑定在特定的系统接口上,从而能实现只允许私有网络访问某项服务
能实现作为其他系统的代理。如果和ip伪装结合可以实现对内部私有网络的访问
>>它最大的缺点是对RPC支持的不稳定性 ,但是可以启动protmap,与xinetd共存来解决这个问题
一些个人理解:
- 在linux中一些不长期使用的服务(不重要的服务?)没有被作为单独的守护进程在开机时启用,linux把这些服务监听端口全部由一个独立的进程 xinetd集中监听,当收到相应的客户端请求之后,xinetd进程就临时启动相应服务并把相应端口移交给相应服务,客户端断开之后,相应的服务进程结束,xinetd继续监听。要开telnet服务器,只需配置xinetd即可。
- xinetd是一个daemon程序,所有结尾带d的程序都是daemon程序,也就是守护程序
守护程序分为2种处理模式:
第一个是stand alone状态的,表示该程序始终监听,一直处于运行状态,例如httpd
第二个是super daemon,它始终处于sleep状态,直到有人唤醒它,xinetd就是一个super daemon,但它的使命是将一个请求转给其他服务,也就是服务的管理者