Asuswrt Merlin Diversion (分享器擋廣告)

文章目錄

注意

系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

Asuswrt-Merlin 是甚麼

Asuswrt-Merlin 是個 Asus router 的 3rd party fireware, 提供了不少增強的功能, 也有很多 plugin 可以使用. 刷機的方法可參考官方文件: https://github.com/RMerl/asuswrt-merlin.ng/wiki/Installation (不過寫的滿簡單的, 建議 google 一下其他人寫的介紹)

Diversion 是甚麼

Diversion 是個可安裝在 Asuswrt Merlin 上的 AD block 軟體, 他的原理是直接在 Hub 上面裝一個 DNS server, 然後當你的 client 要查某一個 domain 的時候, 他如果發現這個 domain 在他的黑名單裡面, 就把他擋掉.
要注意的是, Diversion 為了要檔 https, 有安裝 pixelserv-tls, 可參考這個 FAQ 看一下這是甚麼東西還有他能做的事情.

安裝步驟

Asuswrt Merlin Web GUI 設定

  1. Asuswrt Merlin 的 Web GUI 只要把 JFFS 打開就好, 其他都得使用 command line.

Diversion 安裝

  1. 在上面的 JFFS 安裝好後, JFFS 一開始會掛在 /dev/sda1, 而且格式是 NTFS (可用 fdisk 看)

    1admin@RT-AC66U\_B1-B898:/tmp/home/root# df
    2Filesystem           1K-blocks      Used Available Use% Mounted on
    3/dev/root                33408     33408         0 100% /
    4devtmpfs                127732         0    127732   0% /dev
    5tmpfs                   127836      1532    126304   1% /tmp
    6/dev/mtdblock4           64256      2868     61388   4% /jffs
    7/dev/sda1             60058960     11712  60047248   0% /tmp/mnt/sda1
    
  2. 安裝 amtm, 指令如下 (Asuswrt-Merlin 384.15 已內建 amtm, 不須另外安裝):

    1curl -Os https://diversion.ch/amtm/amtm sh amtm
    
  3. 把 USB 格式化成 ext, 步驟如下

    1. 執行 /jffs/scripts/amtm
    2. 執行 fd
    3. 然後照著說明格式化, 格式化完後會重開機
    4. 完成後 df 如下
    1admin@RT-AC66U\_B1-B898:/tmp/home/root# df
    2Filesystem           1K-blocks      Used Available Use% Mounted on
    3/dev/root                33408     33408         0 100% /
    4devtmpfs                127732         0    127732   0% /dev
    5tmpfs                   127836      1528    126308   1% /tmp
    6/dev/mtdblock4           64256      2860     61396   4% /jffs
    7/dev/sda1             59144340    184232  55955696   0% /tmp/mnt/usb
    
  4. 一樣在 amtm 裡面執行 dc, 進行 disk check, 結果如下

  5. 安裝 Diversion, 在 amtm 裡面執行 '1' (可先用 'i' 指令確認一下是用 1 來安裝 Diversion). 注意, 這裡本來應該先安裝 Entware, 但如果你嘗試安裝, amtm 會建議你直接裝 Diversion, 然後他在安裝過程中會自動安裝 Entware

  6. Diversion 安裝結果如下, 注意, 他移除了 LAN 的 DNS 8.8.8.8/8.8.4.4. 不過他沒有動到 WAN 的 DNS.

  7. 安裝 Diversion Standard

  8. 這邊注意, 要回到 Asuswrt-Merlin Web 設定

  9. 上面是寫要跳過 192.168.1.2, 但因為 pixelserv-tls 也需要 IP, 所以 192.168.1.3 也要跳過. 我後來是把 192.168.1.1~10 當成特殊用途, 所以我把 DHCP 設成從 192.168.1.11 開始分配.

  10. 接下來要輸入 pixelserv-tls 的 IP, 這裡就避開 DHCP 網段就好

  11. 選擇 log 方式, 如果你要把 log 寫下來, 就選 1

  12. 最後他會安裝到這個目錄 /tmp/mnt/usb/entware

特別注意

  1. 因為 Diversion 是使用 DNS 來 block AD, 因此 WAN 的地方可以指定 DNS

  2. 但 LAN 的地方必須清空, client 的 DNS 必須是 192.168.1.1. 因為所有連到這台 router 的電腦或手機, 他們的 DNS server 都必須是 192.168.1.1, 這樣 Diversion 才會有作用.

  3. 在 Windows 可用 ipconfig /all 檢查 DNS 是否有設定正確

Diversion 使用方法

  1. 使用 putty 連進去後, 執行 diversion, 看到如下畫面就是安裝成功了

  2. 選擇 f (follow dnsmasq.log) 可以看 log, 有以下幾種模式可以選 (實際 log 在 /tmp/mnt/sda1/entware/var/log/dnsmasq.log, 紅色的部分要看一開始設定的名字)

  3. 選擇 1, 可看到如下就是有成功了

  4. 瀏覽器會看到如下

iOS Shortcut 安裝/使用

  1. 要先打開安全性: 設定 -> 捷徑 -> 允許不受信任的捷徑
  2. 打開 https://diversion.ch/ios-shortcut.html, 選擇最新的版本

參考

  1. https://www.snbforums.com/threads/diversion-the-router-ad-blocker-v4-2-x.74941/

Posts in this Series