自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

【美博翻牆2019.12.23】美博編註:

因V2Ray官方安裝腳本等程序改變,本教程已經失效,自建V2Ray代理新教程,請參考:

-------------
美博翻牆(allinfa.com)發布的幾個目前最好的自建代理,可自行選擇使用:
自建最強科學上網5+:V2ray + Caddy + Tls + HTTP/2
自建最強科學上網4:NaiveProxy + Caddy
自建最強科學上網3:trojan + Caddy
自建最強科學上網2+:V2Ray + Caddy + Tls + WebSocket
美博點評:V2Ray、trojan、NaiveProxy代理的異同及相關問題
美博認為這幾個組合都是目前翻牆思路最好、最強的翻牆方法,可等同使用。
-------------

-------------------------------------

V2Ray提供了一個優秀的科學上網平台,網友可以在其獨特vmess協議上發揮創意設計出多樣的翻牆方法,特別是把翻牆完全隱身於訪問網站(網頁)之中,提供了目前最安全的翻牆方式。本文是在前文自建最強科學上網:v2ray+websocket+web+nginx(EasyEngine) 基礎上改進的又一個自建v2ray翻牆代理方法。

本方法代理構建的系統要求:Ubuntu ≧ 16.04 or Debian ≧ 9,建議使用 Debian 10,不適用於 CentOS 。

本方法以Caddy作為前端web伺服器,是一個輕便的web部署工具,其功能與 nginx 類似。其優點是:單文件,無依賴,安全、輕量、方便;安裝快速、不到30秒可創建一個 HTTPS 伺服器;不受制於EE的版本限制,可廣泛應用於各種系統;配置文件簡潔,多站點配置、反向代理等功能都在一個 Caddyfile 文件里配置;默認啟用HTTPS,自動簽發免費的 Let's Encrypt https 證書並自動續約,默認支持HTTP/2(H2)網路協議;還有豐富的外掛程式系統,可以快速配置緩存、CORS、自動拉取 Git 倉庫、Markdown 支持、ip/地區過濾等功能。

-------------
美博翻牆(allinfa.com)發布的幾個目前最好的自建代理,可自行選擇使用:
自建最強科學上網5:V2ray + Caddy + Tls + HTTP/2
自建最強科學上網4:NaiveProxy + Caddy
自建最強科學上網3:trojan + Caddy
自建最強科學上網2:V2ray + Caddy + Tls + WebSocket
美博點評:V2Ray、trojan、NaiveProxy代理的異同及相關問題
美博認為這幾個組合都是目前翻牆思路最好、最強的翻牆方法,可等同使用。
-------------

本文有關的幾個組件原理介紹:

V2Ray:用於構建代理繞過網路限制、審查、翻牆的平台。
Caddy:作為部署代理的前端web伺服器。
WebSocket:是一種計算機通信協議,可通過單個TCP連接提供全雙工通信通道。
HTTP/2(H2):是網際網路HTTP網路協議的主要修訂版。它源自Google最初開發的實驗SPDY協議。
TLS:安全傳輸層協議,用於在兩個通信應用程式之間提供保密性和數據完整性。
反向代理:相對正向代理而言,真實的web伺服器受到保護、對外不可見,外網只能看到反向代理,而反向代理伺服器上並沒有真實數據,從而保護web伺服器的資源安全,並可加速網站訪問速度等。

前言 基本介紹

1、V2Ray是什麼

V2Ray 是在 Shadowsocks 作者被請喝茶之後出現的一個開源項目,V2Ray是早期的叫法,後來 V2Ray 規模越來越大,就成立一個 Project V 項目。

美博翻牆這裡重點介紹建立代理的具體步驟,原理不詳細介紹,要了解原理的網友,請參考v2ray官方的詳細介紹。

v2ray.Project V GitHub項目官方: https://github.com/v2ray

v2ray.Project V 官方網站:https://www.v2ray.com/

2、V2Ray 的特點

※ 多入口多出口: 一個 V2Ray 進程可並發支持多個入站和出站協議,每個協議可獨立工作。
※ 可定製化路由: 入站流量可按配置由不同的出口發出。輕鬆實現按區域或按網域分流,以達到最優的網路性能。
※ 多協議支持: V2Ray 可同時開啟多個協議支持,包括 Socks、HTTP、Shadowsocks、VMess 等。每個協議可單獨設置傳輸載體,比如 TCP、mKCP、WebSocket 等。V2Ray提供自己原創的加密協議VMess,一般聲稱支持V2Ray,就是指支持 VMess協議;
※ 隱蔽性: V2Ray 的節點可以偽裝成正常的網站(HTTPS),將其流量與正常的網頁流量混淆,以避開第三方干擾。
※ 反向代理: 通用的反向代理支持,可實現區域網路穿透功能。
※ 多平台支持: 原生支持所有常見平台,如 Windows、Mac OS、Linux,並已有第三方支持移動平台。

3、自建V2Ray需要準備的幾個工具

1)一台 VPS 主機
2)一個網域
3)SSH連接工具:以前用putty較多,現在用Xshell很方便,本文會以Xshell進行說明。

下面將在各節具體介紹。

4、自建V2Ray的三個大的過程

建立步驟大致分為三個大的部分:

1)「伺服器端」及VPS主機端安裝代理伺服器、前端web伺服器,及其配置;即:遠端VPS主機建立代理伺服器;
2)「客戶端」軟體及配置;即:本地用戶自己的電腦端設置;
3、上網使用代理(瀏覽器設置)

美博本教程按照實際搭建過程的順序來書寫具體操作步驟,請網友自建代理時,按照下面編號順序一步一步往下走,有的步驟的先後順序是不能變動的。

具體操作步驟:

一、選擇 VPS 伺服器並安裝系統

首先我們需要一台用作建立代理伺服器的主機,我們選擇VPS主機,如何購買VPS、如何安裝系統,都很簡單,幾乎都是自動操作,很快就可以完成,請見教程:

自己搭建代理伺服器:VPS的選擇
自己搭建代理伺服器:Vultr VPS 購買圖文教程
自己搭建代理伺服器:Vultr VPS 系統安裝圖文教程

提示:
1)安裝系統時請注意,本方法適用於 Ubuntu ≧ 16.04 or Debian ≧ 9,建議使用 Debian 10,不適用於 CentOS;
2)VPS安裝系統後主機會顯示:ip地址、密碼、用戶名(默認是root),後面會用到。

二、購買網域並設置與伺服器ip關聯

利用v2ray建立代理,並非一定需要網域,不要網域也可以建立代理。但是,整合有網域的代理技術,可明顯提高代理安全性,多一個網域整合進來是值得的。

美博本文介紹的是整合有網域的方法。

請參考教程:

自己搭建代理伺服器:網域購買及設置與ip伺服器關聯

網域是為了建立網站(網頁)用的,本方法實際建立一個網站(網頁),將翻牆代理隱身其中,翻牆就像是實實在在的在瀏覽網站,消除代理的特徵信號,提高翻牆代理安全性,這樣的思路一直以前的翻牆軟體難以實現的,自從v2ray發布後,眾多的網友不斷推進v2ray用法,目前成為最好的翻牆方法系列。

三、用SSH工具連接VPS伺服器

要如何操作遠端VPS主機?如何發出指令讓遠端伺服器執行?其實很簡單。在自己的電腦上安裝一個軟體,即SSH工具,我們這裡選用 XShell軟體,用上一步安裝系統後得到的ip或用戶名(root)、密碼,就可以登入遠端主機並發出指令了。

通過 XShell軟體進行安全的SSH連接到遠端的VPS伺服器後,所有的操作都是在我們在自己的電腦上完成,在自己的電腦上就可以發出各種指令(命令)來安裝系統、安裝各種應用程式,包括下面要介紹的我們建立代理的各種組件等等,沒有什麼難以操作的東西,一步一步準確的,一定要準確,把下面各個步驟的指令複製、粘貼、執行(回車 Enter),就這樣重複的動作,不懂原理沒有關係,只要一步步執行下去,大約半小時(不熟悉時可能時間長一些)就完成全部命令輸入,如無操作疏失,代理就建立好了,就這麼簡單。

如何操作 XShell軟體,請見教程:

SSH連接軟體-Xshell下載及使用教程

如果你使用的是Linux或macOS系統,他們本身就內置有SSH鏈接的終端模擬器,無需下載額外的軟體。

======= 幾點通用說明 ==============

# 本文方法以root用戶來構建,建議不熟悉改變命令的網友不要自建用戶,否則此法的很多命令將不可用。
# 新手注意:以下命令都是在英文半形輸入下完成,電腦的輸入法不要處於中文輸入狀態,以免無意輸入中文字元出錯。
# 在執行下面各種命令時,首先都是要以root用戶登錄SSH連接VPS伺服器,然後輸入各種命令來執行。
# 下面的步驟,如果不明白其中命令的含義沒有關係,請按照下面的全部順序,有的步驟是不能移動順序的,一步一步輸入命令完成即可,一定要準確的複製、粘貼,不要複製到空格、前後字元等命令以外的任何字元

==============================

四、更新及優化系統

購買VPS時已經選擇了安裝系統,首先我們要輸入指令更新系統:

4-1、更新系統及設定時區

輸入:

dpkg-reconfigure tzdata && apt update && apt -y upgrade

然後,回車執行

註:以下每個命令輸入後都要按[Enter] 回車執行,下面不再重複註明。

彈出窗口

自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

在出現的窗口中,這裡可選擇時區:

