自建最強科學上網1:v2ray + websocket + web + nginx (EasyEngine)
【美博翻牆2019.5.13】美博編註:
因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的誕生正應驗了古訓「魔高一尺,道高一丈」。在GFW封鎖網路升級後,翻牆愛國網友也遇到了一些問題:VPN使用艱難,而且很多VPN的背後並非國外的安全來源,安全無從保障;前幾年為網友廣泛喜愛的SS(Shadowsocks)的開發者被喝茶、SSR(ShadowsocksR,SS的修改增強版)也因故停止開發。至今,v2ray的新方法成為翻牆網友的新寵,而且逐漸得到了完善,v2ray作為創新的翻牆方法,利用其核心技術可以變換出多種翻牆應用,目前結合 v2ray + websocket + web + nginx (EasyEngine)的翻牆愛國方式,成為最強的科學上網工具,美博園翻牆網本文詳細介紹給網友。
剛上手 v2ray 的時候,可能感覺 v2ray 比較複雜,不過,現在隨著大家廣泛的使用,v2ray 的多種建立代理方式都日漸成熟,配置越來越簡化,懂一點點基本伺服器知識的網友只要複製代碼指令就可完成自建代理全程,基本上按照詳細教程的步驟走,就能夠建立一個屬於自己和/或朋友們使用的安全代理。
起初不熟悉,步驟多一點,可能會花上一天時間,但熟悉之後,重建、新建代理也就是複製命令、不到一小時就可搞定的活,得到的卻是安全上網、可以體會到一勞永逸的欣慰,值得大家一試!
請注意:本文介紹的方法只是v2ray應用的多種科學上網方法之一,是經過美博園(allinfa.com)反覆測試最好的方式之一。也歡迎網友完善補充。
------------- 美博園(allinfa.com)發布的幾個目前最好的自建代理,可自行選擇使用: 自建最強科學上網4:NaiveProxy + Caddy - 美博園 自建最強科學上網3:trojan + Caddy - 美博園 自建最強科學上網2:V2ray+Caddy+Tls+WebSocket - 美博園 美博園(allinfa.com)認為這幾個組合都是目前翻牆思路最好、最強的翻牆方法,可等同使用。 -------------
V2Ray專題全部文章請參看:v2ray - 美博園
本文介紹方法適用於系統 Ubuntu 18.04、Debian 8
一、v2ray是什麼
V2Ray 是在 Shadowsocks 作者被請喝茶之後出現的一個開源項目,V2Ray是早期的叫法,後來 V2Ray 規模越來越大,就成立一個 Project V 項目。
美博園翻牆網這裡重點介紹建立代理的具體步驟,原理不詳細介紹,要了解原理的網友,請參考v2ray官方的詳細介紹。
v2ray.Project V GitHub項目官方: https://github.com/v2ray
v2ray.Project V 官方網站:https://www.v2ray.com/
二、v2ray特點
1、把v2ray代理流量偽裝成https,代理上網就是在訪問一個https網站;
2、V2Ray 定位是一個平台,開源,任何開發者都可以在這個平台上利用V2Ray開發出一個新的代理軟體;
3、V2Ray 的功能非常強大,
4、V2Ray提供自己原創的翻牆協議VMess,一般認為比Shadowsocks 更安全,一般聲稱支持V2Ray,就是指支持 VMess協議
V2Ray也支持其他協議:
傳統的代理協議:HTTP 和 SOCKS。
MTProto:Telegram 的開發團隊製作的一款協議,作為 Telegram 的專用代理協議。
Shadowsocks協議,但不支持 ShadowsocksR;
三、自建 v2ray + websocket + web + nginx (EasyEngine) 的條件
1)一台 VPS 主機
2)一個網域
3)SSH連接工具:以前用putty較多,現在用Xshell很方便,本文會以Xshell進行說明。
四、建立代理
建立步驟大致分為三個大的部分:
1、v2ray 伺服器端安裝及配置
2、nginx (EasyEngine)安裝及配置
3、v2ray 客戶端使用
美博園本文並沒有區分這三大部分,而是按照每一個操作過程順序來寫出具體操作步驟,請網友自建代理時,按照下面編號順序一步一步往下走:
01、基本條件之一:購買VPS並安裝系統
請見教程:
自己搭建代理伺服器:VPS的選擇
自己搭建代理伺服器:Vultr VPS 購買圖文教程
自己搭建代理伺服器:Vultr VPS 系統安裝圖文教程
請記住VPS安裝系統後得到的: ip地址、 密碼、 用戶名(默認是root),後面會用到。
02、基本條件之二:購買網域及設置與ip伺服器關聯
請參考教程:
自己搭建代理伺服器:網域購買及設置與ip伺服器關聯
利用v2ray建立代理,並非一定需要網域,不要網域也可以建立代理。
但是,整合有網域的代理技術,可明顯提高代理安全性,把代理行為偽裝成,是實質的非虛擬,訪問https網頁,顯然多一個網域整合進來是值得的。
美博園翻牆網本文介紹的是整合有網域的方法。
03、用SSH工具——XShell 連接VPS伺服器
在自家電腦上通過安全的SSH連接到遠端的VPS伺服器,就可以發出各種指令來安裝、建立代理伺服器,在電腦上安裝XShell軟體來實現SSH連接非常方便,美博園推薦這個工具。
以下進入安裝自建代理的部分,各種指令按照本教程做就行。
新手注意:以下命令都是在英文半形輸入完成,電腦的輸入法不要處於中文輸入狀態,以免無意輸入中文字元出錯。
04、更新系統
再次說明:本文介紹方法適用於系統 Ubuntu 18.04、Debian 8,二者的安裝命令是一樣的(後面的防火牆設置不一樣)
執行以下指令:
dpkg-reconfigure tzdata && apt update && apt -y dist-upgrade && apt -y autoremove && reboot
然後回車
彈出窗口
在出現的窗口中,這裡需首先選擇時區:
用鍵盤上下鍵,選擇:
–> Asia,回車
再選擇
–> Hong Kong 回車
就可以,之後就會下載更新並自動重啟。
安裝過程中,
在命令框中可看到不斷的數據變化
最下方有進度顯示,至100%才完成,耐心等待約數分鐘才能完成。
此結束時,系統自動重新啟動,SSH將斷開,需要重新連接SSH。
05、時間校準
美博園先說明:一般來說,如果你的電腦、VPS伺服器本身是自動調準時間的,時間一般是準確的,這一步並非需要調整。
據v2ray官方介紹:對於 V2Ray,它的驗証方式包含時間,就算是配置沒有任何問題,如果時間不正確,也無法連接 V2Ray 伺服器的,伺服器會認為你這是不合法的請求。所以系統時間一定要正確,只要保證時間誤差在90秒之內就沒問題。
對於 VPS(Linux) 可以執行命令 date -R 查看時間:
date -R
會顯示出,如:
Sun, 22 Jan 2017 10:10:36 -0500
顯示的結果中的 -0500 代表的是時區為西 5 區,如果轉換成東 8 區時間則為 2017-01-22 23:10:36。
如果時間不準確,可以使用 date --set 修改時間:
sudo date --set="2017-01-22 16:16:23"
會顯示出,如:
Sun 22 Jan 16:16:23 GMT 2017
對 VPS 的時間校準之後,自己的個人電腦時間也要調準,電腦時間調準這裡不再贅述,網上方法很多。
無論是 VPS 還是個人電腦,時區是什麼無所謂,因為 V2Ray 會自動轉換時區,但是時間一定要準確,即時間誤差在90秒之內。
06、環境要求-安裝curl
要求系統中裝有curl,建議提前在此安裝,安裝命令:
# Debian/Ubuntu系統輸入如下命令:
apt-get update -y && apt-get install curl -y
# CentOS系統輸入如下命令:
yum update -y && yum install curl -y
07、安裝 unzip 和 daemon
安裝 V2Ray 時需要用到 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) ... root@vultr:~#
08、安裝 官方版 V2Ray
美博園(allinfa.com)特別提醒:
網上有一些安裝v2ray的一鍵安裝包,美博翻牆網在此鄭重提醒網友:最好是直接安裝官方版v2ray,就是美博園本文用到的,其實就是一條命令,並不複雜。
有些一鍵安裝包只會省略很少的步驟,但安裝包裡面卻有一些特別的設置,如過濾了一些海外敏感網站等,這對網友並非都適用,切記!
安裝 官方版 V2Ray 執行命令:
bash <(curl -L -s https://install.direct/go.sh)
這樣一條命令就會完成安裝 V2Ray.
執行很快
此腳本會自動安裝以下文件:
/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
執行完成末端會顯示有:
PORT:12345 (這裡只是示意,非真實連線埠數據)
UUID:ewer735c-e888-40cc-8ded-1fe74d715c75 (這裡只是示意,非真實ID數據)
Created symlink /etc/systemd/system/multi-user.target.wants/v2ray.service → /etc/systemd/system/v2ray.service.
V2Ray v4.18.0 is installed.
root@vultr:~#
請留意:
這裡可以看到 Port 和 UUID, UUID 相當於 V2Ray 的密碼,
請將 Port 和 UUID 這二項資料複製保存記錄下來,後面要用到。
09、啟動v2ray
雖然已經安裝了 V2Ray,但並沒有啟動,
現在啟動v2ray,輸入命令:
service v2ray start
查看v2ray狀態
這個可以查看,也可以不查看
輸入命令:
service v2ray status
如看到如下綠色字 active (running),表明 v2ray已經啟動:
注意:查看v2ray狀態後,SSH窗口的命令輸入游標可能消失,即:沒有了 root@vultr:~#(本例如此,你的伺服器vultr這個名會不同),無法輸入下一個命令
這時,請參考前文:SSH連接軟體-Xshell下載及使用教程 - 美博園 之 3、「打開」建立的SSH連接
即:重新打開SSH連接到伺服器,就會在新建的SSH連接中出現 root@vultr:~# ,可以輸入下一個命令了
10、 安裝 EasyEngine
V2ray需用到 NGINX,NGINX是什麼,大多數網友不需要了解,知道用下面命令安裝即可,若需要詳細了解的網友可自行網上查詢。
美博園翻牆網這裡推薦安裝 EasyEngine 來架前端,它相當好用,因它內置了 NGINX 和 Let』s Encrypt,省去我們一些安裝步驟,而且,EasyEngine可在 Let』s Encrypt的 SSL加密證書三個月期滿後自動續約,相當方便。
一鍵命令安裝EasyEngine
wget -qO ee rt.cx/ee && sudo bash ee
完成需約2、3分鐘
中途會詢問你的 名字 和 email
請自己隨意輸入,但要注意: 輸入時一定要在游標處,不要在前後增加空格,這是常常會出錯的地方
提示:
EasyEngine (ee) will NEVER send your information across
Enter your name:
(輸入名字,如:)
abcd (請改為自己想輸入的名字,只是標示,可隨意)
回車
接著,提示輸入 mail
Enter your name: abcd
Enter your email:
(輸入mail,如:)
abc123@gmail.com (請改為自己的mail,也沒有看到實際用途,可隨意)
回車
繼續快速安裝,幾十秒完成
完成安裝可見:
For EasyEngine (ee) auto completion, run the following command source /etc/bash_completion.d/ee_auto.rc EasyEngine (ee) installed/updated successfully EasyEngine (ee) help: https://docs.rtcamp.com/easyengine/ root@vultr:~#
11、 應用bash自動完成功能
安裝完成後,需要為EasyEngine ee命令應用bash自動完成功能,令設定更加順利。
運行以下命令:
source /etc/bash_completion.d/ee_auto.rc
12、安裝 Let』s Encrypt 的SSL證書
Let』s Encrypt 提供免費的 SSL證書,為大家使用ssl加密(即:https)提供了方便,每3個月需要重新申請一次,但本文方法安裝在EasyEngine中,到期會自動續約。
在安裝EasyEngine後,可以很方便安裝Let』s Encrypt 的SSL證書,一個命令解決問題。
先請大家留意,如下命令中的網域 abc.com(本文示意),需要換成你自己申請的 網域domain!
輸入命令:
ee site create abc.com --html --letsencrypt
回車
大概幾分鐘後,會提示:
root@vultr:~# ee site create abc.com --html --letsencrypt Adding repository for NGINX, please wait... Updating apt-cache, please wait... Fixing missing GPG keys, please wait... Installing packages, please wait... Reload : nginx [OK] Running pre-update checks, please wait... Setting up NGINX configuration [Done] Setting up webroot [Done] Reload : nginx [OK] HTTP Auth User Name: easyengine HTTP Auth Password : bHJJEG Successfully created site https://abc.com Letsencrypt is currently in beta phase. Do you wish to enable SSl now for abc.com? Type "y" to continue [n]:
詢問是否繼續
輸入字母 y
然後按 回車(Enter鍵)
這個比較長一點時間,約幾分鐘完成,
可見:
Do you wish to enable SSl now for abc.com? Type "y" to continue [n]:y Downloading LetsEncrypt [Done] Please Wait while we fetch SSL Certificate for your site. It may take time depending upon network. Let's Encrypt successfully setup for your site Your certificate and chain have been saved at /etc/letsencrypt/live/abc.com/fullchain.pem Configuring Nginx SSL configuration Adding /var/www/abc.com/conf/nginx/ssl.conf Adding /etc/nginx/conf.d/force-ssl-abc.com.conf Added HTTPS Force Redirection for Site https://abc.com Creating Cron Job for cert auto-renewal Reload : nginx [OK] Congratulations! Successfully Configured SSl for Site https://abc.com Your cert will expire within 89 days. root@vultr:~#
說明安裝ssl成功,ssl證書已經安裝到你的網域 abc.com上了,89天後過期。
Let』s Encrypt 安裝不了的說明 我們已經收到有多位網友反饋在安裝SSL時遇到問題,有關問題請見下文: Let's Encrypt SSL 安裝不了的若干問題解答
12、將 v2ray 加入 nginx
其實就是在網域domain中建立一個路徑。按照下面幾步輸入命令:
12-1)進入 nginx 的 conf(整合文件)
同樣需注意,下面命令中的網域abc.com,要改為你的網域domain
輸入:
cd /var/www/abc.com/conf/nginx
回車
12-2)之後輸入下面指令編輯NGINX配置文件:v2ray.conf
輸入命令:
nano v2ray.conf
12-3)在窗口中,將下列內容貼上去:
請注意下列要貼上去的內容中,有二個地方要先修改為你自己的內容:
a)將 vv22 改為你自己的路徑,可改為任意數字字母
b)12345這個連線埠號,改為你前面第08步記下的port
美博園(allinfa.com)提示: 複製、修改下面代碼時特別注意不要增減空格或任何標點符號等。
再次提示:下面代碼中這個路徑 /vv22 的斜杠後沒有空格;127.0.0.1:12345這些數字間都沒有空格!
--- 請複製以下代碼,不包括本行 ---
location /vv22 { proxy_redirect off; proxy_pass https://127.0.0.1:12345; proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; }
--- 複製代碼結束,不包括本行 ---
退出nano編輯狀態
輸入上述修改後的內容後,退出nano編輯狀態
按 Ctrl+X
它會問你會否儲存檔案,按下 y 後,
再按多一次 Enter 鍵就可以了。
返回根目錄
注意,上述退出nano編輯後,並不在根目錄,而是在:root@vultr:/var/www/abc.com/conf/nginx#
需要退回到根目錄後再輸入後續命令。
在root@vultr:/var/www/abc.com/conf/nginx# 後面
輸入
cd
回車
就可退回到根目錄
13、建立一個 html網頁文件
給網域建立一個網頁文件,請輸入如下命令,
請注意:務必先將下面命令中的網域 abc.com(本文示意)改為你自己的網域
cp /var/www/html/index.nginx-debian.html /var/www/abc.com/htdocs/index.html && chown www-data: /var/www/abc.com/htdocs/index.html
14、重新啟動 NGINX
輸入命令
service nginx restart
回車
查看nginx啟動狀態
輸入命令:
service nginx status
顯示有綠色的 active (running),表明nginx正在運行。
15、設定 V2ray伺服器端
V2ray 伺服器端所有設定都在 /etc/v2ray/config.json,所以修改這個文件就可以了。
15-1)首先備份原本的 V2ray 伺服器端 配置文件 config.json
輸入命令:
cp /etc/v2ray/config.json /etc/v2ray/config.json.bak
15-2)然後,刪除原本的config.json文件
因上一步已經備份了原本的config.json文件,可以將原本刪除了。
輸入命令:
rm /etc/v2ray/config.json && nano /etc/v2ray/config.json
15-3)編輯 V2ray 伺服器端 配置文件 config.json
還記得前面第08步叫大家記下 port 和 UUID 嗎? 這裡就會用到了。
---
如果忘記的話,可以輸入以下指令:
cat /etc/v2ray/config.json.bak
就可看到原本的 UUID 和 port
---
將下列內容複製到窗口中
美博園(allinfa.com)提示:
※ 請務必不要動代碼中的任何標點符號、包括不要增減空格等等;
再次提示:這個伺服器端的代碼中,最容易出錯的是自己填入的幾個數據如連線埠、ID、路徑等,在『複製』時無意中『增加了空格』,如ID那一行:
本來是 "id": "ewer735c-e888-40cc-8ded-1fe74d715c75", 即:雙引號中的字元間全部沒有空格;
但在複製時系統可能會在引號前、後或ID那串字元前增加半形空格,不易發現,變成這樣,如:
"id": "_ 這裡多一個空格ewer735c-e888-40cc-8ded-1fe74d715c75", 這就會出錯。
※ 請務必替換下面3項內容:
1)"port":12345, 將12345換成第08步自己的連線埠號
2)"id": "ewer735c-e888-40cc-8ded-1fe74d715c75", 請更換為第08步自己的UUID
3)"path": "/vv22" 請將vv22更換為第12-3步中自己的路徑
再次提示:這個路徑 "/vv22" 的引號前、引號後、斜杠前、斜杠後,都沒有空格,即:
"/vv22" 這是對的,字元間全部沒有空格;
這些有空格的都會出錯:" /vv22" "/ vv22" "/vv22 " " / vv22" 等
========= 複製下面的內容,不包括本行 ===========
{
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbound": {
"port": 12345,
"protocol": "vmess",
"settings": {
"clients": [{
"id": "ewer735c-e888-40cc-8ded-1fe74d715c75",
"level": 1,
"alterId": 64,
"security": "auto"
}]
},
"streamSettings":{
"network":"ws",
"security": "auto",
"wsSettings":{
"path": "/vv22"
}
}
},
"outbound": {
"protocol": "freedom",
"settings": {}
},
"outboundDetour": [
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}
],
"routing": {
"strategy": "rules",
"settings": {
"rules": [
{
"type": "field",
"ip": [
"0.0.0.0/8",
"10.0.0.0/8",
"100.64.0.0/10",
"127.0.0.0/8",
"169.254.0.0/16",
"172.16.0.0/12",
"192.0.0.0/24",
"192.0.2.0/24",
"192.168.0.0/16",
"198.18.0.0/15",
"198.51.100.0/24",
"203.0.113.0/24",
"::1/128",
"fc00::/7",
"fe80::/10"
],
"outboundTag": "blocked"
}
]
}
}
}
========= 複製到此結束,不包含本行 ==============
15-4、保存修改:
貼上上述代碼後,不用回車
按Ctrl+X
來退出 nano編輯
它會問你是否儲存檔案,按下 y
再按 Enter 鍵就可以了。
16、輸入語法檢查:
因上面輸入的命令很多,難免有時輸入有誤,此步可進行語法檢查.
16-1)安裝jq
輸入命令:
apt install jq
會提問是否繼續:
Do you want to continue? [Y/n]
輸入 y
回車
16-2)語法檢查
輸入命令:
jq . /etc/v2ray/config.json
沒有提示,表明沒有問題。
17、重新啟用v2ray
輸入命令:
service v2ray restart
檢查一下啟動狀態,輸入命令:
service v2ray status
如看到 綠色字 active (running),表明 v2ray已經啟動。
18、重新 reload sysctl
輸入
sysctl -p
回車
-----------------
至此,本教程v2ray代理已經安裝完成可以使用了。
為了增強安全性,下面介紹防火牆設置,請接著上面的步驟繼續完成下面的設置:
-----------------
19-1、Ubuntu 18.04 系統 開啟防火牆及連線埠設置
如果你使用的是 Ubuntu 18.04 系統,請按照下面的設置,不適用於Debian系統和Centos系統
因我們只是用於翻牆,需要打開這幾個連線埠 port: 22, 80, 443,和你自己的連線埠(本教程例舉為12345),
22 / TCP(入站/出站):標準SSH連線埠
80 / TCP(入站/出站):標準HTTP連線埠
443 / TCP(入站/出站):標準HTTPS連線埠
12345 / TCP(出站):連接到GPG密鑰伺服器連線埠
用下面的命令打開這幾個 port
依次輸入以下指令:
ufw allow 22
回車
ufw allow 80
回車
ufw allow 443
回車
再次提醒下面命令的12345改為自己『08、安裝 官方版 V2Ray』產生的連線埠
ufw allow 12345
回車
再輸入命令啟用防火牆
ufw enable
回車
會提問:
root@vultr:~# ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)?
問是否真的啟用防火牆 enable firewall,並警告如果設定不當會斷線。因我們已經啟用 allow port 22 ,所以沒有問題,
按下 y 回車
就可以了。
接上,linux系統設定微調
提示:此僅適用於Ubuntu系統,不適用於Debian系統和Centos系統。
參考:
Linux TCP 性能調優筆記 · Siege
Linux TCP 性能調優筆記 - Siege
目的是幫助伺服器「提高並發數量」和「改善高延遲掉包」情況,使得連線速度更好一些。
本文可以
20-1)首先備份原本設定
cp /etc/sysctl.conf /etc/sysctl.conf.bak
20-2)刪除原本文件
rm /etc/sysctl.conf && nano /etc/sysctl.conf
20-3)複製下面新設定文件內容
--------- 複製 下面內容 開始 start,不包含本行 -----------
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#
### 記憶體管理 ###
#提高整個系統的文件限制
fs.file-max = 2097152
fs.inotify.max_user_watches=524288
# 減少使用緩存
vm.swappiness = 10
vm.vfs_cache_pressure=50
vm.dirty_ratio = 60
vm.dirty_background_ratio = 2
### 一般資訊安全設置 ###
#表示開啟SYN Cookies。當出現SYN等待隊列溢出時,使用cookies來處理,可防範少量SYN攻擊,默認為0,表示關閉;
net.ipv4.tcp_syncookies = 1
# Number of times SYNACKs for passive TCP connection.
net.ipv4.tcp_synack_retries = 2
#表示用於向外連接的連線埠範圍。預設情況下很小
net.ipv4.ip_local_port_range = 2000 65535
# Protect Against TCP Time-Wait
net.ipv4.tcp_rfc1337 = 1
# 減少 tcp_fin_timeout 等待時間
net.ipv4.tcp_fin_timeout = 15
# 表示當keepalive起用的時候,TCP發送keepalive消息的頻度。
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
### TUNING NETWORK PERFORMANCE ###
# 預設 socket 緩存
net.core.rmem_default = 31457280
net.core.wmem_default = 31457280
#增加 TCP 緩存上限
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
# 增加接收的連接
net.core.somaxconn = 65535
# 當網路卡接收的 packets 快過 kernel 能處理的時候,增加連線進來的 backlog queue 能令 kernal 有更多時間處理
net.core.netdev_max_backlog = 250000
# Increase the maximum amount of option memory buffers
net.core.optmem_max = 25165824
#表示SYN隊列的長度,默認為1024,加大隊列長度?8192,可以容納更多等待連接的網路連接數。
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 1440000
# Increase the maximum amount of option memory buffers
net.core.optmem_max = 25165824
#增加 Linux 自動調整的 TCP 緩存上限
# This is measured in units of pages (4096 bytes)
net.ipv4.tcp_mem = 65536 131072 262144
net.ipv4.udp_mem = 65536 131072 262144
# Increase the read-buffer space allocatable
net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.udp_rmem_min = 16384
# Increase the write-buffer-space allocatable
net.ipv4.tcp_wmem = 8192 65536 16777216
net.ipv4.udp_wmem_min = 16384
# 表示系統同時保持TIME_WAIT的最大數量,如果超過這個數字,TIME_WAIT將立刻被清除並列印警告信息,可以用來防止簡單的 DOS 攻擊。
net.ipv4.tcp_max_tw_buckets = 1440000
#表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1
#表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉;
#為了對NAT設備更友好,建議設置為0。
#修改TW快速回收的問題以更好的兼容移動設備。
net.ipv4.tcp_tw_recycle = 0
#修改系統默認的 TIMEOUT 時間。
net.ipv4.tcp_fin_timeout = 30
#額外的,對於內核版本新於**3.7.1**的,我們可以開啟tcp_fastopen:
net.ipv4.tcp_fastopen = 3
#recommended for hosts with jumbo frames enabled
net.ipv4.tcp_mtu_probing = 1
20-4)退出保存
粘帖上述內容後
按Ctrl+X
退出 nano,
問你會否儲存檔案,按下 y
再按Enter 鍵
就可以。
-----------複製上面內容 結束,不包含本行-------------------
19-2、Debian 8 系統 開啟防火牆及連線埠設置
如果你使用的是 Debian 8 系統,請按照下面的設置,不適用於Ubuntu系統和Centos系統
1)安裝UFW
Debian默認不安裝UFW,使用apt安裝:
sudo apt install ufw
2)設置默認策略
要設置UFW使用的默認值,使用以下命令:
sudo ufw default deny incoming sudo ufw default allow outgoing
3)允許SSH連接
允許連線埠22上的所有連接
sudo ufw allow 22
如果將SSH使用其他連線埠,則必須指定相應的連線埠。例如,如果SSH伺服器正在監聽連線埠2222 ,則可以使用此命令允許該連線埠上的連接:
sudo ufw allow 2222
4)啟用UFW
在允許了SSH後,才啟用UFW,不然SSH連接會斷開
要啟用UFW,使用以下命令:
sudo ufw enable
會詢問是否安裝,
root@v3225:~# sudo 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、自己伺服器的連線埠本教程的12345
依次輸入:
sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 12345 (改為自己的v2ray伺服器連線埠)
至此,防火牆設置完成
=== 以上到此,v2ray完成,可以安全使用了,祝賀大家,辛苦了!===
參考:一些在線工具/資源
前面提到了,v2ray為網友搭建了一個平台,網友可以發揮才智創建多種代理用法,本文介紹的只是眾多用法中的一種方式。 以下是一些在線工具/資源,方便網友在進一步使用時自己創新和靈活應用(不分先後順序): VeekXT V2Ray配置生成(veekxt.com) https://www.veekxt.com/utils/v2ray_gen 支持 4.x 版本的配置文件生成器 V2Ray 配置生成器(GitHub) https://github.com/htfy96/v2ray-config-gen 靜態 V2Ray 配置文件生成頁面 UUID Generator(uuidgenerator.net) https://www.uuidgenerator.net/ VMess User ID 生成工具 vTemplate 項目倉庫(GitHub) https://github.com/KiriKira/vTemplate 一個 V2Ray 配置文件模板收集倉庫
***
=== 自建最強代理 v2ray、trojan、NaiveProxy 系列文章參考 ===
自建最強科學上網4:NaiveProxy + Caddy - 美博園 自建最強科學上網3:trojan + Caddy - 美博園 自建最強科學上網2:V2ray+Caddy+Tls+WebSocket - 美博園 自建最強科學上網:v2ray + websocket + web + nginx (EasyEngine) - 美博園 自己搭建代理伺服器:VPS的選擇 - 美博園 自己搭建代理伺服器:Vultr VPS 購買圖文教程 - 美博園 自己搭建代理伺服器:Vultr VPS 系統安裝圖文教程 - 美博園 自己搭建代理伺服器:檢測ip是否被牆及更換ip - 美博園 自己搭建代理伺服器:網域購買及設置與ip伺服器關聯 - 美博園 SSH連接軟體-Xshell下載及使用教程 - 美博園 WinSCP:連接遠端伺服器的管理傳輸工具的使用教程 - 美博園 v2ray客戶端代理上網 - Windows、Android、Mac、ios - 美博園 Let's Encrypt SSL 證書安裝不了的若干問題解決 - 美博園 如何開啟Google TCP BBR 加速 - 美博園 V2ray自建代理遇到的一些問題及解決 - 美博園
原文標題:自建最強科學上網1:v2ray + websocket + web + nginx (EasyEngine) - 美博園
美博園文章均為「原創 - 首發」,請尊重辛勞撰寫,轉載請以上面完整鏈接註明來源!
軟體著作權歸原作者!個別轉載文,本站會註明為轉載。
網 友 留 言
21條評論 in “自建最強科學上網1:v2ray + websocket + web + nginx (EasyEngine)”這裡是你留言評論的地方




