利用 Clash 旁路由在非開通國家看 Disney+

自從 Disney+ 在北美開通那一秒開始,我就一直研究如何在台灣也能舒舒服服看 Disney+?

原本想使用 Surge for macOS 直接在電腦上搭一個代理伺服器

這樣可以讓局域網內所有上網設備都能無縫爽看 Disney+

其中包含 iPhone、iPad、桌上電腦還有我最主要觀賞影片的 Apple TV

Surge 配起來是輕鬆無腦愉快,但是該軟體需要 24 小時在一台蘋果電腦上面執行,而且他會接管電腦上所有流量

每次切換線路或者 reload 的時候,某些 app 就會被強制斷線

造成執行的電腦會在日常使用中造成不怎麼舒服的體驗 🤔


於是開始找另外 Linux 的解決方案,因為我局域網內剛好有一台 Mini PC 在跑 AdGuard Home 跟其他網路應用

在諮詢過陳老師以後,他給了我幾個網址跟幾個關鍵字「Clash 旁路由」,我 Google 一下以後瞬間豁然開朗!

原來除了貴鬆鬆的 Surge 以外還有這種翻牆神器!稍微爬一下文,自己踩一點雷之後也就這麼順手搭建起來了

就稍微簡單記錄一下搭建過程~

以下是我這次安裝的環境與內部網路 IP,請根據你的網路環境進行變更

上網的主網關:192.168.88.1
安裝 Clash 的主機:192.168.88.200

主機跑的是 Debian 系統,也可以是 Ubuntu、樹莓派 Raspbian 或者其他相容系統


下載安裝 Clash

Clash 是用 Go 語言寫的開放原始碼軟體,已經有各種平台編譯好的執行檔

直接到官網根據自己 CPU 平台來下載: https://github.com/Dreamacro/clash

我的是 Intel 的 Mini PC 跑 Debian 系統,所以下載 clash-linux-amd64 的版本

首先 ssh 進去要安裝的主機內,依照下面步驟開始操作

1
2
3
4
5
6
7
8
# 下載
$ wget https://github.com/Dreamacro/clash/releases/download/v0.16.0/clash-linux-amd64-v0.16.0.gz
# 解壓縮
$ gzip -d clash-linux-amd64-v0.16.0.gz
# 搬到指定目錄並給予執行與綁定端口的權限
$ sudo mv clash-linux-amd64-v0.16.0 /usr/bin/clash
$ sudo chmod +x /usr/bin/clash
$ sudo setcap cap_net_bind_service=+ep /usr/bin/clash


設定 Clash

上面步驟把 Clash 執行檔準備好,接下來我們要開始準備設定的內容

1
2
3
4
5
6
7
8
9
10
11
# 建立 Clash 設定檔的目錄
$ mkdir -p ~/.config/clash
$ cd ~/.config/clash
# 下載 dashboard 網頁 GUI
$ wget https://github.com/haishanh/yacd/archive/gh-pages.zip
# 解縮壓
$ unzip gh-pages.zip
# 變更目錄名稱為 dashboard
$ mv yacd-gh-pages/ dashboard/
# 建立一個 Clash 設定檔,名稱必須為 config.yaml
$ nano config.yaml

接著請直接複製以下內容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
port: 7890
socks-port
: 7891
redir-port
: 7892
allow-lan
: true

mode
: Rule

log-level
: info
external-controller
: 0.0.0.0:9090
# 如果你是架在外部網路,下面可以自行加密碼會比較安全
secret
: ""
external-ui
: dashboard

dns
:
  enable
: true
  ipv6
: false
  listen
: 0.0.0.0:53
  enhanced-mode
: redir-host
  nameserver
:
   - '1.1.1.1'
    - '1.0.0.1'
# 下面 Proxy 內容請自行根據你的伺服器來填寫
Proxy
:
- name
: "USA1"
  type
: ss
  server
: ????????
  port
: ????
  cipher
: ????????
  password
: "??????"
  plugin
: ????
  plugin-opts
:
    mode
: ???

- name
: "USA2"
  type
: ss
  server
: ????????
  port