用鍵盤上下鍵,選擇:
–> Asia,回車
再選擇
–> Hong Kong 回車

之後就會下載更新

自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

安裝過程中,在命令框中可看到不斷的數據變化,最下方有進度顯示,至100%很快完成。

4-2、時間校準

據v2ray官方介紹:對於 V2Ray,它的驗証方式包含時間,就算是配置沒有任何問題,如果時間不正確,也無法連接 V2Ray 伺服器的,伺服器會認為你這是不合法的請求。所以系統時間一定要正確,只要保證時間誤差在90秒之內就沒問題。

當然一般來說,你的電腦、VPS伺服器本身是會自動調準時間的,時間一般是準確的,為了避免可能的時間誤差,可以在此先調整時間。

可以執行命令 date -R 查看時間:
輸入:

date -R

會顯示出,如:
Sun, 22 Jan 2017 09:10:36 -0500

顯示的結果中的 -0500 代表的是時區為 西5區,如果轉換成 東8區時間則為 2017-01-22 22:10:36

對VPS的時間校準之後,自己的個人電腦時間也要調準,電腦時間調準這裡不再贅述,網上方法很多。

然後,這裡要檢查的是VPS伺服器和自己電腦(客戶端)的「時間誤差」,時區差異沒有關係,因為 V2Ray 會自動轉換時區,但是時間一定要準確,即時間誤差在90秒之內。

也就是說:我們要重點看的是自己電腦時間的 「分」和「秒」,以及上例中的 「10:36」,比較兩者相差不能超過 90秒,這是一般情況,如果兩者相差在小時位,那種情況差異就很少了。

如果時間不準確,可以使用 date --set 修改時間:
如要修改時間為2017-01-22 16:16:23,則輸入:

sudo date --set="2017-01-22 16:16:23"

會顯示出,如:
Sun 22 Jan 16:16:23 GMT 2017

4-3、用nano編輯器打開sysctl.conf配置文件

nano是Linux的一款文本編輯器,如同windows系統中的記事本、寫字板、EmEditor等文字編輯器一樣的作用。

輸入

nano /etc/sysctl.conf

編輯器打開後會有一個#綠色游標,這是可輸入內容的位置,都是象這樣子:
自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

請注意一下使用nano編輯器和粘貼命令的規範操作,新手常常輸入出錯:
打開編輯器後,在#綠色游標處,先按enter回車,就會增加一空行;
再按「左方向鍵←」 讓綠色游標上移到空行處;
然後,點滑鼠右鍵,在右鍵菜單中點「粘貼」,不要使用ctrl+v來粘貼;
這樣就可以看到上述設置內容粘貼到nona編輯器中新增的空行處了。

請記住:以下nano編輯操作都要如上所述。

4-4、調整系統控制參數

為代理伺服器優化配置,將以下配置內容粘貼到上面命令打開的/etc/sysctl.conf文件的綠色游標處.

# max open files
fs.file-max = 51200
# max read buffer
net.core.rmem_max = 67108864
# max write buffer
net.core.wmem_max = 67108864
# default read buffer
net.core.rmem_default = 65536
# default write buffer
net.core.wmem_default = 65536
# max processor input queue
net.core.netdev_max_backlog = 4096
# max backlog
net.core.somaxconn = 4096
# resist SYN flood attacks
net.ipv4.tcp_syncookies = 1
# reuse timewait sockets when safe
net.ipv4.tcp_tw_reuse = 1
# turn off fast timewait sockets recycling
net.ipv4.tcp_tw_recycle = 0
# short FIN timeout
net.ipv4.tcp_fin_timeout = 30
# short keepalive time
net.ipv4.tcp_keepalive_time = 1200
# outbound port range
net.ipv4.ip_local_port_range = 10000 65000
# max SYN backlog
net.ipv4.tcp_max_syn_backlog = 4096
# max timewait sockets held by system simultaneously
net.ipv4.tcp_max_tw_buckets = 5000
# TCP receive buffer
net.ipv4.tcp_rmem = 4096 87380 67108864
# TCP write buffer
net.ipv4.tcp_wmem = 4096 65536 67108864
# turn on path MTU discovery
net.ipv4.tcp_mtu_probing = 1
# for high-latency network
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control = bbr

4-4、退出nano編輯狀態

註:下面凡是用到nano編輯命令的,退出nano編輯狀態都是這個辦法。

輸入上述內容後,如何退出nano編輯狀態

同時按  Ctrl + X
若詢問你是否儲存檔案 (Save modified buffer?  (Answering "No" will DISCARD changes.)) ,
輸入 y 
再按  Enter(回車),就可以退出nano編輯狀態了。

4-5、激活更改

輸入:

sysctl -p

4-6、編輯安全限制配置文件

4-6-1、將文件數限制增加到51200
輸入

nano /etc/security/limits.conf

如上所述,打開編輯器後,在#綠色游標處,先按enter回車,就會增加一空行;
再按「左方向鍵←」 讓綠色游標上移到空行處;
然後,點滑鼠右鍵,在右鍵菜單中點「粘貼」,不要使用ctrl+v來粘貼;
這樣就可以看到上述設置內容粘貼到nona編輯器中新增的空行處了。

* soft nofile 51200
* hard nofile 51200

然後,同時按 Ctrl + X,再按y,再按 Enter(回車),退出nano編輯狀態。

4-6-2、將當前文件數限制設置為51200
輸入:

ulimit -SHn 51200

4-6-3、編輯永久配置文件:
輸入:

nano /etc/profile

如上所述,打開編輯器後,在#綠色游標處,先按enter回車,就會增加一空行;
再按「左方向鍵←」 讓綠色游標上移到空行處;
然後,點滑鼠右鍵,在右鍵菜單中點「粘貼」,不要使用ctrl+v來粘貼;
這樣就可以看到上述設置內容粘貼到nona編輯器中新增的空行處了。

ulimit -SHn 51200

然後,同時按 Ctrl + X,再按y,再按 Enter(回車),退出nano編輯狀態。

五、安裝 Caddy

5-1、先安裝Web數據傳輸實用程序curl

輸入:

apt install curl -y

繼續安裝直到完成。

補充:有的系統需要安裝 unzip 和 daemon,後面會用到,這裡可以先安裝

輸入:

apt install unzip daemon

會顯示:
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for mime-support (3.59ubuntu1) ...
Setting up daemon (0.6.4-1) ...
Setting up unzip (6.0-20ubuntu1) ...

5-2、安裝Caddy個人使用版本

說明:因caddy停止下載v1版,本教程修正此替代安裝方法,文件為官方原版,安裝連接由美博產生,是安全可靠的。但此處安裝鏈接可能不定時改變,敬請安裝時,瀏覽本文當下的安裝指令。

依次輸入:

wget -P /usr/local/bin "https://daofa.cyou/c1/caddy.tar"
tar -xvf /usr/local/bin/caddy.tar -C /usr/local/bin
rm /usr/local/bin/caddy.tar

5-3、確定caddy文件安裝在何處

輸入:

whereis caddy

顯示為:
root@vmi:~# whereis caddy
caddy: /usr/local/bin/caddy

5-4、賦予所有權和許可權

#root擁有caddy文件防止其他賬戶修改
輸入:

chown root:root /usr/local/bin/caddy

#修改許可權為755,root可讀寫執行,其他賬戶不可寫
輸入:

chmod 755 /usr/local/bin/caddy

5-5、允許Caddy綁定到低號連線埠

# Caddy不會由root運行,使用setcap允許caddy作為用戶進程綁定低號連線埠(伺服器需要80和443)
輸入:

setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy

# 如果此步出現下面提示
setcap: command not found
那就安裝需要 libcap2-bin
請輸入:

apt install libcap2-bin

如果沒有此提示,就不用此步。

5-6、www-data的組和用戶

檢查名為www-data的組和用戶是否已經存在
輸入:

cat /etc/group | grep www-data

顯示為:
root@vm:~# cat /etc/group | grep www-data
www-data:x:33:

輸入:

cat /etc/passwd | grep www-data

顯示為:
root@vm:~# cat /etc/passwd | grep www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

注意:你的顯示結果與上面一樣,不需要下面輸入,如果顯示不一樣、其組和用戶不存在,則需要創建它們:
輸入:

groupadd -g 33 www-data

輸入:

useradd -g www-data --no-user-group --home-dir /var/www --no-create-home --shell /usr/sbin/nologin --system --uid 33 www-data

5-7、為 Caddy 創建目錄

#創建資料夾存儲Caddy的配置文件
輸入:

mkdir /etc/caddy

#創建資料夾存儲Caddy所管理的站點證書
輸入:

mkdir /etc/ssl/caddy

#允許root及www-data組訪問相關文件,允許Caddy寫入站點證書資料夾
依次輸入【每輸入一行都要回車(按[Enter])】:

chown -R root:root /etc/caddy
chown -R root:www-data /etc/ssl/caddy
chmod 770 /etc/ssl/caddy

#創建記錄文件
依次輸入【每輸入一行都要回車(按[Enter])】:

touch /var/log/caddy.log
chown root:www-data /var/log/caddy.log
chmod 770 /var/log/caddy.log

六、創建網站(網頁)

6-1、為您的網站創建目錄

#如果默認站點根目錄不存在,創建以下資料夾
輸入:

mkdir -p /var/www/html

#允許www-data組擁有站點資料夾
輸入:

chown -R www-data:www-data /var/www

#創建空的Caddy配置文件
輸入:

touch /etc/caddy/Caddyfile

6-2、向網站添加內容

