[教學] Asus Merlin + v2ray + ws + tls + cdn

本帖最後由 upi 於 2019-10-26 16:12 編輯

小弟好耐冇係HKEPC發帖.

今次突登講吓(AC86U) merlin+v2ray server+ws+tls+cdn, 話說近來用SS經常被GFW封IP, 咁搞唔係辦法, 邊有咁多IP可以轉.

早排SS出咗新v2ray-plugin, 用嚟取代已陣亡的simple-obfs, 小弟研究咗一陣, v2ray-plugin可以用websockets+tls+CDN, 但係就唔覺個plugin有埋nginx/caddy功能, 不過都可以用websocket經CDN轉發, 咁即係v2ray-plugin其實係用v2ray.exe運行websocket+tls

於是試吓將用開的merlin + v2ray server + SS 再增加入steamsetting websocket + tls再接CDN.
用v2ray行SS而唔直接用ss-server, 係因為可以直接將v2ray裝落JFFS, 唔駛用USB手指裝entware咁麻煩.

用tls最麻煩係要搞domain name + cert, 上網爬文都係叫你用USB裝entware + acme 去let's encrypt gen張新cert, 不過既然merlin本身的DDNS已內置let's encrypt有現成的cert, 就直接採用, 最終不用裝entware, 搞咗一輪終於搵到張cert/key收係邊

不過都係搞唔掂SS+WS+TLS, 睇access log係有連入, 但係shadowsock reject冇回應, 唔明解
(update: 爬文後, v2ray內置的SS server係唔識直接讀取ws+tls, 要中間加個隨意門dokodemo轉成TCP先得, 仲要修改iptable先可轉發ws數據去dokodemo出TCP, 咁煩, 都係唔好亂搞)

咁唯有轉用較食ram/cpu的vmess, 網上的V2ray server都係教你玩vmess+websocket+tls+web+cdn, 其實你冇經web(Nginx/Caddy)都可以用到CDN
https://toutyrater.github.io/advanced/wss_and_web.html

廢話小講, 個v2ray server config.json inbound係咁:
"inbound": {
      "port": 443,
      "protocol": "vmess",   
      "settings": {
        "clients": [
          {
            "id": "uuidxxxxxxxxxxxxxx",  //UUID自己去gen
            "alterId": 64
          }
        ]
    },
            "streamSettings": {
                "network":"ws",  //websocket
                "security": "tls",  //tls
                "wsSettings":{
                 "path":"/",  //(update: path 可以加字節, i.e. /v2ray, 以防GFW白撞)
                 "headers":{}
                },
                "tlsSettings": {
                    "serverName": "mydomain.dyndns.com", //即係你個merlin DDNS
                    "certificates": [
                        {
                            "certificateFile": "/jffs/.le/mydomain.dyndns.com/fullchain.pem",
                            "keyFile": "/jffs/.le/mydomain.dyndns.com/domain.key"
                        }
                    ]
                }
            }
        },

唔好照炒, 記得改返個UUID, mydomain.dyndns.com 就改返你個merlin ddns個domain.
最新版merlin, Let's encrypt張cert 改咗係/jffs/.le/ddns個domain/ (以前放係/jffs/ssl /jffs/.cert /etc/ssl, 搬咗幾次)

CDN點玩, 請自行上google睇吓, 我就用cloudfare,
asus merlin 所有DDNS domain都被GFW封咗, 你冇得直接用嚟連VPN, 要去申請另一個domain name (網上大把free domain可以申請), 再用CDN個DNS指過去merlin個domain name度. 如你已有現成domain name, 也可以用cname增加sub-domain指去merlin個domain name, 記得CDN set返proxy咁先可以玩CDN轉發, 咁就唔怕你個merlin IP被封.

Update: 實測, SZ中電信固網 OK, router cpu usage: RTHK radio 1-2%, open webpage (立場) 10-20%, lihkg app 3-5%, iphone play youtube 1-3%, cpu loading 唔係想像中咁勁, ram usage keep 住56%, 輕用量可以接受.

