网上极少有关于RouterOS的第一次打开网页强制跳转主页的方法,大多数都方法是将浏览某个域名的IP地址跳转到自己的主页,这种方法有时会失效。
还有一种方法就是当用户用80端口连接时,抓取源地址到地址列表,然后指定该地址的timeout时间,在做地址映射来达到强制跳转的目的,但是这种方法也会经常失效,某些即时通软件也会使用TCP 80端口来通讯。
BUG:循环脚本比较耗CPU,使用此方法时需要注意路由器硬件配置。
说明:需要添加两条标记mangle、一条DST目标地址规则、还有一个循环脚本。此外要做个网页跳转页面。注意:BUG如果要跳转的地址无效,会让所有网页不能打开。
一、添加标记。
1、第一条标记
2、添加第二条标记
3、添加dst目标地址跳转规则。
二、添加计划任务脚本。这个脚本用于删除已经跳转过页面的IP。在/system scheduler 制定一个任务循环执行定时2-4秒 最佳
:foreach i in=[/ip firewall address-list find list=src1] do={
:foreach n in=[/ip firewall address-list find list=src2] do={
:if ([/ip firewall address-list get $i address] = [/ip firewall address-list get $n address]) do={
/ip firewall address-list remove $i}
}
}
三、网页跳转页面。这个是必须的不然src2不会自动添加IP。将以下代码另存为htm文件放到IIS的默认网站。
<html>
<head>
<meta http-equiv="Content-Language" content="zh-CN">
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title></title>
</head>
<SCRIPT LANGUAGE="javascript">
<!-- Start Code
var ver = navigator.appVersion;
if (ver.indexOf("MSIE") != -1)
{
window.location.href="要跳转的网站虚拟目录,例如http://10.20.20.1/webmedia"
}else
window.location.href="要跳转的网站虚拟目录, 例如http://10.20.20.1/webmedia "
// End Code -->
</SCRIPT>
</html>
以下是配置文件
/ip firewall mangle
add action=add-src-to-address-list address-list=src1 address-list-timeout=0s \
chain=prerouting comment="" disabled=no dst-address=!10.20.20.1 dst-port=\
80 in-interface=!WAN protocol=tcp src-address-list=!src2
add action=add-src-to-address-list address-list=src2 address-list-timeout=3h \
chain=prerouting comment="" disabled=no dst-address=10.20.20.1 dst-port=\
80 in-interface=!WAN protocol=tcp
/ip firewall nat
add action=dst-nat chain=dstnat comment=ToAddress disabled=yes dst-port=80 \
protocol=tcp src-address-list=src1 to-addresses=10.20.20.1 to-ports=80