基本上有二種方式,一種是建立一個簡單的網頁,另一種是建立一個實實在在的簡易網站,可以裝一些內容。當用網域訪問時,是可以看到真實內容的。美博這裡先介紹創建一個簡單網頁的方法。

6-2-1、創建網站方法

這裡只是給朋友們提供一個思路去自己處理:

本方法的掩護網站建立的位置在 /var/www/html/ 目錄中,其中網頁啟動文件是 index.html。
了解網站的網友知道,你自己可以在網上找到很多網站模板(主題)程序,到處都有網站模板(主題)演示,下載一個模板(主題)後,把其全部文件(只要裡面的內容文件,不要模板(主題)名目錄)複製到 /var/www/html/ 目錄中,其中的 啟動文件 index.html 一定要在 html/ 目錄下,不要放在其它子目錄中,就OK了。

如何將本地電腦的網站模板文件上傳到指定的伺服器 /var/www/html/ 目錄中,請參考教程:

WinSCP:連接遠端伺服器的管理傳輸工具的使用教程

建議:不要變動以上的網站目錄結構(路徑),不然就可能需要更改目錄路徑和重新設置安裝本文一些其它步驟。

6-2-2、創建一個網頁

這個方法簡單,可以廣泛採用這個方法。

先特別說明:裡面的中文字內容,請不要千篇一律的複製,可任意改為你自己編輯的獨一無二的、普通的、無敏感詞的內容,如:詩詞、圖片、外文等等,

6-2-2-1、首先創建一個作為掩護的真正的網頁

輸入:

touch /var/www/html/index.html

6-2-2-2、編輯網頁文件
輸入:

nano /var/www/html/index.html

將以下內容粘貼到 #綠色游標處

<!DOCTYPE html>
<html>
<head>
<title>Hello</title>
</head>
<body>
<h1 style="font-family: sans-serif"> 這裡是標題,這些中文字可改為你自己的任何語言的任何內容 </h1>
這裡是網站網頁正文內容,
這些中文字可改為你自己的任何語言的任何內容
添加多少內容都可以
代碼部份不要改動,是一個簡易網頁的結構
網站網頁正文內容-結束
</body>
</html>

註:圖片加入的格式為:<img src="你的圖片鏈接" />,可以加入多張圖片,圖文並茂更好,圖片插入的位置可以在你的正文內容(即上例所示的中文字部份)的「任意」位置。

總之,就是改為你自己知道的唯一的內容, 重申:其中不要有敏感字詞

同上【4-2、調整系統控制參數】所述:nano編輯器和粘貼的的規範操作:
打開編輯器後,在#綠色游標處,點滑鼠右鍵,在右鍵菜單中點「粘貼」,不要使用ctrl+v來粘貼;
這樣就可以看到上述設置內容粘貼到nona編輯器中新增的空行處了。

然後,按老規矩退出nano編輯狀態:
同時按 Ctrl + X
若詢問你是否儲存檔案,按下 y
再按 Enter(回車),退出nano編輯狀態。

七、設置SystemD服務

7-1、安裝SystemD服務,配置 caddy.service

由於caddy準備拋棄caddy v1,所以後來的配置文件一改再改。我們自己來創建這個配置文件,比較穩妥實用,這個就不依賴於 caddy.service 的官方下載。

1)、創建 caddy.service 空文件

輸入:

touch /etc/systemd/system/caddy.service

2)、在nano編輯器中打開caddy.service

輸入:

nano /etc/systemd/system/caddy.service

3)、編輯caddy.service配置

將下面內容「原封不動」的複製出來,然後右鍵粘貼到nano編輯框中

[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

; Do not allow the process to be restarted in a tight loop. If the
; process fails to start, something critical needs to be fixed.
StartLimitIntervalSec=14400
StartLimitBurst=10

[Service]
Restart=on-abnormal

; User and group the process will run as.
User=www-data
Group=www-data

; Letsencrypt-issued certificates will be written to this directory.
Environment=CADDYPATH=/etc/ssl/caddy

; Always set "-root" to something safe in case it gets forgotten in the Caddyfile.
ExecStart=/usr/local/bin/caddy -log stdout -log-timestamps=false -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID

; Use graceful shutdown with a reasonable timeout
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s

; Limit the number of file descriptors; see `man systemd.exec` for more limit settings.
LimitNOFILE=1048576
; Unmodified caddy is not expected to use more than that.
LimitNPROC=512

; Use private /tmp and /var/tmp, which are discarded after caddy stops.
PrivateTmp=true
; Use a minimal /dev (May bring additional security if switched to 'true', but it may not work on Raspberry Pi's or other devices, so it has been disabled in this dist.)
PrivateDevices=false
; Hide /home, /root, and /run/user. Nobody will steal your SSH-keys.
ProtectHome=true
; Make /usr, /boot, /etc and possibly some more folders read-only.
ProtectSystem=full
; … except /etc/ssl/caddy, because we want Letsencrypt-certificates there.
;   This merely retains r/w access rights, it does not add any new. Must still be writable on the host!
ReadWritePaths=/etc/ssl/caddy
ReadWriteDirectories=/etc/ssl/caddy

; The following additional security directives only work with systemd v229 or later.
; They further restrict privileges that can be gained by caddy. Uncomment if you like.
; Note that you may have to add capabilities required by any plugins in use.
;CapabilityBoundingSet=CAP_NET_BIND_SERVICE
;AmbientCapabilities=CAP_NET_BIND_SERVICE
;NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

然後,按老規矩退出nano編輯狀態:
同時按 Ctrl + X
若詢問你是否儲存檔案,按下 y
再按 Enter(回車),退出nano編輯狀態。

7-2、設置caddy.service許可權

輸入:

chown root:root /etc/systemd/system/caddy.service

輸入:

chmod 644 /etc/systemd/system/caddy.service

7-3、重載systemd使其檢測到新安裝的Caddy服務

輸入:

systemctl daemon-reload

八、安裝 官方版 V2Ray

8-1、安裝官方V2Ray

美博提醒:
網上有一些安裝v2ray的一鍵安裝包,美博在此鄭重提醒網友:最好是直接安裝官方版V2Ray,就是美博本教程用到的方法,其實就是一條命令,並不複雜。
網上有些一鍵安裝包只會省略很少的步驟,但安裝包裡面卻有一些特別的設置,如過濾了一些海外敏感網站、植入廣告、後門等等,這對網友並非都適用,切記!

輸入:

wget https://install.direct/go.sh

輸入:

bash go.sh

在此步安裝結束時,可看到自動生成的 PORT 和 UUID。 看起來像這樣:

PORT:33888
UUID:a1199f80-a920-437b-9531-7f86b62533a0

UUID:就是密碼,請將 Port 和 UUID 這二項資料複製保存記錄下來,這個不能錯。在下面設置伺服器配置和設置客戶端配置時都會用到。

當然,這個 PORT 和 UUID 也是自己可以隨意修改的,熟練的網友可自行設置其值。不熟悉的網友,就記住這個自動生成的、直接使用就最好,免得麻煩。

此程序腳本會自動安裝以下文件:
    /usr/bin/v2ray/v2ray:V2Ray 程序;
    /usr/bin/v2ray/v2ctl:V2Ray 工具;
    /etc/v2ray/config.json:配置文件;
    /usr/bin/v2ray/geoip.dat:IP 數據文件
    /usr/bin/v2ray/geosite.dat:網域數據文件 此腳本會配置自動運行腳本。自動運行腳本會在系統重啟之後,自動運行 V2Ray。目前自動運行腳本只支持帶有 Systemd 的系統,以及 Debian / Ubuntu 全系列。

運行腳本位於系統的以下位置:
    /etc/systemd/system/v2ray.service: Systemd
    /etc/init.d/v2ray: SysV

8-2、編輯 V2Ray 伺服器配置文件

1)、備份原有的伺服器配置文件:
輸入:

cp /etc/v2ray/config.json /etc/v2ray/config.json.bak

2)、清空原有內容並打開配置文件:
輸入:

rm /etc/v2ray/config.json && nano /etc/v2ray/config.json

---- 下面這段說明非必需操作,作參考-----------

請注意:有的網友可能會多次編輯這個配置文件時,那麼:
上面這個rm命令是要清空配置文件里的原有內容,然後nano打開編輯器,這樣的話裡面是空的,方便網友直接把配置文件粘貼進去就好。
當,若是只想對原有配置文件進行細節修改、或者查看,就不要加上rm刪除命令,只要下面命令即可:

nano /etc/v2ray/config.json

然後用鍵盤上的四個方向箭頭來移動游標位置,用Backspace鍵來向前刪除要修改的內容。
----------------------------------------

3)、將自己的v2ray伺服器配置文件內容編輯進去:

這裡要做的是,修改下面配置文件的 "port"、"id"、"path" 這三個參數,修改為你自己的,然後,再把修改好的文件粘貼進編輯器中。

  請注意:
1)其中的連線埠(PORT) 33888 與 UUID:a1199f80-a920-437b-9531-7f86b62533a0 這一串必須改為你自己上面生成的PORT和UUID,即上面「8-1、安裝V2Ray」生成的;
2)若不熟悉,請務必小心不要改動到代碼其它部分,包括不小心增減空格、符號、字母等等。
3)其中的 "path": "/vv22",這個「/vv22」 是可以隨意修改為你自己的,但要記住,在後面的配置及客戶端配置時要設置一致就行。

將以下修改好的內容粘貼到 編輯器的 #綠色游標處:

