找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 41820|回复: 18

[脚本] 【原创】Ros 5.XX 自动获取域名IP并添加到IP列表里

[复制链接]
发表于 2016-4-6 23:07:43 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 口觜亻尔 于 2016-4-6 23:37 编辑

ros5.xx成功添加IP列表

ros5.xx成功添加IP列表

配合ROS防火墙规则

配合ROS防火墙规则

按企业客户要求进行上网限制管理,按某部门允许上企业邮箱,某部门可以访问银行网站,某部门可以访问快递物流网站,然后禁止访问其它一切网站等,这是收集快递地址的脚本,需要的朋友按自己所需自行修改。脚本比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 [/ip dns cache all find type="A"];
#对记录进行分析
:foreach i in=$id do={;
#取得域名
:local dom [/ip dns cache all get $i name];
: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 [/ip firewall address-list find  where address=[/ip dns cache all get $i data] list=$77RunLST]] < 1) do={
   /ip firewall address-list add list=$77RunLST disabled=no address=[/ip dns cache all get $i data] 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没有测试过是否正常,有条件的朋友麻烦测试后反馈,谢谢


routeros
发表于 2016-4-7 12:51:54 | 显示全部楼层
好东西,我试用一下。
routeros
回复

使用道具 举报

 楼主| 发表于 2016-4-7 14:27:17 | 显示全部楼层
goodluck1981 发表于 2016-4-7 12:51
好东西,我试用一下。

没有3.xx和6.xx的环境,不知道是否可以运行。
routeros
回复

使用道具 举报

发表于 2016-4-13 14:53:03 | 显示全部楼层
本帖最后由 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=[/ip dns cache find] \
     do={
            :foreach j in=[:toarray $77RunSTR] \
                 do={
                        :local doname [/ip dns cache get $i name]
                        :if ($doname~[:tostr $j]) \
                            do={
                                   do {
                                         :local address [/ip dns cache get $i address]
                                         :if ([:len [/ip firewall address-list find list=KuaiDi && address=$address]]=0) \
                                             do={/ip firewall address-list add list=KuaiDi comment=$doname address=$address timeout=1w}
                                        } \
                                   on-error={}
                                  }
                       }
          }

routeros
回复

使用道具 举报

发表于 2016-4-13 23:03:45 | 显示全部楼层
好东西。                         看看。
routeros
回复

使用道具 举报

 楼主| 发表于 2016-4-14 14:25:15 | 显示全部楼层
cspm333 发表于 2016-4-13 14:53
script是有誤的...
抓取dns cache address要用/ip dns cache get $i address ,非/ip dns cach ...

谢谢指导,造服群众!
routeros
回复

使用道具 举报

 楼主| 发表于 2016-4-14 15:26:22 | 显示全部楼层
cspm333 发表于 2016-4-13 14:53
script是有誤的...
抓取dns cache address要用/ip dns cache get $i address ,非/ip dns cach ...

用你的脚本在ros 5.24上运行无效.
routeros
回复

使用道具 举报

发表于 2016-4-14 18:42:58 | 显示全部楼层
本帖最后由 cspm333 于 2016-4-14 23:49 编辑
口觜亻爾 發表於 2016-4-14 15:26
用你的腳本在ros 5.24上運行無效.

小弟用了do {} on-error={} ,只有v6.2才能Run.

                               
登录/注册后可看大图

若要在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=[/ip dns cache all find type="A"] \
     do={
            :foreach j in=[:toarray $77RunSTR] \
                 do={
                        :local doname [/ip dns cache get $i name]
                        :if ($doname~$j) \
                            do={
                                   :local address [/ip dns cache get $i address]
                                   :if ([:len [/ip firewall address-list find list=KuaiDi && address=$address]]=0) \
                                       do={/ip firewall address-list add list=KuaiDi comment=$doname address=$address timeout=1w}
                                  }
                       }
          }

routeros
回复

使用道具 举报

发表于 2016-4-15 18:08:29 | 显示全部楼层
cspm333 发表于 2016-4-13 14:53
script是有誤的...
抓取dns cache address要用/ip dns cache get $i address ,非/ip dns cach ...

我的系统是6.2.4,试了一下,用你所写的脚本,我只能有一条记录
routeros
回复

使用道具 举报

发表于 2016-4-15 19:15:53 | 显示全部楼层
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

                               
登录/注册后可看大图


讓dhcp-server使用router當dns-server
/ip dhcp-server network

                               
登录/注册后可看大图


routeros
回复

使用道具 举报

发表于 2016-4-23 10:32:21 | 显示全部楼层
感谢 真是需要的  认证去学习!
routeros
回复

使用道具 举报

发表于 2017-3-16 04:45:15 | 显示全部楼层
不能用,错误
routeros
回复

使用道具 举报

发表于 2017-3-16 05:13:13 | 显示全部楼层
只能加一个,只能加一个
routeros
回复

使用道具 举报

发表于 2017-3-17 00:42:35 | 显示全部楼层
请修复下,在6.34下只能添加1条
routeros
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 13:53 , Processed in 0.108161 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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