【原创】Ros 5.XX 自动获取域名IP并添加到IP列表里
本帖最后由 口觜亻尔 于 2016-4-6 23:37 编辑按企业客户要求进行上网限制管理,按某部门允许上企业邮箱,某部门可以访问银行网站,某部门可以访问快递物流网站,然后禁止访问其它一切网站等,这是收集快递地址的脚本,需要的朋友按自己所需自行修改。脚本比ros 2.9.xx老版本的脚本增加了IP重复判断,如果IP已经被添加即自动跳过,这样就不会重复添加了。否则IP列表分分种过万条IP地址,严重影响服务器性能。
以下是收集常用快递物流IP服务器脚本-------------------------------------------------------------# apr/06/2016 14:41:23 by RouterOS 5.24
# software id = W5EY-LHT9
##自动获取域名服务器IP地址
#服务器域名关键字,多个关键字之间用逗号分隔
:local 77RunSTR "yundaex,ytoexpress,sto.cn,800bestex,chinapost,ttkdex,zto,sf-express,ems,zjs,qfkd,deppon,hoau,sure56,uc56,ycgwl,jiayi56,lbex,fedex,dhl,tnt,ups,usps,183";
#IP地址列表名
:local 77RunLST "KuaiDi";
#取得DNS缓存的A记录
:local id ;
#对记录进行分析
:foreach i in=$id do={;
#取得域名
:local dom ;
:local found "no";
#判断域名中是否有指定的关键字
:foreach k in=[:toarray $77RunSTR] do={
:if ([:find $dom $k] >= 0) do={:set found "yes";}
}
#找到关键字后,进行判断是否已存在IP,不存在就把IP地址保存在指定地址列表中
:if ($found="yes") do={
if ([:len list=$77RunLST]] < 1) do={
/ip firewall address-list add list=$77RunLST disabled=no address= comment=$dom
}
}
} 请按自己需要修改以下红色部分即可,如需要收集齐齐奔跑www.77run.com的域名服务器IP地址.修改第一个红色参数:local 77RunSTR "77run"修改第二个红色参数:local 77RunLST "www.77run.com";收集完之后自己在到防火墙添加规则实现放行或禁止即可。如有好的建议请联系作者邮箱:alex#77run.com(#改为@小老鼠)
经验分享:1,域名关键字如果比较短或含有常见关键字的,可以加上尾部完整域名。如申通网址只添加sto,就会把很多带有sto的域名全部收集了,比如QQ服务器群就有大部分带sto关键字,因此我改为sto.cn。2,将脚本添加到System--scheduler,刚使用先设置执行时间15分钟左右,大概执行几天后,可以将周期改到1小时或以上。因为前期已经收集了95%以上的IP,后期定期执行更新即可。
脚本定期更新完善,最新脚本请访问:http://www.77run.com/ros-address-list/
ROS 3.xx和6.xx没有测试过是否正常,有条件的朋友麻烦测试后反馈,谢谢
好东西,我试用一下。 goodluck1981 发表于 2016-4-7 12:51
好东西,我试用一下。
没有3.xx和6.xx的环境,不知道是否可以运行。:)
本帖最后由 cspm333 于 2016-4-13 14:56 编辑
script是有誤的...
抓取dns cache address要用/ip dns cache get $i address ,非/ip dns cache get $i data
修正並最佳化 (僅適用v6.2以上):
:local 77RunSTR "yundaex,ytoexpress,sto.cn,800bestex,chinapost,ttkdex,zto,sf-express,ems,zjs,qfkd,deppon,hoau,sure56,uc56,ycgwl,jiayi56,lbex,fedex,dhl,tnt,ups,usps,183"
:foreach i in= \
do={
:foreach j in=[:toarray $77RunSTR] \
do={
:local doname
:if ($doname~[:tostr $j]) \
do={
do {
:local address
:if ([:len ]=0) \
do={/ip firewall address-list add list=KuaiDi comment=$doname address=$address timeout=1w}
} \
on-error={}
}
}
}
好东西。 看看。 cspm333 发表于 2016-4-13 14:53
script是有誤的...
抓取dns cache address要用/ip dns cache get $i address ,非/ip dns cach ...
谢谢指导,造服群众!:D
cspm333 发表于 2016-4-13 14:53
script是有誤的...
抓取dns cache address要用/ip dns cache get $i address ,非/ip dns cach ...
用你的脚本在ros 5.24上运行无效.
本帖最后由 cspm333 于 2016-4-14 23:49 编辑
口觜亻爾 發表於 2016-4-14 15:26
用你的腳本在ros 5.24上運行無效.
小弟用了do {} on-error={} ,只有v6.2才能Run.
http://i.imgur.com/YVvK4t7.png
若要在v5.24運行 ,稍稍修正即可:
:local 77RunSTR "yundaex,ytoexpress,sto.cn,800bestex,chinapost,ttkdex,zto,sf-express,ems,zjs,qfkd,deppon,hoau,sure56,uc56,ycgwl,jiayi56,lbex,fedex,dhl,tnt,ups,usps,183"
:foreach i in= \
do={
:foreach j in=[:toarray $77RunSTR] \
do={
:local doname
:if ($doname~$j) \
do={
:local address
:if ([:len ]=0) \
do={/ip firewall address-list add list=KuaiDi comment=$doname address=$address timeout=1w}
}
}
}
cspm333 发表于 2016-4-13 14:53
script是有誤的...
抓取dns cache address要用/ip dns cache get $i address ,非/ip dns cach ...
我的系统是6.2.4,试了一下,用你所写的脚本,我只能有一条记录
ERT6 发表于 2016-4-15 18:08
我的系统是6.2.4,试了一下,用你所写的脚本,我只能有一条记录
是根據樓主script改編,做法是從dns cache裡抓取address.
若是比對的"關鍵字"沒在dns cache doname裡是無法轉移到address-list裡去的.
而且樓主少提了重要的事,
即電腦要將router當dns-server ,瀏覽記錄才會收錄在dns cache裡.
若您的dns-server是設ISP給的地址, 而非router...這討論串是沒有任何意義的.
/ip dns 啟用dns-server
http://i.imgur.com/JhAPORN.png
讓dhcp-server使用router當dns-server
/ip dhcp-server network
http://i.imgur.com/6MjtBUt.png
感谢 真是需要的认证去学习!
来个屏蔽传说中的 万能钥匙
本帖最后由 47771885 于 2016-4-23 12:33 编辑.........
不能用,错误 只能加一个,只能加一个 请修复下,在6.34下只能添加1条
页:
[1]
2