2020年3月11日星期三

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

如果你的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 update
apt-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用來翻牆。這就是完全以真實網站為掩護來翻牆了。

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



from 中共高層內幕 – 中國禁聞網 https://ift.tt/2Q7NWxz
via IFTTT

没有评论:

发表评论