V2Ray之TLS+WebSocket+Nginx+CDN翻牆方法

2020年03月11日 19:29 簡體 正體   評論»

如果你的VPS IP 被牆了,或者你直接連接VPS的速度不理想,可以試試本文介紹的方法。

本文以Cloudflare CDN為例配置,據傳,如果你不是使用 移動寬頻 的用戶,那麼使用 Cloudflare 中轉的速度相對來說是比較慢的,這個是因為線路的問題,無解。如果你使用的話,那麼 Cloudflare 的中轉節點可能會在香港,速度也許會不錯 (不完全保證)。

體驗了本文介紹的方法,如果速度不理想,可以考慮用國內的CDN替換Cloudflare,據說能體驗飛一般的速度,正好 已經支持 HTTP/2 了,又拍雲、七牛、阿里都不錯,騰訊的 h2 還在內測,百度不清楚。據傳國內CDN中轉法速度提升非常大,也非常穩定,毫無壓力,在重點 IP 段也無所畏懼。

會用 Cloudflare,其它的 CDN 應該也許也不會有問題。但有一點,如果是為了復活被牆IP,則只能用Cloudflare等國外的CDN。

本文以自建V2ray伺服器簡明教程 為基礎,V2ray基本安裝配置請參照此簡明教程。

本文介紹的方法不太複雜,但對小白來說也不是很容易,如果你懶得折騰,那就用我們提供的免費翻牆軟體吧:
安卓手機翻牆Chrome一鍵翻牆包火狐firefox一鍵翻牆包XX-Net禁聞版

或者也可以購買現成的搬瓦工服務(跟本庫無關哦,為支持我們,可考慮年付):
搬瓦工翻牆 Just My Socks

本文目錄

註冊一個域名

如果已經註冊有域名了可以跳過。 TLS 需要一個域名,域名有免費的和有付費的,如果你不捨得為一個域名每年花點錢,用個免費域名也可以,但總體來說付費的會優於免費的,我看到有網友因為用了免費域名,結果出現域名解析故障而翻牆失敗。所以,還是推薦買個便宜點的域名。關於域名註冊商,推薦namesilo ,這家域名商有不少便宜的域名選擇,比如.xyz域名,一年才0.99美元,很便宜,而且可選擇免費域名。為了方便,在本文中我就忽略如何註冊購買域名了。關於如何獲取域名,具體可搜索相關文章教程。

註冊好域名之後務必記得添加一個 A 記錄指向你的 VPS!

另外,為了避免主域名被封鎖,推薦先使用子域名,但本文以主域名為例!

以下假設註冊的域名為 mydomain.me,請將之替換成自己的域名。

域名添加到Cloudflare

確保在Cloudflare DNS 設置處啟用CDN,就是Proxy Status 那一列,那個金黃金黃的雲彩圖標要點亮,A記錄指向你的VPS IP地址。

另外,在 Cloudflare 的 SSL/TLS 設置中啟用 Flexible 模式,並關掉 TLS 1.3 。

大概這樣就可以了。等待一會兒,ping 域名試試看,如果ping 出的ip變成了 Cloudflare ip,那麼我們已經成功給我們的域名套上了Cloudflare CDN。

證書生成

我們採用最簡略的配置,VPS端無需自己生成證書,直接使用Cloudflare CDN 自動生成的證書。所以這一步你需要做的就是 do nothing. 這樣配置不但超簡易,而且配合Cloudflare SSL/TLS 的 Flexible 模式,比Full模式速度更快。

VPS 安裝配置Nginx

apt=get updateapt-get -y install nginx

然後替換/etc/nginx.conf為如下配置,此配置文件是通用配置,不管什麼域名都可以使用,直接下載覆蓋即可:

wget https://raw.githubusercontent.com/bannedbook/fanqiang/master/v2ss/server-cfg/nginx.conf -O -> /etc/nginx/nginx.conf

下面是nginx.conf的內容,為方便大家,製作了這個nginx通用配置文件並上傳到github,大家可以直接使用上面的命令下載覆蓋即可。

