代理 由于最近使用 vps 连续被封禁,不知是否是因为切换到 SSR 的缘故?我从网络上看到很多关于 SSR 被封禁的情况,好像是由于墙不需要去特意破解什么加密,而是根据 SSR 某些特征可以大概率查封。对于我而言,我还是信服这种说法,因为在我切换到 SSR 之后不到三天我的两台服务器连续被封禁了,这让我不知所措。因为在这之前没去好好了解实际情况,我面对这种情况真的显得很无奈,好好地两台 VPS 居然都被封了,只好忍痛又买了一台。
发现 V2ray 在论坛上看到很多人也遇到过这种情况,很多都推荐使用 V2ray,新的协议,伪装程度高,各种优点。而且现在 SS 和 SSR 停止更新了,从 V2ray github 上来看,更新很频繁,而且功能也在不停地增加。 对于这个时候的我,其实已经不在乎速度了,更加在乎的是安全和长久,因为我只是用来查查资料,基本很少看视频,对于速度要求不高。当然现在已经搭建的这台代理速度还是可以的,油管的 1080 很流畅。而且好几个人在用。
方案 本身 v2ray 服务支持很多种方案,具体有多少我都忘了。有兴趣的可以去查查博客。这里我只介绍我正在使用方案,也是大家普遍认可而且安全比较高的方案 。
v2ray + nginx + websocket + tls
当前你首先必须拥有一台 VPS
,推荐肯定就是搬瓦工的 KVM
架构的了。安装请选择带有 BBR
的系统。BBR
是由 GOOGLE 提出的一个开源 TCP
拥塞控制的算法。这里有一篇文章 作了详细的介绍,有兴趣的可以看看。还是你必须拥有一个域名,这是必须的。如果没有,那你可以先关闭该页面,申请完再来看了,或者找一下其他的 v2ray 的解决方案了。 这套方案的思路就是利用 nginx 作为中转来做伪装。相比于 SSR 的直连,在 v2ray 客户端发出 ws 的请求到 nginx,然后利用 nginx 的代理直接转发到 v2ray 的服务上面。这样就可以将请求伪装成正常 ws 的请求 。
安装 (Centos7 系统) 安装 v2ray 我还是推荐一键脚本,这也是由官方维护的,所以我认为你没必要再去自己搞什么编译啥的,也没多大意义。目前还是能成功安全起来为主。以后有兴趣了再去搞搞也还行。执行下面的命令就可以了
bash <(curl -L -s https://install.direct/go.sh )
使用以下命令来控制 v2ray 服务
1 systemctl start|restart|stop|status v2ray
其配置文件放在 /etc/v2ray/config.json
,是一个 Json
文件,在你安装完之后会有一个初始化的 Json
文件,文件会提供三个必要的信息 IP
、端口(Port
)、id(UUID)
, 尤其是这个 UUID,很重要。客户端会使用到,必须保持和服务端一致。当然你可以自己生成所需要的 UUID,到这个网站 Online UUID Generator 生成就可以了。
执行 systemctl start v2ray
然后执行 systemctl status v2ray
之后,如果看到绿色的 active(running)
就说明启动成功了,这里就先将所有服务先安装好,配置在最后一块配置就行了。
安装 nginx 1 2 3 4 5 6 7 8 9 10 11 yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel wget http://nginx.org/download/nginx-1.14.1.tar.gz tar zxvf nginx-1.14.1.tar.gz cd nginx-1.14.1./configure --prefix=/usr/local /nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log /nginx/error.log --http-log-path=/var/log /nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio make && make install
五部 Nginx 就安装好了。最后加一下软连接
1 ln -s /usr/local /nginx/sbin/nginx /usr/bin/
安装证书 这里假设你已经拥有了域名,并且增加了 A 解析到该台 VPS。下面我们申请证书,证书过程也很简单。安装两个脚本便可以了。这里利用 Certbot 来申请。执行下面的命令
1 2 3 yum install epel-release yum install -y certbot curl https://get.acme.sh | sh
安裝成功后执行 source ~/.bashrc
以确保脚本所设置的命令別名生效。 如果安装报错,那么可能是因为系统缺少 acme.sh
所需要的依赖项, acme.sh
的依赖项主要是 netcat(nc)
, 我们通过以下命令来安装这些依赖,然后重新安装一遍
生成证书之前,请确保宿主机上的 80 端口没有被占用,否则会安装失败
~/.acme.sh/acme.sh –issue -d mydomain.me –standalone -k ec-256
-k
表示秘钥长度,后面的值可以是 ec-256
、ec-384
、2048、3072、4096、8192,带有 ec
表示生成的是 ECC
证书,沒有则是 RSA
证书。在安全性上 256 位的 ECC
证书等同于 3072 位的 RSA
证书。
Let’s Encrypt 的证书有效期只有 3 個月,因此需要 90 天至少要更新一次证书,acme.sh脚本会每 60 天自动更新证书,。也可以手动更新。
手动更新 ECC 证书,执行:
sudo ~/.acme.sh/acme.sh –renew -d mydomain.com –force –ecc
如果是 RSA 证书则执行:
sudo ~/.acme.sh/acme.sh –renew -d mydomain.com –force
配置 v2ray服务端配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 { "log" : { "access" : "/var/log/v2ray/access.log" , "error" : "/var/log/v2ray/error.log" , "loglevel" : "debug" }, "inbound" : { "listen" : "127.0.0.1" , "port" : ***, // 你的实际端口号 "protocol" : "vmess" , "settings" : { "clients" : [ { "id" : "alterId" : 64, "level" : 1 } ] }, "streamSettings" : { "network" : "ws" , "security" : "auto" , "wsSettings" : { "path" : "path" , // 自定义 "headers" : { "Host" : "yourDomain" // 你的域名地址 } } } }, "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" } ] } } }
nginx 配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 server { if ($request_method !~ ^(POST|GET)$) { return 444; } listen 80; server_name yourDomain; return 301 yourDomain; } upstream v2ray { server 127.0.0.1:端口; keepalive 2176; } map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 443 ssl http2 backlog=1024 so_keepalive=120s:60s:10 reuseport; charset utf-8; ssl_certificate path; ssl_certificate_key path; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; if ($request_method !~ ^(POST|GET)$) { return 444; } add_header X-Frame-Options DENY; add_header X-XSS-Protection "1; mode=block" ; add_header X-Content-Type-Options nosniff; add_header Strict-Transport-Security max-age=15 always; root /var/www/html; index index.html index.htm index.php ; server_name yourDomain; location /path { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade ; proxy_set_header Connection "upgrade" ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_requests 25600; keepalive_timeout 300 300; proxy_buffering off; proxy_buffer_size 8k; proxy_intercept_errors on; error_page 400 = "yourDomain" ; if ($http_host = "yourDomain" ) { proxy_pass http://127.0.0.1:端口; // 设置 v2ray 监听的地址 } } }
客户端推荐使用 v2rayN
, 这是一款 window 界面的产品,配置很简单。
补充
v2rayN
这款客户端无法代理 go get ,原因不详,wireshark
无法抓到包,本身的 shadowsocks
客户端正常
添加 shadowsocks 服务
1 2 3 4 5 6 7 8 9 10 11 "inboundDetour" : [ { "protocol" : "shadowsocks" , "port" : 10086, // 自行设置 "settings" : { "method" : "aes-256-cfb" , // 和客户端设置的加密方式一样,自行设置 "password" : "****" , // 密码设置 "udp" : false } } ],
最后 以上便是安装的全部过程,可能过程有疏漏,也可能你在配置的过程中最后访问不了,问题有很多,可能是版本,也可能是环境问题。遇到问题请自行 google。 还有千万不要 粘贴复制 粘贴复制 粘贴复制