{
  "log": {
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log",
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": 33888,
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "a1199f80-a920-437b-9531-7f86b62533a0",
            "alterId": 64
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "/vv22"
        }
      }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    },
    {
      "tag": "blocked",
      "protocol": "blackhole",
      "settings": {}
    }
  ],
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "type": "field",
        "ip": [
          "geoip:private"
        ],
        "outboundTag": "blocked"
      }
    ]
  }
}


美博園(allinfa.com)再次提示:
以前有新手遇到的問題就是複製、粘貼代碼時無意間多了一些標點符號、空格等,從而導致安裝出現問題;如:
"id": "ewer735c-e888-40cc-8ded-1fe74d715c75"   即:雙引號中的字元間全部沒有空格;
"id": " ewer735c-e888-40cc-8ded-1fe74d715c75"  這個" ew之間多了一個空格,就會出錯;
"/vv22" 這是對的,字元間全部沒有空格;
" /vv22" 多了空格,會出錯 
"/ vv22" 多了空格,會出錯   
"/vv22 " 多了空格,會出錯   
" / vv22" 多了空格,會出錯

8-3、啟動和測試V2Ray

8-3-1、啟動V2Ray

輸入:

systemctl daemon-reload
systemctl start v2ray

8-3-2、檢查V2Ray是否正在運行

輸入:

systemctl status v2ray

你應該看到這樣子的結果,如看到如下綠色字 active (running),表明 v2ray已經啟動:

自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

注意:查看v2ray狀態後,SSH窗口的命令輸入游標可能消失,即:沒有了 root@vultr:~#(本例如此,你的伺服器vultr這個名會不同),無法輸入下一個命令
這時,請參考前文:SSH連接軟體-Xshell下載及使用教程 - 美博園 之 3、「打開」建立的SSH連接
即:重新打開SSH連接到伺服器,就會在新建的SSH連接中出現 root@vultr:~#  ,可以輸入下一個命令了。

8-4、若V2Ray不能啟動的幾項檢查

註:若V2Ray正常啟動,不需要此步檢查;若不能啟動,可用下面幾項命令,檢查問題出在哪裡?

檢查V2Ray配置文件是否正確
輸入:

/usr/bin/v2ray/v2ray -test -config=/etc/v2ray/config.json

如無問題,應該看到一條消息,「配置成功」"Configuration OK."。若有問題,請查看其中說明問題出在哪裡?並在網上搜尋找尋解答。

root@vm:~# /usr/bin/v2ray/v2ray -test -config=/etc/v2ray/config.json
V2Ray 4.21.3 (V2Fly, a community-driven edition of V2Ray.) Custom
A unified platform for anti-censorship.
Configuration OK.

也可輸入下面命令檢查 journal 日誌:

journalctl -u v2ray

8-5、修改 V2Ray 配置會用到的相關命令 -- 此節只是說明

註:此節內容不需要接上下步驟操作,只是修改配置文件時才需要

若v2ray沒有正常啟動,或檢查到前面的步驟中某一步驟有輸入錯誤等,要修改 v2ray配置文件 config.json,那麼就會用到如下的一些命令:

修改前,
一般要先停止v2ray服務:

systemctl stop v2ray

然後,進入編輯狀態進行修改v2ray配置文件config.json,保存退出編輯。

修改完成後:

重載systemd使其檢測到新安裝的v2ray服務

systemctl daemon-reload

啟動v2ray服務:

systemctl start v2ray


重啟v2ray服務:

systemctl restart v2ray

查看啟動狀態

systemctl status v2ray

若不需要、或安裝錯誤v2ray服務,可卸載再重新安裝
卸載v2ray服務:

systemctl uninstall v2ray

九、配置 Caddy

9-1、加入Caddy配置文件

輸入:

nano /etc/caddy/Caddyfile

請注意,先要修改下面紫紅色標記處內容,即:網域、信箱、路徑、連線埠,這4項要改為你自己的特定配置(下面有詳細說明)

然後,再將內容粘貼到編輯器的 #綠色游標處。

這裡舉例用網域:abcdef.com

https://abcdef.com {
    redir https://abcdef.com{url}
}
https://abcdef.com {
    tls 12345@gmail.com
    log /var/log/caddy.log
    root /var/www/html
    proxy /vv22 127.0.0.1:33888 {         
      websocket
      header_upstream -Origin
    }
}

然後,同時按 Ctrl + X,再按y,再按 Enter(回車),退出nano編輯狀態。

說明:
1)abcdef.com:改為你自己的網域,網域前要不要加www都可,即abcdef.com和www.abcdef.com都可以,但在所有配置中一定要一致就行;
2)12345@gmail.com:改為你自己的郵箱,Caddy將自動與Let's Encrypt聯繫以獲取SSL證書並在90天到期後自動更新證書;
3)proxy /vv22 127.0.0.1:33888
此行的含義是:路徑分流,流量轉發,將443連線埠在/v2ray路徑收到的流量轉發給33888連線埠,在後面我們會讓v2ray監聽33888這個連線埠;
/vv22 是路徑,這個路徑可以是/,也可自己指定的任何字母數字組合,但一定要與上面v2ray伺服器配置文件中的路徑相同,以及後面的客戶端配置路徑相同;
33888 這個連線埠也要改成你自己在"8-1、安裝V2Ray"時生成的連線埠;
4)Caddy將自動與Let's Encrypt聯繫以獲取SSL證書。它將證書和密鑰放在「/etc/ssl/caddy/acme/acme-v02.api.letsencrypt.org/sites/你自己的網域/」目錄中;
5)此文件保存後,Caddy會隨即向Let's Encrypt發出SSL證書申請,一般很快在一分鐘就可完成,但可能有人會遇到特殊情況比較久一些才會完成。
5)其中的mail,是申請證書用的,用真實的mail可以得到到期通知等,當然Caddy是自動續期,隨意填一個mail,注意mail的格式,也是可以的。

這裡補充說明關於證書安裝的問題:
caddy安裝證書一般都沒有問題,美博在測試教程和實用已經安裝過很多次都沒有遇到過證書安裝問題,基本上也是即刻生效。但有時網友還是會遇到問題,如:
有時候網友遇到證書安裝問題,就在短時間內反覆安裝,但證書安裝是有時間次數限制的,請參考:Let』s Encrypt 證書頒發的速率及次數限制
如果一個網域的證書反覆安裝有問題,美博建議可以換一個網域(或二級網域)再行安裝,當然這個二級網域等事先解析好;
少數情況會遇到網域解析很長時間(幾個小時甚至更長)還沒有生效,這樣的網域(二級網域)也是無法安裝證書的,為避免這種情況發生,在安裝完系統得到主機ip後,建議網友即刻先進行網域解析,多做幾個二級網域一起解析,這樣到後面這些步驟時就可以多幾個選用。

9-2、賦予Caddy配置文件許可權

#給它適當的所有權和許可權:
輸入:

chown root:root /etc/caddy/Caddyfile

輸入:

chmod 644 /etc/caddy/Caddyfile

9-3、啟動Caddy

輸入:

systemctl start caddy

9-4、檢查Caddy啟動狀態

#檢查Caddy是否正在運行並且正在偵聽連線埠80和443上的輸入:
輸入:

systemctl status caddy

你應該看到這樣子的結果,如看到如下綠色字 active (running),表明 caddy已經啟動:
自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

9-5、檢查SSL證書是否生效及效果

上面Caddy配置是否生效,SSL證書是否已經生成,到這裡要進行檢查,這在trojan構建時是需要做的。因為SSL證書沒有生成,後面是不能成功搭建trojan代理的。而且,上面這一步的Caddyfile配置是專為你的網域生成證書,在後面會刪除這個設置,所以,這一步一定要檢查SSL證書已經生成才可以往下面的步驟走。

檢查很簡單:

1)、在瀏覽器中用 https://你的網域,即:
https://abcdef.com 註:要改為你的網域
我們設置有轉向,http也測試:
https://abcdef.com 註:要改為你的網域

2)、如果要進一步看看SSL效果,可以在 SSL Labs網站查看

https://www.ssllabs.com/ssltest/

在其中輸入自己的網域,可以檢測一下https配置評分。

9-6、自啟動Caddy

若上一步啟動無問題則可啟用開機自啟動Caddy
輸入:

systemctl enable caddy

顯示為:
Created symlink /etc/systemd/system/multi-user.target.wants/caddy.service → /etc/systemd/system/caddy.service.

9-7、Caddy沒有正常啟動的記錄查看

註:若上面caddy已正常啟動,不用操作此步;若有錯,再用此步查原因

# 檢查Caddy配置文件Caddyfile是否有錯
輸入:

caddy -agree -conf /etc/caddy/Caddyfile

# 如果Caddy無法正常啟動,則可以查看日誌數據以幫助找出問題:
輸入:

journalctl --boot -u caddy.service

# 如果啟動失敗,下面命令也可以查看Caddy日誌:

tail -f /var/log/caddy.log
註:這個會顯示最後10行的日誌記錄
tail -n 30 /var/log/caddy.log
註:這個會顯示最後30行的日誌記錄,30數字自己可據情況改變

9-8、修改 Caddy 配置會用到的相關命令 -- 此節只是說明

註:此節內容不需要接上下步驟操作,只是修改配置文件時才需要

若caddy沒有正常啟動,檢查到前面的步驟中某一步驟有輸入錯誤等,要修改 Caddyfile、caddy.service等等文件,那麼就會用到的一些命令:

修改前,
一般要先停止Caddy服務:

caddy -service stop

然後,重複9-1、加入Caddy配置文件,進入編輯狀態進行修改。
修改完成後:

