RouterOS DNS劫持(转)

Mikrotik DNS缓存设置建议

Miktotik Router 设置

  1. 首先设置打开mikrotik DNS的缓存功能:
    1
    /ip dns set allow-remote-requests=yes
     
  1. 将所有的TCP和UDP的53端口的请求重定向到路由器53端口:(如果你有多个路由可以进行重定向设置-一般可以跳过这一步)
    1
    2
    /ip firewall nat add chain=dstnat protocol=tcp dst-port=53 action=redirect to-ports=53 comment="DNS TCP"
    /ip firewall nat add chain=dstnat protocol=udp dst-port=53 action=redirect to-ports=53 comment="DNS UDP"
     
  1. 设置Fasttrack 使来自路由器的所有DNS流量绕过队列:
    1
    2
    /ip firewall filter add chain=forward protocol=tcp dst-port=53 action=fasttrack-connection comment="Fasttrack DNS TCP"
    /ip firewall filter add chain=forward protocol=udp dst-port=53 action=fasttrack-connection comment="Fasttrack DNS UDP"
     

  1. 如果你是通过PPPOE拨号上网的,想自行设置DNS地址,打开PPPOE网口,取消 Use-Peer-DNS

  1. 设置 DNS 的服务器地址为 自定义DNS 或 上游运营商的DNS地址-路径:
    1
    /ip dns
     

ps:当同时设置了静态和动态服务器时,静态服务器条目更可取,但是这并不表示将始终使用静态服务器(例如,以前从动态服务器接收查询,但后来添加了静态,那么将首选动态条目)

  1. 设置DHCP服务器的DNS地址为 自定义DNS 或 上游运营商的DNS地址-路径:
    1
    /ip dhcp
     

删除本地缓存

  1. 删除电脑上的DNS缓存:

    • 打开CMD控制台,输入:

      1
      ipconfig /flushdns
       
    • 查看缓存内容:

      1
      ipconfig /displaydns
       
  2. 删除浏览器DNS缓存:

    • 某厂商浏览器:
      打开浏览器的选项-高级设置,里面有一个选项是 “清除上网痕迹” - “清空缓存”, 点击 “清除”
    • chrome浏览器:
      设置-隐私设置-清除浏览数据-缓存的图片和文件-清除数据
  1. 刷新 Mikrotik RouterOS 的DNS缓存:
    1
    /ip dns cache flush

 

 

 

什么是DNS劫持

  DNS劫持就是通过技术手段,来控制用户解析域名的IP地址。举个例子,正常解析域名www.awolf.net时应该返回IP:64.64.30.60;但现在通过DNS劫持,使域名www.awolf.net解析返回IP:1.1.1.1,以达到控制www.awolf.net该域名,进而控制访问www.awolf.net所打开页面。这就是DNS劫持。

  • 为什么要做DNS劫持

  有了DNS劫持,我们就可以随意控制路由器下游用户的域名解析,从而达到限制、强制访问某些网站;或者在用户访问不存在的网站时给予友好的提示;或者把IIS上多个站点用主机头区分……

  • 如何在Ros上做DNS劫持

  在ROS上,可以通过对53端口的UDP访问进行dst-nat,to-address指向我们自己的dns服务器或如果Ros开启DNS服务,也可以指向Ros本身。

WinBox设置:

  本例中使用ROS自带的DNS服务,ROS IP为192.168.27.254。

  首先开启ROS的DNS服务:Winbox中选IP->DNS,在Static页面中点Settings,按下图设置,其中202.96.64.68和202.96.69.38按你所在地区和ISP的DNS填写。

DNS设置

确定后在Winbox中选IP->Firewall,选NAT页面,点红色加号“+”,按下图设置:

Chian=dstnat,Protocol=UDP,Dst.Port=53,Action=dst-nat,To Address=192.168.27

General页设置

 

Action页设置

命令行设置:

/ip firewall nat

add action=dst-nat chain=dstnat disabled=no dst-address-type=!local dst-port=53 protocol=tcp to-addresses=192.168.0.1 to-ports=53

add action=dst-nat chain=dstnat disabled=no dst-address-type=!local dst-port=53 protocol=udp to-addresses=192.168.0.1 to-ports=53

/ip dns

set allow-remote-requests=yes cache-max-ttl=1w cache-size=4096KiB max-udp-packet-size=512 primary-dns=202.96.64.68 secondary-dns=202.96.69.38

设置成功的Firewall->Connections效果图:

DNS劫持效果图

可以看到去往202.96.64.68的DNS请求都被192.168.27.254回应了。

注意:如果要使用内网服务器做域名解析服务,必须在以上DNS劫持设置规则之上再添加一条允许该服务器访问外网DNS的规则,否则连内网DNS服务器的解析请求都被劫持了,就无法正常进行域名解析了。

例如内网DNS服务器IP是192.168.27.1,则需要在DNS劫持规则之上添加如下规则:

/ip firewall nat

add action=accept chain=dstnat disabled=no dst-port=53 protocol=udp src-address=192.168.27.1

排除DNS劫持

 

 

 

方法2----------------------------------------------------------------------------------------------------------------------------------------------

DNS重定向

如果客户端没有自动获取或者设置RouterOS网关作为DNS,可以将内网向外的所有DNS请求都通过dst-nat重定向到内网,即强制所有用户向外网的dns请求都到本地网关解析。

进入ip firewall nat,在该菜单下配置dst-nat规则,添加一条chain=dstnat,protocol=udp,port=53

RouterOS DNS劫持 -- A记录 - athlon_sds - YuSong的世界

设置action参数为redirect,指定到本地的53端口

RouterOS DNS劫持 -- A记录 - athlon_sds - YuSong的世界

 

 

 ------------------------------------自动清理dns Cache 的脚本

 

由于我们是使用的盗版,ROS在这块有个BUG可是防盗版的原因吧,ROS缓存数过多就会溢出所以我们要做个自动清理的脚本。

 

posted @ 2018-11-20 09:42  yjig  阅读(7851)  评论(0编辑  收藏  举报