找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 33947|回复: 50

[其它] 关于类似于电信弹出广告(push业务),使用ROS与简单web服务器实现。<转>

[复制链接]
发表于 2007-5-2 00:07:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
《转贴》

在我们上网时,特别是使用ADSL上网时,你访问任何页面会弹出广告页面,电信运营上使用BRAS设备实现。现在介绍以下使用routeros如何实现。如果有哪位朋友有例如在自己的单位或内网中弹出页面下发通知等,可以一起琢磨琢磨。本人对RouterOS不是很熟悉,希望得到大家的完善。
  思路:首先你内网中所有用户通过你的routeros上网,当首次访问网页的所有数据包通过你routeROS时,我们包数据包重新定向到你web服务器,并且把目标地址转换成你web服务器的地址。此时访问任何网站的数据相当于访问你的web服务器,你在web服务器的网页上你弹出你的通知,然后把页面重定向到他刚开始要访问的页面。
     实施:routeros上
ip firewall mangle addchain=postrouting protocol=tcp  dst-port=80action=add-src-to-address-list  address-list=src1address-list-timeout=2m
命令解释:我们首先建立一条mangle,让访问HTTP的数据把源地址加在src1这个列表中,address-list-timeout意思是源地址存在与src1列表里的时间。
ipfirewall nat add chain=dstnat protocol=tcp dst-port=80  action=dst-natto-addresses=192.168.100.69 to-ports=80 src-address-list=!src1
命令解释:然后建立一条目标地址转换,把访问页面的数据的目标地址转换成你服务器的地址这里服务器的地址为192.168.100.69,src-address-list=!src1的意思为,只有对源地址没有在src1列表中的数据进行转换,意思也就是说,当你的内网机器再次访问网页时不再弹出页面。
     两步就可以,当然前提是之前你内网机器能正常上网,且你web服务器能访问你内网。
     至于web服务器及web页面怎么写,可以问问搞ASP的。我这里有一简单的。
<HTML>

<head>
<title></title><METAHTTP-EQUIV="Pragma" C><METAhttp-equiv="Content-Type"c><meta http-equiv="Refresh"c>
</head>

<scriptlanguage="JavaScript">function newwin(){var urlname;varwin_attr;win_attr='toolbar=no,menubar=no,scrollbars=no,status=no,location=no,resizable=yes,fullscreen=no,directories=no,width=300,height=250,top=0,left=0';window.open('http://192.168.100.69/index.htm','ips_win0',win_attr); }</script>
<%Function GetUrl()   
  On Error Resume Next   
  Dim strTemp   
  If LCase(Request.ServerVariables("HTTPS"))="off" Then   
  strTemp = "http://"   
  Else   
  strTemp = "http://"   
  End If   
  strTemp = strTemp & Request.ServerVariables("HTTP_HOST")   
If Request.ServerVariables("SERVER_PORT") <> 80 Then strTemp =strTemp & ":" & Request.ServerVariables("SERVER_PORT")  
  strTemp = strTemp & Request.ServerVariables("URL")   
  If Trim(Request.QueryString) <> "" Then strTemp = strTemp & "?" & Trim(Request.QueryString)
  GetUrl = strTemp   
  End Function  %>

<body text="#FFFFFF" bgcolor="#000000"><b><font size="5">尊敬的涉外花园用户: </body>
</font></b>
<p><b><font size="5">   
<body text="#FFFFFF" bgcolor="#000000">您好! </body></font></b></p>
<p><b><font size="5">   
<body text="#FFFFFF" bgcolor="#000000">卖盒饭啦,电话1234567。 </body>
</font></b></p>
<p><b><font size="5">   
<body text="#FFFFFF" bgcolor="#000000">不要使用电驴、BT等工具下载。谢谢!浏览器将在5秒后跳转到您要访问的页面。
</font></b> </p>

</body></html>
我的页面没有弹出,只有转向。
routeros
发表于 2007-5-2 00:10:27 | 显示全部楼层
转贴要注明出处的~
routeros
回复

使用道具 举报

发表于 2007-5-2 01:42:13 | 显示全部楼层
测试过了吗?

想法应该是没错的,改天测试一下,感觉有点不对!
routeros
回复

使用道具 举报

发表于 2007-5-2 01:49:25 | 显示全部楼层
访问每个页面都弹出一次?
routeros
回复

使用道具 举报

发表于 2007-5-2 01:55:46 | 显示全部楼层
应该是第一次打开WEB的时候出现,以后的不出现!
routeros
回复

使用道具 举报

发表于 2007-5-2 02:00:01 | 显示全部楼层
感觉有点不对~貌似有些东西说不过去~~逻辑上的问题好象是。。。
routeros
回复

使用道具 举报

发表于 2007-5-2 02:08:30 | 显示全部楼层
个人应该是第一个判断是否已经是列表中的IP,如果不是,那就打开指定的IP,并把这个源地址纪录进去,如果是,那就不进行转发了!
routeros
回复

使用道具 举报

发表于 2007-5-2 02:19:37 | 显示全部楼层
ip firewall nat add chain=dstnat protocol=tcp dst-port=80  action=dst-natto-addresses=192.168.100.69 to-ports=80

这条规则普通的 Web Server 是不行的,Squid 配置成透明代理服务器才可以这样用
routeros
回复

使用道具 举报

发表于 2007-5-2 11:20:15 | 显示全部楼层
想法不错
routeros
回复

使用道具 举报

发表于 2007-5-2 11:32:42 | 显示全部楼层
支持.!
routeros
回复

使用道具 举报

发表于 2007-5-2 11:48:52 | 显示全部楼层
个人觉得需要做2次NAT,首先是DSTNAT,把目标地址改为自己的WEB地址,然后是SCRNAT,把源地址改为自己的IP地址,这样应该可以做到了
routeros
回复

使用道具 举报

发表于 2007-5-2 13:40:02 | 显示全部楼层
楼上的说法具体怎么写的?
这个方法我具体调试了一下,需要添加TCP标记为syn的,但还有个问题就是请求的页面只能有一个对象

[ 本帖最后由 louyc 于 2007-5-2 13:41 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-5-2 16:32:55 | 显示全部楼层
这个道理和IP劫持是一样的,也很象IP转发,难点是纪录已经转发过的源地址,呵呵
routeros
回复

使用道具 举报

发表于 2007-5-2 18:13:38 | 显示全部楼层

值得研究

那位大哥有测试成功的吗.记得 发表出来 哦
routeros
回复

使用道具 举报

发表于 2007-5-2 19:13:44 | 显示全部楼层
测试过没有?关注中
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-6 03:40 , Processed in 0.124580 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表