user www-data;worker_processes auto;pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;worker_rlimit_nofile  655350;events {	use epoll;	worker_connections 65536;}http {	sendfile on;	tcp_nopush on;	tcp_nodelay on;	keepalive_timeout 65;	types_hash_max_size 2048;	include /etc/nginx/mime.types;	default_type application/octet-stream;	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE	ssl_prefer_server_ciphers on;	access_log /var/log/nginx-access.log;	error_log /var/log/nginx-error.log;	gzip on;	server {		listen 80 default_server;		listen [::]:80 default_server;		root /var/www/html;			index index.html index.htm index.nginx-debian.html;			server_name _;			location / {			try_files $uri $uri/ =404;		}		    location /bannedbook { # 与 V2Ray 配置中的 path 保持一致	    proxy_redirect off;	    proxy_pass http://127.0.0.1:10000; #假设WebSocket监听在环回地址的10000端口上	    proxy_http_version 1.1;	    proxy_set_header Upgrade $http_upgrade;	    proxy_set_header Connection "upgrade";	    proxy_set_header Host $http_host;		    # Show realip in v2ray access.log	    proxy_set_header X-Real-IP $remote_addr;	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;	    }		}}

然後,測試nginx配置: nginx -t

重新載入配置: nginx -s reload

配置 V2Ray

V2Ray配置

{  "log": {    "loglevel": "warning",    "access": "/dev/null",    "error": "/dev/null"  },  "inbounds": [{    "listen":"127.0.0.1",    "port": 10000,    "protocol": "vmess",    "settings": {      "clients": [        {          "id": "de20d937-ca8f-af14-ea07-20b45447d371",          "level": 1,          "alterId": 64        }      ]    },	"streamSettings": {        "network": "ws",        "wsSettings": {        "path": "/bannedbook"        }    }  }],  "outbounds": [    {      "protocol": "freedom",      "settings": {},      "tag": "allowed"    },    {      "protocol": "blackhole",      "settings": {},      "tag": "blocked"    }  ],  "routing": {    "rules": [      {        "type": "field",        "ip": [          "geoip:private"        ],        "outboundTag": "blocked"      }    ]  }}

修改配置後記得測試配置:/usr/bin/v2ray/v2ray -test -config /etc/v2ray/config.json

重啟v2ray: service v2ray restart

相關教程

V2Ray客戶端配置

{  "inbounds": [    {      "port": 1080,      "listen": "127.0.0.1",      "protocol": "socks",      "sniffing": {        "enabled": true,        "destOverride": ["http", "tls"]      },      "settings": {        "auth": "noauth",        "udp": false      }    }  ],  "outbounds": [    {      "protocol": "vmess",      "settings": {        "vnext": [          {            "address": "mydomain.me",            "port": 443,            "users": [              {                "id": "de20d937-ca8f-af14-ea07-20b45447d371",                "alterId": 64              }            ]          }        ]      },      "streamSettings": {        "network": "ws",        "security": "tls",        "wsSettings": {          "path": "/bannedbook"        }      }    }  ]}

V2ray偽裝

這一步不是必須,只是為了隱藏和偽裝的更好。說是偽裝,其實我們安裝了nginx web伺服器,也就是已經安裝了一個真正的網站,試試用瀏覽器打開你的域名,會看到nginx的默認首頁。為了隱藏和偽裝的更逼真,你可以考慮弄一些英文網頁放到vps 的/var/www/html目錄下,當然,必須包括一個index.html , 這樣會使你的網站看起來更象一個真實的網站。

真實網站+加裝v2ray

更往前想一步,如果你已經有一個真正的網站,而網站域名沒有被牆,那麼完全可以利用本文介紹的方法,在原有的真實網站基礎上,開闢一個path,加裝V2ray用來翻牆。這就是完全以真實網站為掩護來翻牆了。

安卓翻牆-禁聞瀏覽器Windows翻牆:ChromeGo
AD:搬瓦工官方翻牆服務Just My Socks,不怕被牆

原文鏈接:V2Ray之TLS+WebSocket+Nginx+CDN配置方法

歡迎您發表評論: