RouterOS的/ip firewall address-list支持填写域名,并自动解析返回IP地址,但仅支持明文域名,无法通过正则表达式去匹配泛域名。一般大型网站,都是由多个二级或者三级域名组成,图片、下载、视频和css都是单独的域名,如某宝网站可以通过浏览器的F12抓取域名,如下图:

可以看到域名g-search2.alicdn.com

然后在windows的cmd下通过nslookup命令解析,可以看到g-search2.alicdn.com是CNAME到了img.alicdn.com.danuoyi.alicdn.com域名,解析的IPv4和IPv6地址

C:\Users\yus>nslookup g-search2.alicdn.com
服务器:  UnKnown
Address:  192.168.80.1

非权威应答:
名称:    g-search2.alicdn.com.danuoyi.tbcache.com
Addresses:  182.140.130.252
Aliases:  g-search2.alicdn.com
 
C:\Users\yus>nslookup gw.alicdn.com
服务器:  UnKnown
Address:  192.168.80.1
 
非权威应答:
名称:    gw.alicdn.com.danuoyi.tbcache.com
Addresses:  240e:d9:a003:1400:3::3fb
240e:d9:c202:300:3::3f3
118.112.14.5
182.140.130.251
182.242.89.225
219.144.108.251

Aliases:  gw.alicdn.com

还有g-search1.alicdn.com 、g-search3.alicdn.com和gw.alicdn.com,同样在cmd命令下操作解析,分别转发到了gw.alicdn.com.danuoyi.tbcache.com和g-search1/2/3.alicdn.com.danuoyi.tbcache.com。由于域名过多,如果通过/ip firewall address-list一个个添加非常繁琐。可以选择DNS cache使用正则表达式去抓取这些域名的IP

首先需要开启DNS服务,在cache列表中看到这些域名解析信息如域名、IP和类型等:

分别转发到了gw.alicdn.com.danuoyi.tbcache.com和g-search2.alicdn.com.danuoyi.tbcache.com,他们的共同点是相同二级域名danuoyi.tbcache.com,这样使用脚本进行匹配,匹配原则是包含域名,且type为A记录的IP地址加入到一个address-list中

在/system scripts编写以下脚本,这里还包含了另外一个域名danuoyi.alicdn.com(此脚本基于RouterOS v7编写)

脚本文本如下:

:local namestr {"*.danuoyi.tbcache.com";"*.danuoyi.alicdn.com"}
:local n [:len $namestr]
 
:for i from=0 to=($n-1) do={
:local websit [:pick $namestr $i]
:foreach i in=[/ip/dns/cache find name~"$websit" type=A] do={
:local ipadd [/ip/dns/cache get $i data]
:do {/ip firewall address-list add address=$ipadd list=ali } on-error={}
}
}


然后在/system scheduler计划任务中加入在script中创建的脚本名称,interval是间隔5秒执行,也就是每5秒抓取一次dns cache列表的域名

涉及相关域名的IP地址将会被加入到ali地址列表中(/ip firewall address-list可以看到),如何调用这个地址列表,就是管理员自己发挥了。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章很值,打赏犒劳作者一下