xuxi3201 发表于 2016-4-12 03:00:24

请教dns转静态的方法

网上看见一个脚本,可以把DNS缓存转静态。
可以是里面指向的ip 都是 192.168.0.1。请高手指点,如何改成正确的ip数字,
谢谢

/system scheduler add name=dnsS interval=20 on-event={:local dname ;:foreach i in= do={;   :set dname    ;   :if (="") do={/ip dns static add name=$dname address=192.168.0.1};};/ip dns cache flush}
   
已经启用dns功能的,不要随便用自己电脑测试, 这个定时任务会把dns改错误了。。

koutingshui 发表于 2016-4-12 10:15:30

是实现图片中的效果吧

xuxi3201 发表于 2016-4-12 22:02:33

本帖最后由 xuxi3201 于 2016-4-13 09:14 编辑

:local dname
:local dadd
:foreach i in= do={
   :set dname    
   :set dadd    
   :if (="") do={/ip dns static add name=$dname address=$dadd ttl=10m} ;}


自己瞎猜, 搞出来。
请高手指点:上面的语句,同一个域名,只记录一个ip ,

大的网站有多个ip并行,
请问如何实现: 同一个网站多个ip都记录?

cspm333 发表于 2016-4-13 13:35:28

本帖最后由 cspm333 于 2016-4-13 14:02 编辑

xuxi3201 發表於 2016-4-12 22:02
:local dname
:local dadd
:foreach i in= do={

script:
:foreach i in= \
    do={
         do {
               :local dname
               :if ([:len ]=0) \
                     do={/ip dns static add name=$dname address= ttl=10m}
               } \
         on-error={}      
          }


xuxi3201 发表于 2016-4-13 22:45:58

谢谢cspm333 ,
我把你的代码改成:可以了。

:foreach i in= \
   do={
            do {
                  :local Add
                  :if ([:len ]=0) \
                      do={/ip dns static add name=address=$Add ttl=10m}
                } \
            on-error={}      
         }

我是6.32的虚拟机版本,现在 ip dns static 里面,同一个域名,有很多ip,
我想要的就是这个效果。

xuxi3201 发表于 2016-4-17 15:36:20

:foreach i in= \
   do={
            do {
                  :local Add
                  :local Nam
                  :if ([:len $Nam]<17&&[:len $Nam]>5) do={/ip dns static add name=$Namaddress=$Add ttl=9m}
                }
            
         }

最新的dns转静态语句,放在定时里,每2分钟执行一次,
因为加了3个过滤条件, 现在 占cpu不是很多,可以进入应用阶段。

做了静态dns是不是网页反应快了很多呢,我来测试。

cspm333 发表于 2016-4-17 16:17:06

本帖最后由 cspm333 于 2016-4-17 16:21 编辑

xuxi3201 發表於 2016-4-17 15:36
:foreach i in= \
   do={
            do {

script語法嚴重錯誤,幫您修改:
:foreach i in= \
   do={
            :local Add
            :local Nam
            :if ([:len $Nam]<17&&[:len $Nam]>5&&[:len ]=0) \
                do={/ip dns static add name=$Namaddress=$Add ttl=9m}
         }



xuxi3201 发表于 2016-4-17 18:06:06

谢谢。

我中午测试通过了,才发上来的, 已经把1700个域名 转为静态。
我是ros6.34.4

如果可以,cspm333 请帮忙增加个条件: .com .cn .net .org 结尾的域名才转静态。

cspm333 发表于 2016-4-17 19:37:34

xuxi3201 发表于 2016-4-17 18:06
谢谢。

我中午测试通过了,才发上来的, 已经把1700个域名 转为静态。


很簡單,搜尋比對時多個&&(and) 條件即可.
:foreach i in=[/ip dns cache all find type="A" && \
                   (name~".com" || name~".cn" || name~".net" || name~".org")] \
   do={
            :local Add
            :local Nam
            :if ([:len $Nam]<17&&[:len $Nam]>5&&[:len ]=0) \
                do={/ip dns static add name=$Namaddress=$Add ttl=9m}
         }

\ :下段內容仍接序本行
&& :和
|| :或
~ :包含的字串

47771885 发表于 2016-4-17 19:45:38

本帖最后由 47771885 于 2016-4-17 19:49 编辑




name~"(com|cn|net|org)\$"
查找条件添加以上条件根据需要修改

不用谢。。我是雷锋他老乡

如果实在要谢 请关注 http://www.radiusd.com/

顺便说下你的这个会脚本会很耗资源 需要改进

xuxi3201 发表于 2016-4-17 20:44:09

谢谢你们!

seignior 发表于 2016-4-17 20:52:42

47771885 发表于 2016-4-17 19:45
查找条件添加以上条件根据需要修改

不用谢。。我是雷锋他老乡


你那网站有时候能访问有时候访问不了。


额外对楼主说,ros的dns实在不咋地............

xuxi3201 发表于 2016-4-17 21:20:59

谢谢 cspm333   ,已经搞定.com .cn .net .org 结尾。
谢谢 47771885 , 你说对了,我昨天写的语句执行一次 一个cpu满载1分钟。今天的一个cpu只要3秒钟。

seignior我是为了加快常用网站的打开速度, 所以只缓存长度小于17的域名。
如果还是慢, 就半小时清空一次。

cspm333 发表于 2016-4-17 21:25:23

47771885 发表于 2016-4-17 19:45
查找条件添加以上条件根据需要修改

不用谢。。我是雷锋他老乡


剛驗證語法確實是如此.
小弟長知識了,感謝您~

suai 发表于 2016-4-18 23:42:47

都是高手,学习了,谢谢
页: [1]
查看完整版本: 请教dns转静态的方法