level 1
ytftdkjxkj
楼主
mikrotik路由的脚本功能非常自由,这是我喜欢这路由器的原因。
写这脚本是因为现在ipv6的普及,没有ipv4公网,我也可以随时随地的用ipv6访问我的路由器,
但是前提是知道路由器的ipv6地址。
正巧我家用的也是mikrotik路由器,里面有个netwatch功能,加上脚本,能满足我的要求。
功能实现:前提两个路由器要互相netwatch对方。
ipv6 firewall mangle 添加规则,记录ping自己的对方地址,设置1分钟到期。
system schedule 添加规则,每五分钟运行一次,运行时获得上面记录的对方地址,并筛选出想要的地址,将地址替换到netwatch中对应的规则。
tool netwatch 添加规则,up脚本填写关闭上面的schedule规则,down脚本,填写开启上面schedule规则。
下面将我刚简单写的脚本分享一下,并简单说明:
1:

上图,是ipv6 firewall mangle中的规则,action为添加源地址到地址列表,协议就是ping用的icmp。address-list是列表名字,timeout设为一分钟就够了,不宜太长。这一条规则很简单,看一下就懂。
2:

上图,是netwatch中的规则,up和down脚本只有一个差别,就是一个是disabl=yes,一个是disabl=no。host那分页上默认就行了。脚本就是开启或关闭system schedule中的一个规则。 在netwatch这里有一个要注意的,就是comment一定要填写,后面的system schedule中有用到的。
3:

上图,是system schedule中的规则,interval设置为五分钟,表示每五分钟运行一次。脚本第三行是筛选我要的地址,第四行的set语法是因为这里的地址是有加"/128" "/64"之类的网络掩码,而netwatch的host是不接收填写掩码的,所以用pick语法截取不包含掩码的地址。 最后一行便是将netwatch中的host替换成新的。
只要两台路由器都各自netwatch对方,那么ipv6 firewall mangle便能得到对方的地址。
假设A路由的ipv6地址变了,B路由自然ping不通A了。 此时B路由的地址没变,所以A获得新的ipv6地址后,会去ping通B。B也就知道了A的新地址了。
(此时有个点没处理,就是上面假设中,A的ipv6地址变化期间,A没有ipv6网络,也ping不通B的,A此时在运行脚本想要更新B的地址,直到A恢复ipv6网络为止。不过好像没啥大不了的)
如此一来,我到了家里,仍然能在路由器上知道工作地方的路由器地址,并且有需要时登录上去搞事情。
2020年06月27日 08点06分
1
写这脚本是因为现在ipv6的普及,没有ipv4公网,我也可以随时随地的用ipv6访问我的路由器,
但是前提是知道路由器的ipv6地址。
正巧我家用的也是mikrotik路由器,里面有个netwatch功能,加上脚本,能满足我的要求。
功能实现:前提两个路由器要互相netwatch对方。
ipv6 firewall mangle 添加规则,记录ping自己的对方地址,设置1分钟到期。
system schedule 添加规则,每五分钟运行一次,运行时获得上面记录的对方地址,并筛选出想要的地址,将地址替换到netwatch中对应的规则。
tool netwatch 添加规则,up脚本填写关闭上面的schedule规则,down脚本,填写开启上面schedule规则。
下面将我刚简单写的脚本分享一下,并简单说明:
1:

上图,是ipv6 firewall mangle中的规则,action为添加源地址到地址列表,协议就是ping用的icmp。address-list是列表名字,timeout设为一分钟就够了,不宜太长。这一条规则很简单,看一下就懂。2:

上图,是netwatch中的规则,up和down脚本只有一个差别,就是一个是disabl=yes,一个是disabl=no。host那分页上默认就行了。脚本就是开启或关闭system schedule中的一个规则。 在netwatch这里有一个要注意的,就是comment一定要填写,后面的system schedule中有用到的。3:

上图,是system schedule中的规则,interval设置为五分钟,表示每五分钟运行一次。脚本第三行是筛选我要的地址,第四行的set语法是因为这里的地址是有加"/128" "/64"之类的网络掩码,而netwatch的host是不接收填写掩码的,所以用pick语法截取不包含掩码的地址。 最后一行便是将netwatch中的host替换成新的。只要两台路由器都各自netwatch对方,那么ipv6 firewall mangle便能得到对方的地址。
假设A路由的ipv6地址变了,B路由自然ping不通A了。 此时B路由的地址没变,所以A获得新的ipv6地址后,会去ping通B。B也就知道了A的新地址了。
(此时有个点没处理,就是上面假设中,A的ipv6地址变化期间,A没有ipv6网络,也ping不通B的,A此时在运行脚本想要更新B的地址,直到A恢复ipv6网络为止。不过好像没啥大不了的)
如此一来,我到了家里,仍然能在路由器上知道工作地方的路由器地址,并且有需要时登录上去搞事情。