什么是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共存来解决这个问题
xinetd转向功能实例
这个功能可以将客户端的请求转发到另一台主机去处理。
如我这里内网192.168.18.204需要通过跳板172.26.184.240去调用邮件服务器172.26.10.12,可以这样实现:跳板172.26.184.240配置xinetd,监听在25端口,当客户端请求过来,将请求转发给邮件服务器172.26.10.12处理。配置方法如下:
在跳板172.26.184.240配置
vi /etc/xinetd.d/smtp-relay
service smtp-relay { disable = no flags = REUSE socket_type = stream wait = no user = root bind = 0.0.0.0 port = 2525 only_from = 192.168.18.0/24 no_access = 192.168.18.11 access_time = 00:00-23:59 redirect = 172.26.10.12 25 }
vi /etc/services,找到2525端口所在行,改为如下行:
smtp-relay 2525/tcp # smtp-relay smtp-relay 2525/udp # smtp-relay
重启xinetd服务
service xinetd restart
这样,内网192.168.18.204可以通过调用跳板172.26.184.240上的2525端口发送邮件。