和之前翻牆比起來,現在太複雜了,請問還有簡單的介紹嗎?
博主您好:
首先感謝您這篇翻牆史上最強最詳細的教程!但我在安裝EasyEngine時從第二步開始都有報錯,無法安裝成功。最初是因爲在輸入郵箱時打錯了一個字元後backspace無法刪除,網上搜到教程解決這個問題後開始輸入bash ee第二次安裝,但這時就一直不提示要設置郵箱,反而顯示郵箱帳號無效,後面的第11、12兩步單獨輸入發現也是每步都報錯,這時輸入tail /var/log/ee/ee.log查看安裝日誌發現也報錯,提示找不到文件或目錄,去了ee官網查看,本人非計算機專業並且英文很爛,不過大概也查到是因爲最近的EasyEngine的版本進行了大的更新,從v3升級到v4後連安裝日誌的目錄等都有變更。然後我就一直卡在ee安裝這裡進行不下去了。請博主抽空補充更新下這一塊的教程。謝謝!
補充:我很喜歡看文昭談古論今和江峰時刻,現在翻牆一般也都是在看著了。
@尋找真相 啊
好的,儘快檢查,謝謝反饋
@尋找真相 啊
您好,從昨天到今天,連續測試了多台伺服器,安裝沒有問題,應該沒有EE v3、v4版本差異的問題,因為按照本教程的安裝,命令就不是安裝的EE v4,而是目前的 EE v3.8.1,這個做代理已經足夠,沒有必要安裝EEv4。
你遇到的EE及SSL安裝不上,應該是其它原因,如:系統、網域解析、v2ray版本等,美博會在這二天寫一個安裝v2ray可能出問題的注意細節的文章,請您再參考。
@美博園 當時報錯是從這個命令開始的wget -qO ee rt.cx/ee && sudo bash ee,報錯指令就是常見的找不到這個命令,當時還奇怪系統不可能沒有安裝wget啊,去ee官網對照了下命令沒錯,後來單獨輸入bash ee才正常打開腳本了,可能是我直接用的默認的root用戶導致的吧。
我的VPS是用的Cloudcone家的,系統是裝自帶的Debian9.9和10。我看網上好多大佬的腳本教程的要求都是要求Debian9以上,我也以爲系統版本越新裝軟體時就越不容易出現由於依賴缺少導致的無法安裝問題。難道真和這有關!好多主機商自帶的系統模板好像都是被定製過的,無法用網上的一鍵腳本來安裝Linux官方的純淨版。
今天有空已經用這個https://github.com/wulabing/V2Ray_ws-tls_bash_onekey鏈接裏的一鍵腳本安裝好了,PC端體驗不錯。不過Android手機客戶端只有Android 9 裏的才能連的上,Android 7 和 8 的都無法鏈接。2個用戶量最大的客戶端app都是這樣,感覺這點很坑!
有空再按照博主的教程慢慢摸索。
@尋找真相 啊
您好,
建議不要用網上的一鍵腳本。教程中已有說明。
問題就在於你的系統是Debian9.9和10,當然就安裝不了EE,因為EE只適用於Debian8。
我們的方法在手機、電腦的各種系統都有測試,都沒有問題。
謝謝反饋
@美博園 強烈推薦一個朋友家的VPN!!!
V-P-N翻~牆
100元一年內,這周更新了伺服器,不限流量!
可以看高清youtube.
手機電腦平板都可以用!
加 QQ-----, 這家翻牆速度很快,價格便宜
@41---------
編註:把QQ號放在這裡有安全問題喲,刪除了。
@美博園 為了方便日後安裝其它的軟體,我選擇承擔一定的安全風險而繼續使用新版本的系統用一鍵腳本安裝V2ray。還是感謝博主的好心建議!
@尋找真相 啊
好的。
今明天會發布另外一個方法,已經調試好了:V2Ray + Caddy + HTTP/2 + WebSocket
到時也可參考。
@尋找真相 啊
新方法已經發布,使用的作業系統更多,目前最推薦的組合。請試用。
自建最強科學上網2:V2ray+Caddy+Tls+WebSocket - 美博園
@尋找真相 啊
先寫完了SSL加密問題及解決這一篇,請參考:
Let's Encrypt SSL 證書安裝不了的若干問題解決 - 美博園
本文也有細節修改,請參考
@尋找真相 啊
另文請參考:V2ray自建代理遇到的一些問題及解決 - 美博園
私以為LZ這種做法並不太好,只是架了一個網站,但實際上還是使用的12345這個連線埠用於v2ray通信啊。另外,tls也沒有啟用,這對於所謂的最強方案不太妥。
個人建議,把tls開啟,走443會好一些,當然速度上可能會有一些損耗。
另外,ee在debian9上是用docker安裝的,對於小記憶體的VPS,docker並不友好,樓主提到用ee是因為可以快速架設前端,並安裝Let』s Encrypt的證書並自動續期,但其實acme.sh腳本也可以生成證書並續期。
動手能力強的朋友,還是建議自己用apache+nginx+v2ray+ws+tls自己來做。
歡迎樓主交流
@seven
您好,
歡迎來到美博園討論。
v2ray是目前一個很好的平台,可以發揮各自的才智開發多種翻牆方式,當然這是大家都知道的了。這裡指的最強,是指v2ray,當然美博園測試的這種方法也包括在其中之一。
關於你提到的問題,美博園的思考是這樣的:
1、關於不使用 acme.sh 腳本
美博園的讀者群除了很多國內朋友,還有一群特別的朋友,如法輪功、民運等等,所以一直以來對安全要求的期許甚高,拿不準安全性的東西,能不用的就盡量不用。當年的ssr就是例子。
不使用acme.sh 腳本,是因為:
其一、這個acme.sh 腳本,是國內朋友開發的,美博園相信國內朋友有很高的技術水準,可以在技術上開發很多好東西,但是畢竟在國內有特殊環境的不確定性,如當公安、國安要挾時,安全性就難以持續穩定,所以,美博基於安全基本上不使用國內這樣的東西;
其二、據測其伺服器是架設在Google Cloud上的,國內的朋友使用時偶爾可能會出現問題,所以最好避免要通過代理來建代理。
國內有的朋友開發有一鍵v2ray腳本,有的其中過濾了一些海外敏感網站,對此美博園也是不會接受的。
2、關於apache+nginx+v2ray+ws+tls這個方法及EE的使用等
這也是一個很好的方法(apache+nginx+v2ray+ws+tls)。
美博園測試過v2ray多種方法,V2ray+mKCP 、V2ray+TLS 都有其明顯缺點,在對比測試現在的方法和apache+nginx+v2ray+ws+tls時,至少在測試時發現幾個問題:
其一、沒有美博園現在介紹的方法速度快,這一點你提到了,其實作為代理速度慢一點是可以接受的,這不主要;
其二、沒有美博園現在介紹的方法穩定,不穩定的原因卻可能很多:如:有時連不上伺服器,有時在不同的伺服器上安裝即使是同樣的配置文件,也有安裝成功,但就是無法使用apache+nginx+v2ray+ws+tls,後來發現與伺服器上其它程序佔用443連線埠有關,等等,這些對於新手來說,卻是很難處理的;
其三、美博園介紹的這個方法,對於個人建立自己或少數幾個朋友使用這個自建代理,用自己獨有的連線埠並無太多問題。在實際使用中,已經有多台伺服器在很長時間都一直穩定在運行。
其四、你說「私以為LZ這種做法並不太好,只是架了一個網站」。美博持保留意見。
採用ws通過nginx方案,與正常的https訪問其實是一致的,這樣的偽裝度可能仍是最高的,配置 Nginx 使用 SSL 證書,HTTPS 解密由 Nginx執行,伺服器端v2ray只需要接受明文 WebSocket 連接即可,因是自建,一般不會公開,就像是在真正實際訪問網站,沒有特徵信號就不易被國內GFW探測到。我們有些知名翻牆軟體,最大的問題就是有特徵信號。
其五、你說「ee在debian9上是用docker安裝的,對於小記憶體的VPS……」,
這個方面美博至今沒有發現問題,我們多台伺服器都是使用網上最小的VPS(1cpu512M),性能測試並沒有什麼問題,運行仍然高速,CPU佔用並不高,下載速度一般都可維持8~9M/s。當然這可能與vps伺服器位置和用戶所在地區有關。
其六、nginx與apache各有所長,都可使用,ee可以方便新手使用。
以上僅供參考,當然這不是說美博園介紹的這個方法就沒有缺點,也不是說這個方法永遠實用。在翻牆技術方面,美博歡迎您及朋友們提出更好的方案,更歡迎直接成文投稿,與牆內朋友分享技術。
非常感謝分享,已經正常上網。
@runzhen
謝謝
V2ray出來幾年了,你才寫出來。我都用很久了,人家中共都監測很久了。以前很關注美博園!可惜翻牆技術一直太舊!希望你們以後勤快點更新。現在v2ray偶爾還是會上不到!估計已經被檢測,新技術是用trojan項目搭建翻牆!還有http/3和TLS1.3,IPV6與CDN結合比較好。ZeroNet項目知道有沒有合適的改進腳本可以用。這些希望你們好好研究多寫搭建教程。各種系統如centos7,Ubuntu和docker和亞馬遜微軟谷歌雲服務搭建寫出詳細的教程。最好附上動態網之類的址導航,好讓大家知道翻牆幹什麼。
@快樂不起來
繼續努力!
如果網友有好的方法分享,也歡迎投稿,謝謝
@快樂不起來 看到「快樂不起來」的留言,不敢苟同「太舊」的說法,也來說幾句。V2ray我也用一段時間了,v2方法是多變的,以前多是v2結合TLS的方法,憑心而論,美博介紹的這個方法v2ray + websocket + web + nginx (EasyEngine),網上並不多見,看來美博是用心研究過一段時間的,有很多優點安全性易用性是很好的一個方法,而且美博的這個v2搭建教程是全網,算我孤陋寡聞了,是全網最仔細最具有可操作性的一個教程,很多注意點都毫無保留的寫出來了,對新手很有幫助,看得出來美博用心良苦。網上是有很多教程,但按照那些教程多數是無法搭建成功v2代理的,我自己就是多次失敗的才搭建好的,再後來我改用這個方法,一直穩定使用至今。如果「快樂不起來」不是使用美博的這個方法,建議試試。
@快樂不起來 、@Lilin
感謝各位的建議、理解和支持!我們會繼續努力。
美博園的宗旨是提供安全可靠的翻牆和安全技術,所以一直以來我們很少發布不太成熟的翻牆技術,也並不像很多網站一個技術分成很多篇文章來發布,那樣會讓翻牆的網友花比較多時間來瀏覽。以前我們重點在發布已經穩定、安全可靠的翻牆技術,對於這個部分我們會跟蹤進度和及時更新。對於有安全疑慮的,我們就沒有發布,這是我們討論的原則,如當時很熱門的SS,因知道作者在國內,我們網站就一直沒有推廣這個技術。
就V2Ray而言,V2Ray要分成不同系統、不同伺服器、不同方式搭建,我們當初的考量是那樣做沒有必要,早期測試V2Ray+tls,這是網上多數使用的方法,但這個畢竟是偽裝 HTTPS 連線,容易被探測。我們本文提供的這種V2Ray方法在眾多的V2Ray方法中已經是比較完善比較好的方法。
我們是測試相當長時間才發布的這個方法:v2ray + websocket + web + nginx (EasyEngine),之前到至今都有大陸網友一直在實用,所以我們對推出的這個方法比較有信心。而我們的這個方法就是讓翻牆就像是在瀏覽一個真正的https網站。trojan方法也是這個思路,非常類似。
關於「動態網之類的網址導航」,這個我們不會去做,美博園翻牆網主頁就有翻牆後要幹什麼的導航網址說明。
感謝「快樂不起來」的建議,我們會討論一下對於一些還不是太實用、還不確定安全性的的技術等,是不是也發布一些新消息?
畢竟都是業餘在做,時間有限,有時也有忙不過來更新不及時的狀況,請大家多多諒解,非常歡迎網友投稿分享好的翻牆方法,謝謝!