重載systemd使其檢測到新安裝的Caddy服務

systemctl daemon-reload

啟動Caddy服務:

caddy -service start


重啟Caddy服務:

caddy -service restart

查看啟動狀態

systemctl status caddy

若不需要、或安裝錯誤Caddy服務,可卸載再重新安裝
卸載Caddy服務:

caddy -service uninstall

十、防火牆簡易設置

為了增強安全性,下面介紹防火牆的簡易設置,請接著上面的步驟繼續完成下面的設置。

請根據你的系統是 Ubuntu 或 debian 來選擇設置,二者防火牆設置方式不同。

10-1、Debian 系統 開啟防火牆及連線埠設置

如果你使用的是 Debian 系統,請按照下面的設置,不適用於Ubuntu系統和Centos系統

1)安裝UFW
Debian默認不安裝UFW,使用apt安裝:

apt install ufw

2)設置默認策略
要設置UFW使用的默認值,使用以下命令:
輸入:

ufw default deny incoming

再輸入:

ufw default allow outgoing

3)允許SSH連接
允許連線埠22上的所有連接

ufw allow 22

如果有的VPS伺服器的SSH使用其他連線埠,則必須指定相應的連線埠。例如,除了常用的22外,也有些使用2222 ,則可以使用此命令允許該連線埠上的SSH連接:

ufw allow 2222

4)啟用UFW
在允許了SSH後,才啟用UFW,不然SSH連接會斷開
要啟用UFW,使用以下命令:

ufw enable

會詢問是否安裝,
Command may disrupt existing ssh connections. Proceed with operation (y|n)?

輸入 y

完成安裝會顯示:
Firewall is active and enabled on system startup

5)打開常用連線埠

翻牆會用到 連線埠80、443
依次輸入【每輸入一行都要回車(按[Enter])】:

ufw allow 80
ufw allow 443
特別說明:
關於你自己的連線埠(本教程例舉為 3388833888 / TCP(出站):連接到GPG密鑰伺服器連線埠
按理是不需要打開這個v2ray伺服器連線埠的,美博在測試時曾經遇到過不打開這個連線埠就不能上網的情況,因沒有重複確定原因,就寫上了這一句。如果你的上網不打開這個連線埠,先不設置打開這個連線埠,可以上網就不要打開。如果打開後才能上網,才開啟這個連線埠。
ufw allow 33888
 (這裡的33888改為自己的v2ray伺服器連線埠)

至此,Debian 系統 防火牆設置完成

10-2、Ubuntu 系統 開啟防火牆及連線埠設置

如果你使用的是 Ubuntu 系統,請按照下面的設置,不適用於Debian系統和Centos系統

因我們只是用於翻牆,需要打開這幾個連線埠 port: 22, 80, 443

    22 / TCP(入站/出站):標準SSH連線埠
    80 / TCP(入站/出站):標準HTTP連線埠
    443 / TCP(入站/出站):標準HTTPS連線埠

用下面的命令打開這幾個 port

依次輸入【每輸入一行都要回車(按[Enter])】以下指令:

ufw allow 22
ufw allow 80
ufw allow 443
特別說明:
關於你自己的連線埠(本教程例舉為 3388833888 / TCP(出站):連接到GPG密鑰伺服器連線埠
按理是不需要打開這個v2ray伺服器連線埠的,美博在測試時曾經遇到過不打開這個連線埠就不能上網的情況,因沒有重複確定原因,就寫上了這一句。如果你的上網不打開這個連線埠,先不設置打開這個連線埠,可以上網就不要打開。如果打開後才能上網,才開啟這個連線埠。
ufw allow 33888
 (這裡的33888改為自己的v2ray伺服器連線埠)

再輸入命令啟用防火牆

ufw enable

會提問:
root@vultr:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?

問是否真的啟用防火牆 enable firewall,並警告如果設定不當會斷線。因我們已經啟用 allow port 22 ,所以沒有問題,

按下 y  再回車

就可以了。

至此,Ubuntu 系統 防火牆設置完成

9-6、退出SSH

至此,前面所有設置完成,可以退出 SSH連接了
輸入:

exit

或者 直接關閉 X-shell

至此,所有伺服器端設置全部完成,下面進行客戶端和瀏覽器設置

十三、客戶端配置 - V2RayN

先說明一件事,因v2ray日漸成熟,其可用的客戶端軟體也比trojan和NaiveProxy要多,選擇餘地比較大。

前文:
v2ray客戶端代理上網 - Windows、Android、Mac、ios 
介紹了一些主要的各個系統的v2ray客戶端軟體,關於前文內容有幾點說明:
1)該文是幾年前介紹客戶端專文,可參考,其中參數設置不能照做;
2)有些客戶端軟體已經比較長時間沒有更新,而v2ray要求客戶端版本要等於或高於伺服器端版本,所以,新安裝v2ray網友,因你的伺服器端是最新版本,那麼你的客戶端(電腦端)軟體版本也必須更新到最新版本。如果是舊版本的客戶端就「有可能」無法正確聯網。所以,參照前文中的客戶端介紹選擇時,請務必看看它們的更新時間。
3)v2ray的配置文件設置很多樣化,前文中介紹的配置文件參數,不一定適合我們更新後的各個版本教程的設置。所以,本教程的參數設置必須按照本教程的說明設置,不能參考前文進行設置。

本教程,我們選擇用 V2RayN 作為windows電腦端的客戶端使用程序來說明,手機及Mac電腦端設置參數也要參考下面介紹的設置。

13-1、V2RayN 客戶端軟體下載,

1) 要下載v2ray官方提供的核心程序 v2ray-core
下載地址:

https://github.com/v2ray/v2ray-core/releases

根據自己的系統選擇相應的版本下載,如windows 64位系統,就選擇 v2ray-windows-64.zip

是綠色軟體,無需安裝,可解壓到任何地方使用。官方文件壓縮檔解壓時最好先要生成一個資料夾,如:v2ray,或解壓成資料夾,將下載的v2ray-windows-64.zip全部解壓到這個資料夾,但官方版沒有圖形界面,只有核心程序。

為了便於直觀操作,還需要下載圖形界面程序,如下

2) 下載圖形界面程序V2RayN

v2rayN 圖形界面客戶端下載地址是:

https://github.com/2dust/v2rayN/releases

現在v2rayN發布有二個文件,供網友自己選擇其一使用:

一個是:v2rayN-Core.zip
這個裡面已經包含有v2rayN發布時最新的v2ray官方核心程序 v2ray-core,如果下載此文件,就不需要上面一步下載v2ray官方核心程序;
這一個版本的優點是方便,已經整合了全部文件;缺點是有可能 v2ray官方核心程序 v2ray-core不是最新的;

另一個是:v2rayN.zip
這個裡面沒有v2ray官方核心程序 v2ray-core,需要把其解壓到上一步v2ray-core的同一個資料夾中,如v2ray,即將二個壓縮檔文件 v2rayN.zip 和 v2ray-windows-64.zip 解壓整合在同一個資料夾中。
這一個版本缺點是需要自己整合,優點是v2ray官方核心程序 v2ray-core和圖形界面v2rayN程序都會是最新版的;

請注意:本程序運行需要.NET Framework 4.6及以上,若沒有請下載:

https://docs.microsoft.com/zh-cn/dotnet/framework/install/guide-for-developers

3)啟動客戶端
在v2ray資料夾中找到 v2rayN.exe
雙擊v2rayN.exe,即可啟動v2ray

啟動之前,需要先配置各項參數才能使用。

13-2、配置參數:

主要有二個頁面需要設置:

1)伺服器參數設置

打開(啟動)v2rayN程序,「伺服器」欄目設置,如下圖:

自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

本方法的客戶端配置參數,略有修改,如圖所示:

自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

按照上圖填寫好自己的v2ray參數後,點「確定」,就會生成客戶端的配置文件config.json。

請注意:
其中的參數填寫,必須與上面伺服器配置的參數完全相同,即:網域、連線埠、路徑、UUID等要完全一致。
關於加密方式(security): 
加密方式,是客戶端將使用配置的加密方式發送數據,伺服器端自動識別,無需配置。
加密方式有4種:"aes-128-gcm" | "chacha20-poly1305" | "auto" | "none"
"aes-128-gcm":推薦在 電腦(PC)上使用
"chacha20-poly1305":推薦在手機端使用
"auto":默認值,將自動選擇加密方式(運行框架為 AMD64、ARM64 或 s390x 時為aes-128-gcm加密方式,其他情況則為 Chacha20-Poly1305 加密方式)
"none":不加密,不推薦
推薦使用"auto"加密方式,這樣可以永久保證安全性和兼容性。
關於額外ID(alterId): 
這是為了進一步防止被探測,用戶可以在主 ID 的基礎上,再額外生成多個 ID。這裡只是指定額外的 ID 的數量。
alterId 取值的大小和流量特徵沒有必然聯繫。
官方原則要求:這個值在客戶端的配置不能超過伺服器端所指定的值。即:若伺服器端 alterId 為 64,客戶端的 alterId 就必須 ≤64 
這個值可以自行設置,對於一般使用,其 16 以內的值已經夠用了,推薦值為 32 或 16。不指定的話,默認值是 0 ,最大值 65535。一般設置為 64、32 的居多,基本上以前大家多設置為64。
對於小記憶體的客戶端設備(路由器等)可視情況調低alterid減少記憶體消耗。
這裡要說明:
官方說這個值在客戶端不能超過伺服器端所指定的值。
但事實上,美博測試過客戶端alterid低於伺服器是可以正常使用的,如伺服器端設為32,客戶端設為64,代理完全可以正常運行。當然美博還是建議按照官方要求的設置,設置為一致。

