ROS应用实例:用户首次上网打开上网提示页面(Hotspot)
ROS应用实例:用户首次上网打开上网提示页面(Hotspot)一、用户首次上网打开上网提示页面
本功能由ROS的hotspot实现。启用hotspot的命令是:IP--Hotspot,打开Hotspot配置窗口后点“Hotspot Setup”来安装它。下面是几个安装截图:
在LAN接口启用Hotspot
指定内部地址段
Masquerade Network选项表示:是否对此网络做NAT,由于我是在不需要NAT的网络中使用,因此我不勾选。
如果内部PC使用DHCP的话,要指定其使用的IP POOL,如果内部PC使用静态IP地址,则此处可省略。
指定使用的DNS服务器地址,如果内部PC配置了DNS,此处可省略。
安装完Hotspot之后,系统会自动产生相应的文件。我们是要让用户首次打开网页显示提示页,而不是让用户登录认证,因此在Hotspot的Server Profiles中做如下设置:
勾选中“HTTP CHAP”和“Trial”两项
为了让用户每天上网时,只打开提示页一次,Trial Uptime Limit 设置为24小时,然后在system--scheduler中添加如下的脚本,让ROS每天在凌晨清除用户信息,这样,用户每天第一次打开网页都会自动重定向到提示页:
/ip hotspot active remove
/ip hotspot user remove
/ip hotspot host remove
至此,Hotspot设置完成,当用户第一次打开网页时,会自动重定向到一个页面。此页面为hotspot/login.html,可以在WINBOX中点击左侧的“Files”来修改。你可以在此页输入你要提醒大家的信息,我制作的提示页如下:
二、网络故障(内部、外部网关设备坏)时自动显示对应的问题页面
本功能的实现主要是用PING 网关MAC(ROS和网关设备在一个网络中)或IP(ROS和网关设备不在一个网络中)的方式来探测网关是否正常。当探测到网关设备不正常时,将内部到外部的访问利用WEB代理的重定向功能转向到内部的某个页面(当然也可以使用DST-NAT重定向到一个IP,但是使用DST-NAT时,只能当用户访问网站首页时可以正常重定向,当用户直接访问二级页面时就不行了)。
正常情况下,内部用户访问互联网,不用ROS的WEB代理功能。当网关出问题时才使用。此时要在ROS上做DST-NAT,将内部到外部的TCP 80出站访问(即标准HTTP访问)重定向到ROS的WEB代理端口。
由于是在网络不通的情况下做DST-NAT劫持网络访问,此时内部用户通过域名访问外部的网站时,域名不能被解析为IP,DST-NAT将不能正常工作,进而也无法做到内部到外部的TCP 80出站访问重定向到ROS的WEB代理端口。如果想让DST-NAT正常工作,则需要在内部有一个DNS服务器,它负责将所有的域名解析为某个IP。将所有域名都解析为某个IP的DNS服务器的设置,请看另外一篇博文:【原创】让DNS服务器解析所有域名到指定IP。要想让内部用户所有的域名解析重定向到内部的DNS服务器,则需要对UDP 53出站通信做DST-NAT,劫持到目的为内部DNS服务器。
当DST-NAT能正常工作时,我们就可以做将内部用户到外部的TCP 80出站访问(即标准HTTP访问)重定向到ROS的WEB代理端口。
使用PING探测网关是否正常,需要实时检测,因此需要做到System--Scheduler里,由于网络正常是使用Hotspot,因此当探测网关出问题时,需要停止Hotspot服务,脚本如下(下面的00:0C:29:9B:11:38 是交换机MAC,10.0.105.1是ROS的LAN地址,10.0.105.9是内部的DNS服务器和提问错误页面提示的WEB服务器地址):
:if ( = 0)do={
:if ( [ /ip hotspot get hotspot1 disabled] = false ) do={
/ip hotspot disable hotspot1}
:if ( [ /ip proxy get enabled] = false ) do={
/ip proxy set enabled=yes}
:if ([:len ]=0 ) do={
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=10.0.105.1 to-ports=8080 protocol=tcp in-interface=LAN dst-port=80 comment="local_error"
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=10.0.105.9 to-ports=53 protocol=udp in-interface=LAN dst-port=53 comment="local_error"}} else={
:if ([:len ]>0 ) do={
/ip firewall nat remove }
:if ( [ /ip proxy get enabled] = true ) do={
/ip proxy set enabled=no}
:if ( [ /ip hotspot get hotspot1 disabled] = true ) do={
/ip hotspot enable hotspot1}}
ROS的web 代理里的设置如下:
DNS服务器我使用的是FreeBSD下的BIND,named.root的配置如下:
192.168.1.9为任意IP均可
错误页面提示的WEB服务器和DNS服务器是在一个系统下,用的是nginx。nginx的配置文件如下:
“nginx的配置文件如下:”。。。帖子还没完吧 没复制完、、、、、 这篇怎么和我的博文那么像?请问楼主!! 网上转载,版权归原作者所有,这里共享互相学习,本人不承担任何责任。:) ewangsoft 发表于 2011-10-20 19:32 static/image/common/back.gif
这篇怎么和我的博文那么像?请问楼主!!
网上转载,版权归原作者所有,这里共享互相学习,本人不承担任何责任。
xieganhui 发表于 2011-10-20 11:36 static/image/common/back.gif
“nginx的配置文件如下:”。。。帖子还没完吧
网上转载,版权归原作者所有,这里共享互相学习,本人不承担任何责任。
转帖最好 注明 或加上自己的理解说明
页:
[1]