2020年3月28日 星期六

在Synology NAS docker上架設pi-hole來擋廣告(adblock) with RouterOS設定

目前網頁上的廣告越來越多

為了不想看到這些廣告, 可以透過自行架設Pi-Hole來檔掉部分的廣告
Pi-Hole就是透過DNS的方式來檔掉已知的廣告網址
好處是, 他會自動更新black list

如何讓Pi-Hole為你擋廣告, 可以分為兩段,
1. 架設Pi-Hole
2. 設定原本Router裡面的DNS改由Pi-Hole處理

<<1. 架設Pi-Hole>>
這邊因為我已經有Synology NAS, 所以就透過NAS上的docker來跑Pi-Hole
參考網址 :
https://www.jkg.tw/p157/
https://medium.com/@moreless/install-pi-hole-docker-on-synology-to-remove-ads-84bc92d9078d
https://mariushosting.com/how-to-install-pi-hole-on-your-synology-nas/
圖文可以參考上面連結

下面僅用文字記錄自己的安裝過程
1. DMS 套件中心 > 安裝docker套件
2. 開啟docker
3. docker > 倉庫伺服器  > 搜尋"pihole" > 下載 "pihole/pihole" 這個image
4. docker > 映像檔 > 選擇剛剛下載的pihole > 佈署 > 進階設定
    a. 進階設定 > 勾選 自動重啟
    b. 儲存空間 > 新增資料夾
        /docker/pihole/config > 掛載路徑 /etc/pihole/
        /docker/pihole/dnsmasq.d > 掛載路徑 /etc/dnsmasq.d/
    c. 網路 > 勾選 與docker host使用相同網路
    d. 環境設定,
        新增 > WEB_PORT, value = pihole網頁service的port, 可以用80或是換成其他(e.g. 11111)
        新增 > WEBPASSWORD, value = 登入pihole網頁的密碼(e.g. 22222)
        新增 > TZ, value = Asia/Taipei, 設定時區, pihole會在半夜起來更新list
        修改 > ServerIP, value = NAS在區網上的ip, (e.g. 192.168.0.88)
    e. 設定完成, 點選套用, 並打勾設定完成後啟動
    f. docker > 容器, 看看剛剛設定的有沒有跑起來了
 5. 在瀏覽器網址列輸入 http://ServerIP:WEB_PORT/admin就可以開始pihole的管理頁面
      e.g. http://192.168.0.88:11111/admin
 6. 網頁上的左邊, 有LogIn, 點選後, 輸入WEBPASSWORD即可登入(e.g. 22222)
 7. Pi-Hole設定完成


<<2. 設定路由器, 讓DNS改為pihole>>, 以RouterOS為例
更新 : 如果你是使用RouterOS的Router, 可以參考下面兩篇就好了, 比較完善
    RouterOS設定DNS Server
    RouterOS內動態確認DNS Server是否正常, 並切換設定

1.  Winbox > IP > DNS
     DNS Server : 設為pihole的IP (e.g. 192.168.0.88)
             這邊我有設定第二組(Google DNS 8.8.8.8), 想法是說如果pihole掛了, 起碼這裡還出的去
2. Winbox > IP > DHCP Server > Networks
     DNS Server : 設為pihole的IP (e.g. 192.168.0.88)
     這樣可以讓DHCP client來拿ip的時候, 拿到這組DNS回去

這樣, 應該基本效果就可以了
但是後來看到有網路上提到, 如果client端自己寫死DNS, 那就會繞掉剛剛的設定
所以透過NAT, 強制轉到pihole

Ref : https://www.reddit.com/r/pihole/comments/5g249i/tip_redirect_all_dns_to_pihole_with_mikrotik/

做dstnat, 把tcp/udp port53, dst/src address非pihole, 都導向iphole
;;; redirect DNS to PiHole
chain=dstnat action=dst-nat to-addresses=192.168.0.88 protocol=udp src-address=!192.168.0.88 dst-address=!192.168.0.88 dst-port=53
chain=dstnat action=dst-nat to-addresses=192.168.0.88 protocol=tcp
src-address=!192.168.0.88 dst-address=!192.168.0.88 dst-port=53
Hairpin, 我是沒有對外ip, 所以就沒做了
All DNS queries to PiHole shall appear to come from the router
3 ;;; hairpin NAT for PiHole
chain=srcnat action=masquerade protocol=udp src-address=192.168.1.0/24 dst-address=192.168.1.2 dst-port=53 4 chain=srcnat action=masquerade protocol=tcp src-address=192.168.1.0/24
dst-address=192.168.1.2 dst-port=53

沒有留言:

張貼留言

在Raspberry Pi 2B上跑Docker, AdguardHome, Bitwarden, RPi-Monitor

在Raspberry Pi 2B上跑Docker, AdguardHome, Bitwarden, RPi-Monitor 請先參考前置準備工作 安裝Raspberry Pi 2B 來跑docker 前置準備 安全性考量, 移除預設pi帳號 Ref :     h...