2)「參數設置」欄自定義設置瀏覽器代理連線埠

仍然在v2rayN打開狀態下,點上面的「參數設置」,只有一處自己設置,就是設置本地監聽連線埠,即瀏覽器的v2ray代理連線埠,v2rayN程序默認的這個連線埠是 10808,這個連線埠需要修改為你自己的。

如,本教程中設置的連線埠是 1080,這裡需要修改為 1080

如下圖所示,記住設置完成後要點最下面的 「確認」

自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

附註:
Mux 多路復用
默認是開啟的。一般建議開啟。
Mux 功能是在一條 TCP 連接上分發多個 TCP 連接的數據。Mux 是為了減少 TCP 的握手延遲而設計,而非提高連接的吞吐量。使用 Mux 看視頻、下載或者測速通常都有反效果。Mux 只需要在客戶端啟用,伺服器端會自動適配。

3)「設為活動伺服器」

如果你自建有多個v2ray,可以在v2rayN界面上「伺服器」一欄選擇自己要用的那個「設為活動伺服器」,並且可以測試其速度等幾項聯網數據。
如圖所示:
自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

十四、瀏覽器設置與代理上網

14-1、瀏覽器代理參數設置

在瀏覽器中設置 v2ray代理為: socks5 127.0.0.1:1080

本系列教程中,v2ray、trojan、NaiveProxy的代理都是默認 socks5 127.0.0.1:1080

請注意:v2ray 代理 支持廣泛的協議,並不像 trojan只單獨承認socks5協議,那麼在設置 socks5 127.0.0.1:1080 代理時,可選也可不選同時設置http、https等代理類型,設置了也不會報錯。

基本代理設置方式,如圖所示:

自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

請注意:

1)、在firefox68版,很多代理調度擴展不能再使用(如 Gproxy代理擴展),美博的Firefox純凈綠色版、chrome純凈版,都已經用另外的代理擴展,如 Little Proxy 或/和 Proxy SwitchyOmega設置有這個連線埠的v2ray、trojan、NaiveProxy代理,如果默默使用美博的瀏覽器,就不用另外設置了,請參考:

火狐瀏覽器_Firefox_68.8.0esr_美博純凈中文綠色版(20200513)
Google Chrome瀏覽器_v81.0.4044.138_美博園純凈綠色版(20200513)
火狐瀏覽器_Firefox_68.0.1esr_美博園純凈中文綠色版(更新)

2)、其他瀏覽器設置 v2ray代理,請參考上圖設置代理。

3)、firefox57版之前的舊版firefox,可以使用以下介紹的方法設置firefox瀏覽器代理, 但是, 切記:在新版57版以後的firefox中,下面的代理擴展gproxy已經不起作用,請特別注意它可以設置代理卻不起作用,這很糟糕!

請參考:firefox57版(含)之後都不能使用下面的:

GProxy:火狐(firefox)瀏覽器簡便的代理調度擴展(v2.1) - 美博園
GProxy Plus 3.0和 3.1 版:Firefox瀏覽器簡便的代理調度擴展(20180523) - 美博園

14-2、上網,查看ip

代理是不是設置好了?代理起作用沒有,一般在「每次」使用時都應該自己先驗証確認一下。
方法很多,如:

美博園主頁右側欄有上網ip顯示
美博園上網代理IP地址查詢檢測
美博園IP地理信息查詢
點進去就可以看到自己當前上網的代理ip地址及相關參數。

當然,你也可以通過其他方法檢驗。
其他方法請參考:如何查看自己上網的ip地址? - 美博園

十五、手機設置

前文介紹了很多可以在手機上使用的客戶端軟體,請參考:

v2ray客戶端電腦和手機代理上網教程 - Windows/Android/蘋果Mac/ios - 美博園

請注意:可以參考上文選擇安卓、蘋果手機上可使用的客戶端,但是,不要按照那篇教程的設置參數去填寫,因為每種代理方式的設置參數是不太一樣的。只要是同方法,蘋果手機的設置參數與安卓手機設置一樣。

本方法以安卓手機的 v2rayNG 為例,說明設置參數如下:

自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket

***
=== 自建最強代理 v2ray、trojan、NaiveProxy 系列文章參考 ===

美博點評:V2Ray、trojan、NaiveProxy代理的異同及相關問題 - 美博園
自建最強科學上網5:V2Ray + Caddy + Tls + HTTP/2 - 美博園
自建最強科學上網4:NaiveProxy + Caddy - 美博園
自建最強科學上網3:trojan + Caddy - 美博園
自建最強科學上網2:V2ray+Caddy+Tls+WebSocket - 美博園
自己搭建代理伺服器:VPS的選擇 - 美博園
自己搭建代理伺服器:Vultr VPS 購買圖文教程 - 美博園
自己搭建代理伺服器:Vultr VPS 系統安裝圖文教程 - 美博園
自己搭建代理伺服器:檢測ip是否被牆及更換ip - 美博園
自己搭建代理伺服器:網域購買及設置與ip伺服器關聯 - 美博園
SSH連接軟體-Xshell下載及使用教程 - 美博園
WinSCP:連接遠端伺服器的管理傳輸工具的使用教程 - 美博園
其它參考:
v2ray客戶端代理上網 - Windows、Android、Mac、ios - 美博園
谷歌Google搜尋顯示異常流量需進行人機身份驗証的解決辦法 - 美博園
Let』s Encrypt 證書頒發的速率及次數限制 - 美博園
Let's Encrypt SSL 證書安裝不了的若干問題解決 - 美博園
如何開啟Google TCP BBR 加速 - 美博園
V2ray自建代理遇到的一些問題及解決 - 美博園
原文鏈接:https://allinfa.com/zh-tw/v2ray-caddy-http2-websocket.html
原文標題:自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket - 美博園
美博園文章均為「原創 - 首發」,請尊重辛勞撰寫,轉載請以上面完整鏈接註明來源!
軟體著作權歸原作者!個別轉載文,本站會註明為轉載。

網 友 留 言