==================================================================
10月26日更新
Asus Merlin Let's encrypt 出現不能renew cert現象, 上網爬文發現始自10月初, 應是let's encrypt停了renewal

咁張cert expired就用唔到, 咁點算?

當你原本張CA signed cert到期後, 自己login asus merlin admin GUI
Advance setting > WAN > DDNS
唔用free cert from Let's encrypt, 改用import/persistent auto-generated
generate new cert = yes
additional cert san = "xxx.dyndns.com" //你router個DDNS domain name
click apply
之後reboot router, 等v2ray去apply張新cert

咁仲未用到CDN
login Cloudflare
domain > SSl/TLS
由full (strict) 改返用 full, (Encrypts end-to-end, using a self signed certificate on the server)

如要直連DDNS, 因為張cert係self-signed, 係shadowrocket server要enable Allow Insecure, 咁先連到,
如經CDN, 因為CDN有CA signed cert, 所以唔駛allow insecure

非常實用, 稍後試試, 先多謝師兄

TOP

回覆 1# upi


師兄想請教下CDN應該點set
我係屋企隻NAS度跟教學起咗個V2Ray + WS + TLS
之後申請咗個免費domain,然後去Cloudflare度整
個教學係將個domain指去Google Cloud個IP
但我屋企個IP會轉,Cloudflare又唔俾我入NAS個DDNS名
請問可以點做?

TOP

回覆  upi


師兄想請教下CDN應該點set
我係屋企隻NAS度跟教學起咗個V2Ray + WS + TLS
之後申請咗個免費do ...
pineapple2006 發表於 2019-9-25 18:20


留意返cloudflare 要root domain 名...例如example.com
唔可以係 abc.example.com

TOP

回覆 3# pineapple2006

假設你個NAS叫nas.dyn.com
你先去申請個free domain name, e.g. abc.tk
跟住去cloudflare, 登記abc.tk, 轉埋用cloudflare 個nameserver
加cname www nas.dyn.com proxy (用proxy 先有CDN)
咁你個 www.abc.tk = nas.dyn.com
跟手記得去cloudflare DNS set 返ssl/tls 用full (strict), 咁先行連到htts/tls去NAS個vpn server

TOP

回覆  pineapple2006

假設你個NAS叫nas.dyn.com
你先去申請個free domain name, e.g. abc.tk
跟住去cloud ...
upi 發表於 2019-9-26 16:25

想問ching, 如果v2ray 用tls, 申請張cert, 要用邊個domain 名去申請?

via HKEPC IR Pro 3.6.1 - iOS(3.0.0)

TOP

下次回香港嘗試師兄的教法

via HKEPC IR Pro 3.6.1 - Android(3.3.1)

TOP

回覆 6# fatman

merlin本身的DDNS已內置let's encrypt有現成的cert

如你係用asus個ddns, 即係用xxxxx.asuscomm.com去let's encrypt gen張cert, depend on 你係merlin揀邊個free dyndns service.

張cert有效期係90天, 到時renew咗張cert後, 記得restart router等v2ray server用到張新cert

TOP

回覆  fatman

merlin本身的DDNS已內置let's encrypt有現成的cert

如你係用asus個ddns, 即係用xxxxx.asus ...
upi 發表於 2019-9-27 11:02

ching 即係话用两个名其中一个都可以借返去自己香港个server度?

via HKEPC IR Pro 3.6.1 - Android(3.3.1)

TOP

回覆 9# Eric j


    merlin個 tls cert一定係用返merlin 個DDNS domain去申請, 嚟個係內置setting, 冇得改.

你係唔可以用到merlin 個ddns domain直接去行CDN, 因為你冇得轉merlin ddns domain個nameserver, 強行轉咗即係自廢ddns.

只有用第二個domain係Cloudflare指去ddns domain玩CDN

VPN client 用第二個domain去connect VPN server

TOP