开放公共网关守护进程,是的C版本,主要用于提供认证上网服务。
基本的工作原理是当某个IP、MAC地址的未经过认证时,发起自这个IP、MAC地址的Web访问会先被重定向到一个Splash窗口,当用户认证成功,或者是同意了某个协议之后,访问再被重定向到原始的请求地址。
发起自未授权的IP、MAC地址到80端口的TCP连接会被iptables规则在PREROUTING链重定向到运行在网关上的splashd,splashed解析完HTTP请求头之后,将原始请求的URI信息和其他的一些信息,如源MAC地址、网关地址、认证超时时间和一个Token等,附加到认证服务器的URI上作为请求消息,而形成一个新的URI。通过HTTP的301响应,将连接转向到新的URI。
认证服务器既可以和网关位于同一个服务器(甚至NoCatSplash就提供了一个简单的HTTP服务器:ghttpd),也可以部署在另外的一台机器上,但是,在他们认证通过后都需要将决议通过GPG加密后附加在网关的URI上,再将客户端通过HTTP 301重定向到新URI。
网关接收到这个连接之后,通过HTTP的Host字段得知这个连接不是iptables重定向后的连接,进而检查其请求的URI中的ticket请求串,将其GPG解码后,得到认证服务器的决议,如果认证成功,则在网关上设置iptables规则放行此后的发自该IP、MAC的连接,并通过HTTP 301响应将连接重定向到最开始的URI。至此,认证成功。
NoCatSplash采用非对称的GPG加密,既保证了认证的安全性,又不失系统部署的灵活性。配合其他应用程序,还能实现单点登录。
阅读(8511) | 评论(0) | 转发(0) |