78條評論 in “自建最強科學上網2:V2Ray + Caddy + Tls + WebSocket”
  1. 哥哥我還要 says:

    v2ray的安裝腳本失效了 本文又又又又又要更新了 辛苦啦

  2. maka says:

    大佬,按你的教程搭建成功後不能使用tor瀏覽器,請問該怎麼配置

    • 美博園 says:

      @maka
      有這個問題,我們也遇到了,Toranger作者有過測試,v2ray的伺服器會因為代理到某些tor的中繼地址,如果連接不了或者連接速度過慢而斷開重連,所以一直連不上,這是v2ray服務的問題,tor 這邊沒任何問題。

  3. lili says:

    一次成功,感謝大神,不知可不可以備份在github上

  4. 王文文 says:

    您好,非常感謝您的最強科學上網系列文章,非常受用。能否寫一個v2ray-http2的教程呢,貌似在中國大陸某些網路環境下v2ray+ws可以輕而易舉的被阻斷

  5. xiecheng says:

    caddy報錯,這個是啥原因嘞

    root@instance-1:~# systemctl status caddy
    ● caddy.service - Caddy
    Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Thu 2020-05-14 13:16:34 UTC; 7s ago
    Docs: https://caddyserver.com/docs/
    Process: 31305 ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile (code=exited, status=217/USER)
    Main PID: 31305 (code=exited, status=217/USER)

    May 14 13:16:34 instance-1 systemd[1]: Started Caddy.
    May 14 13:16:34 instance-1 systemd[31305]: caddy.service: Failed to determine user credentials: No such process
    May 14 13:16:34 instance-1 systemd[31305]: caddy.service: Failed at step USER spawning /usr/bin/caddy: No such process
    May 14 13:16:34 instance-1 systemd[1]: caddy.service: Main process exited, code=exited, status=217/USER
    May 14 13:16:34 instance-1 systemd[1]: caddy.service: Failed with result 'exit-code'.

  6. 編程隨想 says:

    俺認為,【習近平】必須【死亡】,【法輪功】必須【清除】,【郭文貴】必須【被抓】!周永康萬歲,江澤民萬萬歲!

    • 美博園 says:

      @編程隨想
      糊塗呀,你已經被魔鬼附體了,才會說出這種鬼話!
      周永康是已經「萬歲」了呀,你還不知道嗎?在監獄、在地獄裡萬歲了!
      江鬼折命,更是會在地獄裡進無生之門,永遠萬萬歲!你要一起去嗎?

    • 小狸貓 says:

      @編程隨想 要愛你們的仇敵.為那逼迫你們的禱告。這樣、就可以作你們天父的兒子.因為他叫日頭照好人、也照歹人、降雨給義人、也給不義的人。

  7. goldxpx says:

    博主,我在啟動caddy的時候報錯了,oot@instance-98:~# systemctl status caddy
    ● caddy.service - Caddy
    Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Thu 2020-04-09 11:07:28 HKT; 30s ago
    Docs: https://caddyserver.com/docs/
    Process: 30105 ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile (code=exited, status=217/USER)
    Main PID: 30105 (code=exited, status=217/USER)

    Apr 09 11:07:28 instance-98 systemd[1]: Started Caddy.
    Apr 09 11:07:28 instance-98 systemd[30105]: caddy.service: Failed at step USER spawning /usr/bin/caddy: No such process
    Apr 09 11:07:28 instance-98 systemd[1]: caddy.service: Main process exited, code=exited, status=217/USER
    Apr 09 11:07:28 instance-98 systemd[1]: caddy.service: Unit entered failed state.
    Apr 09 11:07:28 instance-98 systemd[1]: caddy.service: Failed with result 'exit-code'.
    root@instance-98:~# lsof -i :80|grep -v "PID"
    google_ne 688 root 7u IPv4 88039 0t0 TCP instance-98.asia-east2-b.c.fleet-radar-273006.internal:52958->metadata.google.internal:http (ESTABLISHED)
    google_cl 689 root 5u IPv4 87975 0t0 TCP instance-98.asia-east2-b.c.fleet-radar-273006.internal:52954->metadata.google.internal:http (ESTABLISHED)
    google_cl 689 root 6u IPv4 87718 0t0 TCP instance-98.asia-east2-b.c.fleet-radar-273006.internal:52950->metadata.google.internal:http (CLOSE_WAIT)
    google_ac 692 root 5u IPv4 87967 0t0 TCP instance-98.asia-east2-b.c.fleet-radar-273006.internal:52952->metadata.google.internal:http (ESTABLISHED)
    caddy 28958 root 6u IPv6 74309 0t0 TCP *:http (LISTEN)
    root@instance-98:~# journalctl --boot -u caddy.service
    -- Logs begin at Thu 2020-04-09 09:26:03 HKT, end at Thu 2020-04-09 11:09:23 HKT. --
    Apr 09 10:23:45 instance-98 systemd[1]: Started Caddy.
    Apr 09 10:23:45 instance-98 systemd[28944]: caddy.service: Failed at step USER spawning /usr/bin/caddy: No such process
    Apr 09 10:23:45 instance-98 systemd[1]: caddy.service: Main process exited, code=exited, status=217/USER
    Apr 09 10:23:45 instance-98 systemd[1]: caddy.service: Unit entered failed state.
    Apr 09 10:23:45 instance-98 systemd[1]: caddy.service: Failed with result 'exit-code'.
    Apr 09 10:30:39 instance-98 systemd[1]: Started Caddy.
    Apr 09 10:30:39 instance-98 systemd[29115]: caddy.service: Failed at step USER spawning /usr/bin/caddy: No such process
    Apr 09 10:30:39 instance-98 systemd[1]: caddy.service: Main process exited, code=exited, status=217/USER
    Apr 09 10:30:39 instance-98 systemd[1]: caddy.service: Unit entered failed state.
    Apr 09 10:30:39 instance-98 systemd[1]: caddy.service: Failed with result 'exit-code'.
    Apr 09 11:07:28 instance-98 systemd[1]: Started Caddy.
    Apr 09 11:07:28 instance-98 systemd[30105]: caddy.service: Failed at step USER spawning /usr/bin/caddy: No such process
    Apr 09 11:07:28 instance-98 systemd[1]: caddy.service: Main process exited, code=exited, status=217/USER
    Apr 09 11:07:28 instance-98 systemd[1]: caddy.service: Unit entered failed state.
    Apr 09 11:07:28 instance-98 systemd[1]: caddy.service: Failed with result 'exit-code'.

    麻煩幫我分析下好嗎?

    • goldxpx says:

      @goldxpx 我用的系統版本是debian9 因為用的google雲 debian10不能連接ssh 我還沒找到解決辦法

    • 美博園 says:

      @goldxpx
      再仔細檢查一下配置文件包括標點符號和空格等。
      這應該是caddy.servic文件配置錯誤。
      也檢查一下網域是否已經正確解析
      如果找不到原因,就重新安裝系統,在乾淨系統上重新安裝。caddy.service的安裝路徑,教程前幾天有更新。

    • submarine says:

      @goldxpx 我有遇到了同樣的問題
      Caddy.service 無法啟動
      Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: en
      Active: failed (Result: exit-code) since Thu 2020-04-16 23:41:43 UTC; 6s ago
      Docs: https://caddyserver.com/docs/
      Process: 2291 ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddy
      Main PID: 2291 (code=exited, status=217/USER)

      按照教程檢查過幾遍,也安裝過幾遍,最後系統重裝在乾淨的系統上配置,還是遇到這個問題。麻煩指教一下可能出現的問題可以嗎

      • submarine says:

        @submarine 排查了一下原因,因為通過教程下載的caddy.service 是以caddy 2 的語法來寫的,而這裡使用的Caddy仍然是1 (1.04), 因此通過這裡下載的caddy.servie (caddy 2的語法和caddy 1並不兼容)來啟動caddy是不不會成功的。
        因此要對caddy.serice裡面的命令做修改,或者用原來的1版本的caddy.service

    • submarine says:

      @goldxpx @submarine 排查了一下原因,因為通過教程下載的caddy.service 是以caddy 2 的語法來寫的,而這裡使用的Caddy仍然是1 (1.04), 因此通過這裡下載的caddy.servie (caddy 2的語法和caddy 1並不兼容)來啟動caddy是不不會成功的。
      因此要對caddy.serice裡面的命令做修改,或者用原來的1版本的caddy.service

  8. gotoschool says:

    我也是配置好了, 網頁可以正常訪問,但是v2ray不能連接
    後來發現原來是自己把 客戶端軟體 連線埠寫錯了, 不是那個自己配置的連線埠:例如33888, 而是固定的 443, 這個教程截圖是對的,
    但是這個其他客戶端的 那個 連接的教程說的有點含糊, 說的是配置自己的連線埠
    https://allinfa.com/v2ray-client-windows-android-mac-ios.html
    折騰了好久
    其實是剛開始就一次搞定了, 謝謝站長

    • 美博園 says:

      @gotoschool
      是的,二種方法的連線埠不同,自建2裡面已經有客戶端配置的教程圖。原來那個客戶端教程是與自建1配合寫的。已經在原來那個自建1裡面加上註解了。

  9. pata says:

    站長您好,我按照教程操作後,偽裝的網頁可以正常訪問,但是v2ray不能連接
    caddy日誌報錯
    Feb 05 11:44:50 takune caddy[31359]: http: TLS handshake error from x.x.x.x:38292: tls: client offered only unsupported versions:Feb 05 11:44:51 takune caddy[31359]: http: TLS handshake error from x.x.x.x:38500: EOF
    Feb 05 11:44:51 takune caddy[31359]: http: TLS handshake error from x.x.x.x:38576: EOF
    Feb 05 11:44:51 takune caddy[31359]: http: TLS handshake error from x.x.x.x:38628: EOF
    Feb 05 11:44:51 takune caddy[31359]: http: TLS handshake error from x.x.x.x:38696: tls: client offered only unsupported versions:
    顯示tls握手失敗,不知道該如何解決

    • 美博園 says:

      @pata
      這是說,你的客戶端版本不支持。
      用最新版的教程中的客戶端軟體試試

      • gotoschool says:

        @美博園 我也遇到了這個問題,
        後來又 運行了 幾行命令就好了
        ufw allow 33888
        systemctl restart caddy
        systemctl restart v2ray
        systemctl status caddy

        PS:我的連線埠也不是 33888, 而是其他值, 不知道設置這個33888有啥用

        不知是因為又設置 33888連線埠, 還是重啟了服務,
        反正就沒有那幾個錯誤信息了
        TLS handshake error from x.x.x.x:25408: EOF

  10. qota says:

    看來另外一條回復丟了,我的環境是CentOS 7.7.1908
    在執行這條命令後,caddy -agree -conf /etc/caddy/Caddyfile
    caddy開始自動申請證書,但是最後出錯了,報錯信息如下
    acme: Obtaining bundled SAN certificate 2020/01/01 [INFO] [example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/123
    2020/01/01 [INFO] [example.com] acme: Could not find solver for: tls-alpn-01 2020/01/01 [INFO] [example.com] acme: use http-01 solver
    2020/01/01 [INFO] [example.com] acme: Trying to solve HTTP-01 2020/01/01 [INFO] Deactivating auth: https://acme-v02.api.letsencrypt.org/acme/authz-v3/123
    2020/01/01 [INFO] Unable to deactivate the authorization: https://acme-v02.api.letsencrypt.org/acme/authz-v3/123
    2020/01/01 [INFO] [example.com] acme: Obtaining bundled SAN certificate
    2020/01/01 failed to obtain certificate: acme: error: 429 :: POST :: https://acme-v02.api.letsencrypt.org/acme/new-order :: urn:ietf:params:acme:error:rateLimited :: Error creating new order :: too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limits/

  11. 阿龍 says:

    您好,能否出一個v2ray-caddy-http2的教程
    非常感謝!

  12. Mikhail says:

    請教個問題,如果想讓caddy不自動申請證書,而是使用cloudflare的origin certificates(搭配cloudflare使用,並確保只有cloudflare能訪問伺服器,其他人訪問都會出現證書錯誤),改如何配置

  13. Kim says:

    ufw allow 33888,為什麼要加上這條命令,不太明白,不加也正常運行

    • 美博園 says:

      @Kim
      這個很奇妙,我們在測試時,有的伺服器不用這個ufw allow 33888也行,但是有的伺服器非要打開這個連線埠才能連接,所以,就寫上了,其原因未知,那位網友知道呢?

  14. qota says:

    我以前都是手動申請配置證書的,自動的出錯了完全不知道該怎麼解決

    • 美博園 says:

      @qota
      你說自動的出錯了……,那就在nona寫配置文件那一步,刪除或修改原來的配置文件,重新寫入新的配置文件就行。修改配置後,記得重新啟動caddy和v2ray。

  15. qota says:

    我的系統是CentOS 7.7.1908 已yum upgrade更新過
    當我嘗試運行這條命令時caddy -agree -conf /etc/caddy/Caddyfile
    caddy開始申請證書,結果申請失敗,記錄如下:
    acme: Obtaining bundled SAN certificate 2020/01/01 [INFO] [example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/123
    2020/01/01 [INFO] [example.com] acme: Could not find solver for: tls-alpn-01 2020/01/01 [INFO] [example.com] acme: use http-01 solver
    2020/01/01 [INFO] [example.com] acme: Trying to solve HTTP-01 2020/01/01 [INFO] Deactivating auth: https://acme-v02.api.letsencrypt.org/acme/authz-v3/123
    2020/01/01 [INFO] Unable to deactivate the authorization: https://acme-v02.api.letsencrypt.org/acme/authz-v3/123
    2020/01/01 [INFO] [example.com] acme: Obtaining bundled SAN certificate
    2020/01/01 failed to obtain certificate: acme: error: 429 :: POST :: https://acme-v02.api.letsencrypt.org/acme/new-order :: urn:ietf:params:acme:error:rateLimited :: Error creating new order :: too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limits/

    請問應該怎麼解決?

  16. pope says:

    經過本人多次摸索,網上找資料,多次重裝系統,終於搞定了,總結一下自己的經驗:
    1、時間調整:先用命令 dpkg-reconfigure tzdata 調整好系統時間,再用 date -R 確認與電腦一致;
    2、升級系統及安裝相關軟體包(關鍵步驟):本人用的是網上找的教程里的命令 apt-get -y update && apt-get -y install unzip zip wget curl nano sudo ufw socat ntp ntpdate gcc git ,全程安裝順利,反饋下本站教程中的 apt upgrade 命令,單獨使用的話,每次都有報錯記錄提示,不知具體是什麼原因;
    3、本站教程中:「9-1、加入Caddy配置文件」中的詳細配置文本 proxy /vv22 127.0.0.1:33888 後應該是少了一個 { ,建議站長檢查下 (本人對照了多個網上相似教程的配置文本);
    4、另外建議站長可以考量在以後教程中增加CDN的設置(比如cloudflare之類),進一步增加安全性。
    最後再次感謝站長的熱心分享和耐心解答,也希望站長以後能出更多好的教程。

    • 美博園 says:

      @pope
      1、非常感謝,很抱歉,一個小失誤耽擱了大家不少時間,是少了一個括弧,已經更正了。下次教程得更小心檢查了!
      2、時間調整問題,後來感覺這個問題很少了,就忽略了,看來還是應該補上完整的更好,減少網友遇到問題的可能;
      3、apt-get -y update && apt-get -y install unzip zip wget curl nano sudo ufw socat ntp ntpdate gcc git 這個命令很強大,想來這也是一個好辦法,把一些相關組件(儘管有些系統是有的、有的本教程是用不到的)都先安裝上,減少系統問題帶來的安裝出錯的幾率。
      這幾條都很好,謝謝補充完善。

      4、CDN(cloudflare)有利有弊,所以一直沒有加上。

  17. pope says:

    站長你好,我試了好多次,後來還重裝了debian10系統,每次在 「 7-1、安裝SystemD服務配置,然後重新載入SystemD」 這一步輸入那4條命令,都會出現下面的提示:
    wget https://raw.githubusercontent.com/caddyserver/caddy/master/dist/init/linux-systemd/caddy.service
    -bash: wget: command not found

    cp caddy.service /etc/systemd/system/
    cp: cannot stat 'caddy.service': No such file or directory

    chown root:root /etc/systemd/system/caddy.service
    chown: cannot access '/etc/systemd/system/caddy.service': No such file or directory

    chmod 644 /etc/systemd/system/caddy.service
    chmod: cannot access '/etc/systemd/system/caddy.service': No such file or directory
    不知道是什麼原因?

    • 美博園 says:

      @pope
      這個是提示你的系統沒有 wget這個下載工具,後面的問題是這個引起的,美博沒有遇到這個沒有wget的情況。
      你用下面這個命令先安裝 wget,然後再運行那些命令。

      apt-get install wget
      • pope says:

        @美博園 運行了一下,顯示 -bash: yum: command not found,我是debian10的系統

      • pope says:

        @美博園 apt-get install yum運行後,再運行yum -y install wget
        出現 There are no enabled repos.
        Run "yum repolist all" to see the repos you have.
        You can enable repos with yum-config-manager --enable ,後面運行命令重複出現
        wget https://raw.githubusercontent.com/caddyserver/caddy/master/dist/init/linux-systemd/caddy.service
        -bash: wget: command not found

        cp caddy.service /etc/systemd/system/
        cp: cannot stat 'caddy.service': No such file or directory

        chown root:root /etc/systemd/system/caddy.service
        chown: cannot access '/etc/systemd/system/caddy.service': No such file or directory

        chmod 644 /etc/systemd/system/caddy.service
        chmod: cannot access '/etc/systemd/system/caddy.service': No such file or directory
        太折騰了。

    • 美博園 says:

      @pope
      用這個命令安裝 wget
      apt-get install wget
      你的VPS提供的系統可能有問題

      • pope says:

        @美博園 請教一下站長,前面的問題解決了,最後一步:
        9-4、檢查Caddy啟動狀態,顯示運行失敗,然後9-5、Caddy沒有正常啟動的記錄查看
        輸入命令
        root@Bu:~# journalctl --boot -u caddy.service

        -- Logs begin at Tue 2019-12-31 12:19:07 UTC, end at Tue 2019-12-31 16:22:39 UTC. --
        Dec 31 16:20:03 Bule-666 systemd[1]:Started Caddy HTTP/2 web server.
        Dec 31 16:20:03 Bule-666 caddy[7656]: [INFO] Caddy version: v1.0.4
        Dec 31 16:20:03 Bule-666 caddy[7656]: /etc/caddy/Caddyfile:10 - Error during parsing: Unknown directive 'header_upstream'
        Dec 31 16:20:03 Bule-666 systemd[1]: caddy.service: Main process exited, code=exited, status=1/FAILURE
        Dec 31 16:20:03 Bule-666 systemd[1]: caddy.service: Failed with result 'exit-code'.

        不知這是什麼問題?

        • 美博園 says:

          @pope
          不能解析 'header_upstream'
          你用 https://你的網域
          可以正常訪問網站嗎?

          同時,仔細檢查一下Caddyfile配置文件,特別注意空格、符號

          • 美博園 says:

            @美博園

            先停止v2ray試試,用命令:
            systemctl stop v2ray

            然後,再接著你原來的步驟 Caddy啟動

            如果Caddy正常啟動了,

            到最後再啟動v2ray:systemctl start v2ray

            ----------------------------------------------------
            如果還是不行,建議重新安裝系統reinstall,系統在全新狀態下,再安裝。
            現在已經熟悉過程了,操作就快了。
            原來的操作記錄,可用右鍵點黑框,全選,複製出來保存,做一個記錄,下次對照。

            • 美博園 says:

              @美博園
              或者安裝另外二種方法 trojan或naiveproxy,效果都很好,比v2ray安裝簡單一些,naiveproxy更簡單,只是手機不能用
              有的VPS對系統做了一些處理。

              • pope says:

                @美博園 站長你好,我昨天把caddy和v2ray伺服器端裝好了,都顯示正常運行,然後配置v2ray客戶端的時候,弄了好久都上不了網,請教下本教程中「 12-2、配置參數」中的 1)伺服器參數設置中,添加[Vmess]伺服器圖示中的連線埠是443還是安裝v2ray時自動生成的連線埠號,還有客戶端的配置文件config.json是否需要單獨配置(網上有很多配置文件config.json的設置教程),另外客戶端版本是否要最新版本,我目前更新到了最新版本,謝謝。

                • 美博園 says:

                  @pope
                  你使用V2rayN客服端,把參數設置進去就好了,安裝本文方法連線埠是443,不需要另外配置客戶端config.json
                  當你新裝伺服器後,客戶端要用最新版本。

                  • pope says:

                    @美博園 你好,我重新下載安裝了新的客戶端,重新按本教程圖示設置了,還是上不了網,之前用本站發布的nginx教程設置的節點在這個新客戶端運行很正常,但caddy的這個節點伺服器延遲顯示正常,伺服器測速顯示:遠程伺服器返回錯誤,(503)伺服器不可用。不知是什麼原因?

                    • 美博園 says:

                      @pope
                      再檢查伺服器的啟動狀態
                      仔細檢查將客戶端的配置參數與伺服器端配置文件參數對比,檢查是否一致?
                      實在不行,因為現在熟悉操作了,重新安裝系統,重新製作一次,注意每一個細節,這樣可能更快一些

                  • pope says:

                    @美博園 你好,我又查了一下,發現雖然caddy正常運行,但命令行底部顯示:caddy[xxxx]: [ERROR 502 /56789ottttyr] dial tcp 127.0.0.1:12345: connect: connection refuse,這是有問題嗎?如果有的話,怎麼解決,謝謝。

  18. Stiven says:

    Caddy 跑不起來,在反向代理那裡報錯。

  19. jijkijkm mh says:

    太麻煩,有沒有布置好的,公開出來讓大家用

這裡是你留言評論的地方


請留言


9 + 3 =
【您可以使用 Ctrl+Enter 快速發送】
Copyright © 2007 - 2025 , Design by 美博園. 著作權所有. 若有著作權問題請留言通知本站管理員. 【回到頂部】