: ????
  cipher
: ????????
  password
: "??????"
  plugin
: ????
  plugin-opts
:
    mode
: ???

Proxy Group
:
- name
: Proxy
  type
: select
  proxies
:
   - USA1
    - USA2

Rule
:
# For Disney+
- DOMAIN,cdn.registerdisney.go.com,Proxy
- DOMAIN-KEYWORD,dssott.com,Proxy
- DOMAIN-SUFFIX,edge.bamgrid.com,Proxy
- DOMAIN-SUFFIX,www.disneyplus.com,Proxy
- DOMAIN-SUFFIX,dssott-cds.s.llnwi.net,Proxy
- DOMAIN-SUFFIX,alphacdn.net,Proxy
- DOMAIN-SUFFIX,dss.map.fastly.net,Proxy
# 不符合上面 Disney+ 會用到的域名,將全部直連
- MATCH,DIRECT

以上都填寫好以後記得保存

另外因為台灣沒有 DNS 污染問題,所以上面設定檔有一些更進階的功能我就沒開了


設定開機自動啓動

接下來設定一個開機自動啓動 Clash 的 Service

1
$ sudo nano /etc/systemd/system/clash.service

複製貼上以下內容:

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=clash daemon

[Service]
Type=simple
User=username
ExecStart=/usr/bin/clash -d /home/username/.config/clash/
Restart=on-failure

[Install]
WantedBy=multi-user.target

注意上面有兩處「username」,請替換成自己的使用者帳號

同樣要記得存檔退出

1
2
# 下次重新開機會自動啓動 Clash
$ sudo systemctl enable clash.service


設定轉發與路由

1
$ sudo nano /etc/sysctl.conf

找到檔案內的「net.ipv4.ip_forward=1」,把這行最前面的「#」去掉

改成像上面圖片一樣,保存退出
1
2
# 讓剛剛的修改生效
$ sudo sysctl -p

接著要建立對應的 iptables

1
$ nano iptables.sh

複製貼上以下內容:

1
2
3
4
5
6
#!/bin/bash

iptables -t nat -N clash
iptables -t nat -A clash -d 192.168.0.0/16 -j RETURN
iptables -t nat -A clash -p tcp -j REDIRECT --to-ports 7892
iptables -t nat -A PREROUTING -p tcp -j clash

同樣記得保存後退出

1
2
3
4
5
6
# 給予執行權限
$ sudo chmod +x iptables.sh
# 執行剛剛的 iptables.sh
$ sudo ./iptables.sh
# 接著直接啓動 Clash
$ sudo systemctl start clash.service

至此,如果都沒做錯的話,一個遇到 Disney+ 域名就翻牆的 Clash 旁路由就已經跑起來了

然後也可以在電腦的瀏覽器上打開安裝 Clash 伺服器 IP 網址,隨時切換翻牆線路

http://192.168.88.200:9090/ui

而且只有遇到 Disney+ 流量才會翻牆,並不會影響其他網站或者 App 所有上網的速度

如果測試都沒問題的話,需要另外安裝一個軟體,這樣重開機以後我們設定的 iptables 才不會消失

1
$ sudo apt install iptables-persistent


Client 設定

接下來我們要在需要翻牆的上網設備上面設定 Gateway 與 DNS

原本是 DHCP 自動獲取的話,就改成手動,IP 與 DNS 兩項都要改

改完之後直接打開 Disney+ App 就會發現原先無法登入的情況已經消失~

在 Apple TV 上面也是同樣的,到系統設定裡面找到網路,改成手動之後就能爽看啦!

如果在使用過程有遇到什麼問題,可以隨時在 Telegram 找到我,先這樣~我要來去追曼達洛人了~ 😍

2 個回應

  1. pacermania表示:

    請問版主:
    您用的是Shadowsocks的伺服器嗎?因為Clash設定黨似乎要填寫Shadowsocks伺服器的資料。
    謝謝。

    • jkgtw表示:

      Hi

      是的,我用其他人搭的 SS 伺服器
      還蠻多商人在賣 SS 伺服器的

發表迴響

%d 位部落客按了讚: