俘虏门户如何在幕后redirect

作为一个项目,我正在为“未经authentication的”用户构build我自己的强制性门户网页。 这些用户在我的强制门户页面上没有按下button。 我想这是带外(就像一个packetfence部署选项),以便我的Linux机器不充当路由器/代理。

要做到这一点,我需要知道如何设备,在我的情况下,运行iOS 8的iPhone,被redirect到强制门户页面。

这是我认为应该发生的事情:

  1. iPhone连接到Wi-Fi
  2. DNS指向我的Linux机器,它使用自身的IP来parsing所有的请求
  3. Linux机器有一个Web服务器,它响应80端口上的所有内容,并使用HTTP Location:标题将所有内容redirect到包含内容和button的页面
  4. button被按下,用户的mac地址被添加到“something”,从那时起,DNS会做出正确的parsing(??)或者iptables将DNS请求redirect到另一个公共DNS主机(??)

我已经通过这个网站和谷歌几天,现在甚至试图看看Packetfence代码(我不是一个Perl开发人员),我需要确认,如果我上面的过程是正确的,或者正确的项目符号列表脚步。 我已经看了一下这个serverfault文章,这是关于redirect如何发生的细节,更重要的是一旦用户被“authentication”,如何避免redirect。

我很感激,如果有人有这方面的知识填补空白或指向我的网站,有“如何/什么是redirect – dns / dhcp / http / iptables)。

我试图解决的问题是清楚说明这个工作的技术过程,扩展到这个网站上的其他post,比如说“第一个请求应该被redirect”。 我的问题是…如何/我需要做什么工具。

谢谢!

您需要实现redirect的第一件事是一些内嵌的身份validation程序(访问控制器),就主题而言,如果您select对AP进行集中pipe理,则需要无线局域网控制器。 您也可以将强化门户types的networking访问控制器与Wall gardeningfunction配合使用

NAS监视通过混杂模式原始套接字进入下行链路(客户端)的stream量,并且当浏览器为未经身份validation的客户端启动stream量时,会将HTTPredirect作为响应发送给它。 所以接收浏览器被redirect到我们的CAPTIVE门户主页,这个主页可以在一个外部networking服务器上进行身份validation或者开箱。

这个页面的唯一工作是提供一个用户界面来input凭据。 input的凭证在coova辣椒的情况下被转发回authentication者守护进程,如辣椒,进一步,这些凭据作为半径请求传递到RADIUS服务器,或者可以在本地进行检查。 成功authentication后,authentication者处的客户端状态被标记为授权,客户端被授予访问权限。

如何实现redirect

最广泛使用的方法是拦截用户发起的HTTP请求和302代码作为对客户端的响应。 在辣椒中是通过下面的function鸽子

http_redirect2(){cat <<EOF

HTTP / 1.1 302redirect

地点:$ 1

Set-Cookie:PORTAL_SESSIONID = $ PORTAL_SESSIONID

Set-Cookie:COOVA_USERURL = $ COOVA_USERURL

连线:closures

EOF

exit 

}

这个redirect可以很容易的通过程序控制的tuntap接口来实现,客户端接口拦截客户端的stream量。 进一步的redirect也可以通过DNS中毒来实现。 但是如果响应被caching在客户端浏览器,有时会导致问题。根据问题域,可以更具体地做更多的事情。

如果你愿意,我可以帮你