安裝(進階篇)

雖然 V2Ray 預設已經可以翻牆,但在牆越來越高的情況下,做多些準備永遠無壞。雖然 Asus Router 性能不足以安多一個 NGINX server,但是如果純 V2ray + TLS 還是可行的。
V2ray 本身是完整支援 TLS,所以 firewall 只會看到一個加密連線,隱密性比較強。
不過首先大家一定需要一支 USB 手指才能安裝。

在大家安裝之前,會假設了大家已經完成了基本篇,亦即時已經建立了 v2ray-check.sh 等等 script.
在此不會再重覆。

安裝 Entware

Entware 必須安裝在 USB 手指,所以需要事前準備。

有師兄留言提醒,Entware 會和 Asus 內置 app 如 Download Master 等相撞,所以記得安 Entware 前要 uninstall 所有華碩 app.
而 Asuswrt-Merlin 已經內置了 Entware 的安裝檔,直接執行就可以了。

asuswrt merlin install entware
選擇你的 USB 手指,今次就是 1

asuswrt merlin install entware
Entware 安裝完成

安裝完要留意,Entware 會覆蓋原本的 services-start 和 post-mount.
所以要重新將內容(除了 #!/bin/sh 這一句)抄進這兩個檔案。

將這句放在 services-start 最底。

將這句放在 post-mount 最底。

asuswrt merlin entware overwrite script
Entware 將原本的 script overwrite 了

安裝 cert

完整的 TLS 連線意味著雖要完整的證書,自簽證書不太可行(有不少 client 不支援),所以這時候就需要 Let’s Encrypt 這類服務了。Asuswrt-Merlin 現在已經可以使用 Let’s Encrypt,可以直接 create cert,但似乎因為企企本身使用 NameCheap 服務,所以不能使用內置的 Let’s Encrypt,那麽我們需要另一個較簡單的服務 – acme.sh
acme.sh 使用的都是 Let’s Encrypt,不過生成証書過程比較簡單,亦沒有限定一定需要 www 的域名,而且即使沒有 web server 都沒有問題。

asuswrt-merlin build-in letsencrypt
現在 Merlin 版已經內置了 Let’s Encrypt

因為 Asuswrt-Merlin 本身並沒有 Apache 或 NGINX,所以 acme.sh 需要 standalone mode 來運作,而 standalone mode 需要另外安裝 socat 套件才行,entware 就有這套件了。

再執行這句指令就可以安裝:

acme.sh 會安裝在 root,不過 Asuswrt 的 root 只是暫存性質,建立在 ram 上,一旦 reboot 就會消失不見,所以需要抄到 USB 手指上。

 

asuswrt merlin acme install success
成功安裝 acme.sh
asuswrt merlin install socat
acme.sh 需要 socat 才能使用 standalone mode
成功安裝 socat 和相關 library

安裝完後,就可以生成 cert 了。
Standalone mode 會使用 port 80 來驗証域名。
但 Asuswrt 的 webui 會佔據 port 80,所以需要將 webui 設定為 https only,關閉 webui 的 http (port 80) 服務。
並在 firewall 上需要開啓這個 port.

asuswrt merlin webui https
要將 webui 設定為 https only,否則會自動不斷佔據 port 80

然後生成証書:
(提醒大家,需要將 ent-home.asuscomm.com 改成你申請的域名)

証書會擺放在 /jffs/ssl/ 之內,所以直接使用就可以了。
放在 /jffs/ssl/ 另一個好處是 webui 本身都可以使用這張 ssl cert,一舉兩得。

asuswrt merlin acme created cert
成功產生證書

Let’s Encrypt 的證書有效期是 90 天,所以需要自動更新。

首先建立 acme-issue.sh,將 acme.sh 加入 cron job .

將以下內容抄進去:

按 Ctrl + X 退出,之後按 Y 確定儲存,再按一下 Enter 確定檔案名。

之後需要更改 services-start,令到每次 reboot 都會載入 acme-issue.sh
但還有其他指令需要加入去,所以先等一等。

只要 router 不關閉,那麽 acme.sh 就會自動更新証書並會抄進 /mnt/sda1/acme.sh/cert 之內。
雖然 cert 會自動更新,但 v2ray 卻不會因為 cert 更新而自動重新載入,所以要再加指令,令 V2ray 定時重新啓動。