- 什么是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填寫。
確定后在Winbox中選IP->Firewall,選NAT頁面,點紅色加號“+”,按下圖設置:
Chian=dstnat,Protocol=UDP,Dst.Port=53,Action=dst-nat,To Address=192.168.27
命令行設置:
/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效果圖:
可以看到去往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
方法2----------------------------------------------------------------------------------------------------------------------------------------------
DNS重定向
如果客戶端沒有自動獲取或者設置RouterOS網關作為DNS,可以將內網向外的所有DNS請求都通過dst-nat重定向到內網,即強制所有用戶向外網的dns請求都到本地網關解析。
進入ip firewall nat,在該菜單下配置dst-nat規則,添加一條chain=dstnat,protocol=udp,port=53
設置action參數為redirect,指定到本地的53端口
------------------------------------自動清理dns Cache 的腳本
由於我們是使用的盜版,ROS在這塊有個BUG可是防盜版的原因吧,ROS緩存數過多就會溢出所以我們要做個自動清理的腳本。