admin avatar

轉載:MikroTik RouterOS利用DNS配合防火牆攔截廣告

🕚 by admin





一些關於PPPoE撥號配置等基礎操作網上教程較多,後期如有時間我會考慮一起記錄下來,今天介紹的主要是如何利用DNS靜態列表配合防火牆攔截特定廣告或者跟踪器URL。

配置前的準備工作,比如winbox的下載和連接我這裡不詳述,建議將RouterOS更新到最新,當然升級也比較方便可以直接在線升級。

1、配置靜態DNS (WinBox > IP > DNS > Static)

首先打開 DNS Settings ,根據個人喜好配置Servers為上游遞歸DNS服務器,為取得最佳CDN查詢效果,建議使用運營商提供的DNS服務器,取ping值最小的為佳,當然如果運營商的DNS存在劫持的話也可以選擇公共DNS服務器,填寫完畢後點擊 Apply 使配置生效,如下圖所示:

Mikrotik RouterOS 配置DNS服務器

然後點擊 Static ,打開 DNS Static ,點擊+加號打開 New DNS Static Entry 如下圖所示:

Mikrotik RouterOS 配置靜態DNS記錄

參考上圖,假設我們要屏蔽的廣告或者跟踪器域名是 ads.domain.com ,那麼Name字段填寫這個域名(注意這裡只能是域名, 不能 填寫帶 http:// 或者 https:// 的URL),Address字段填寫一個特殊的IP地址,我們這裡選用240.0.0.1,這個IP地址最好不能是公共互聯網絡上的公網IP,當然也不能是內網私有IP,否則可能會導致不兼容問題,240.0.0.1是個保留地址符合要求。完成配置後點擊OK!

測試配置結果,假設路由器IP是 192.168.88.1 ,那麼使用命令 nslookup ads.domain.com 192.168.88.1 ,如果返回 240.0.0.1 則表明配置生效!

到這裡我們假設的廣告域名ads.domain.com已經無法解析,如果我們上網客戶端使用的路由器作為DNS服務器,那麼所有和此域名相關的URL已經無法訪問,到這裡就結束了嗎?不!必須配置防火牆,因為我們將廣告或者攔截器域名解析到一個黑洞IP,所有發往這個IP的數據包不會得到任何應答,因而會響應超時,不過TCP有個特性,會不斷嘗試重新發包如果我們不reset的話,對於瀏覽器來說,頁面顯示會卡住,也消耗了客戶端的計算資源,所以還需要配置防火牆,reset或者drop所有發往240.0.0.1的數據包。

2、配置防火牆(WinBox > IP > Firewall > Filter Rules)

首先打開 Firewall 界面,切換到 Filter Rules 選項卡,點擊+加號添加 Firewall Rule ,如下圖所示:

Mikrotik RouterOS 配置防火牆規則 如上圖添加一條forward的Reject記錄,攔截240.0.0.1的TCP數據包,處理方式是TCP Reset,這個在Action選項卡設置,如下圖所示,編輯完成後點擊OK添加。

Mikrotik RouterOS 配置防火牆規則

除了攔截TCP數據包外,我們還需要對UDP協議以及其他流量類型進行處理,具體的配置大同小異,以下僅列出必要的配置內容:

攔截UDP:

1
2
3
4
5
6
7
8
9
10
WinBox > IP > Firewall > Filter Rules > Add [+]
  General
    Chain: forward
    Dst. Address: 240.0.0.1
    Protocol: 17 (udp)
    Connection State: new
  Action
    Action: reject
    Reject With: icmp network unreachable
  Comment: Adblock udp unreachable

攔截其他類型流量:

1
2
3
4
5
6
7
WinBox > IP > Firewall > Filter Rules > Add [+]
  General
    Chain: forward
    Dst. Address: 240.0.0.1
  Action
    Action: drop
  Comment: Adblock drop

3、配置DHCP Server(WinBox > IP > DHCP Server > Networks > Edit Primary Network)

參考下圖打開DHCP Server的網絡配置界面,配置默認分配給客戶端的DNS服務器為Mikrotik路由IP,我們這裡是 192.168.88.1 ,大家視情況修改,完成編輯後即可點擊OK。

Mikrotik RouterOS 配置DHCP Server

4、進階內容

4.1 利用正則表達式匹配域名

大家可能注意到在第1步的設置靜態解析 New DNS Static Entry 界面有個 Regexp 文本框域,通過這個我們可以使用正則表達式匹配查詢域名,這樣會更加靈活,比如規則 ^ads[A-Za-z0-9-]*\.example\.com$

Mikrotik RouterOS 配置靜態DNS正則匹配

如果填寫了 Regexp 就不再需要填寫 Name ,此規則將匹配所有以 ads 開頭和 .domain.com 結尾的域名,包括但不限於以下幾種:

1
2
ads.domain.com
adsabc.domain.com

正則表達式比較強大,具體要看各位發揮了。

4.2 重新定向內網所有DNS查詢

有時候可能會出現客戶端採用自定義DNS服務器的方式繞過我們DHCP分配的DNS服務器,這樣攔截規則也無法生效,這時候我們就可以使用防火牆劫持DNS端口的數據重定向到網關的DNS。

注意一般DNS查詢分為UDP協議(常用)和TCP協議,這兩種都使用了53端口,所以我們需要分別設置,以下僅給出配置信息供參考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
WinBox > IP > Firewall > NAT > Add [+]
  General
    Chain: dstnat
    Dst. Address: [!] <your Mikrotik IP>
    Protocol: 6 (tcp)
    Dst. Port: 53
    In. Interface: <your LAN bridge/interface>
  Action
    Action: redirect
    To Ports: 53
  Comment: DNS Redirect (TCP)
WinBox > IP > Firewall > NAT > Add [+]
  General
    Chain: dstnat
    Dst. Address: [!] <your Mikrotik IP>
    Protocol: 17 (udp)
    Dst. Port: 53
    In. Interface: <your LAN bridge/interface>
  Action
    Action: redirect
    To Ports: 53
  Comment: DNS Redirect (UDP)

以上和<your LAN bridge/interface>請自行替換為你的路由器IP和局域網網橋名稱。

via : https://wangye.org/blog/archives/1202/





💘 相关文章

写一条评论

Based on Golang + fastHTTP + sdb | go1.18.3 Processed in 2ms