重装 v2ray - WS + TLS + Web + CloudFlare
序
2023/8/30,今天翻墙服务器突然就没用了。
首先在 ping.pe 确认一下是不是我的服务器 IP 地址被墙了:
我是江苏电信网络,从图中可以看到,Jiangsu China Telecom
的丢包率是 15%
,还算正常。因此问题出在我的服务器或客户端上。
尝试了以下方案,都没有用:
- 更新服务器端、更新客户端
- 更换服务器端 v2ray 端口
- 重设 服务器时间(v2ray 要求服务器和客户端时间差绝对值不能超过 90 秒,参见 这里)
所以干脆重装一下 v2ray 吧。
根据 如何选择 v2ray 方案 考虑了一下,决定采用 Nginx
+ TLS
+ WS
。于是主要参考 V2Ray (WebSocket + TLS + Web + Cloudflare) 手动配置详细说明 - Eric 重装了一下 v2ray。
本文略去了:
- 服务器购买及 SSH 连接
- 域名购买注册
重装服务器系统为 Debian 10
首先更新一下系统,我的服务器系统是 CentOS 7.9.2009
,有点旧了。
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
我的服务器是在 RackNerd 买的,在 RackNerd 服务器管理界面进入 Control Panel
(登入Control Panel 的初始账号密码在购买服务器时发送到了注册邮箱),将服务器系统重置为 Debian 10
。
v2ray 安装前准备及安装
以下过程均是以 root
身份运行的。
最好不要这样,因为一旦手滑 rm -rf /*
就不好了。所以最好用非 root 用户,通过 sudo
执行 root 指令。
更新 apt、安装 curl
apt-get --allow-releaseinfo-change update
apt-get dist-upgrade
apt-get install curl -y
校正系统时间
v2ray 要求服务器和客户端时间差绝对值不能超过90 秒,参见 这里
timedatectl list-timezones | grep Shanghai
timedatectl set-timezone Asia/Shanghai
date -R
安装 ufw
apt install ufw
ufw enable
ufw allow 'OpenSSH'
安装 v2ray
通过 fhs-install-v2ray 安装 v2ray。
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
根据安装完成后的提示,顺便运行一下:
apt purge curl unzip
接下来的步骤我用 Xshell for home/school 作为 CLI,用 Bitvise 进行 SFTP 文件修改、传输。
配置 v2ray
配置 /usr/local/etc/v2ray/config.json
,内容如下
config.json
{
"log":{
"loglevel":"warning"
},
"routing":{
"domainStrategy":"AsIs",
"rules":[
{
"type":"field",
"ip":[
"geoip:private"
],
"outboundTag":"block"
}
]
},
"inbounds":[
{
"listen":"127.0.0.1",
"port":<端口>,
"protocol":"vmess",
"settings":{
"clients":[
{
"id":<uuid>,
"alterId":0
}
]
},
"streamSettings":{
"network":"ws",
"wsSettings":{
"path": <path>
}
}
}
],
"outbounds":[
{
"protocol":"freedom",
"tag":"direct"
},
{
"protocol":"blackhole",
"tag":"block"
}
]
}
其中:
<端口>
:自定<uuid>
:可通过 UUID 生成器 或 Online UUID Generator 生成<path>
:自定
<uuid>
和 <path>
记得用 英文引号
括起来。
CloudFlare 域名解析
CloudFlare 接管了域名解析之后,在 CloudFlare 添加以下两条 DNS 记录:
安装 Nginx 及其初始配置
CloudFlare 生成 TLS 证书、部署 Authenticated Origin Pulls
TLS 证书及私钥
CloudFlare 仪表盘
→ SSL/TLS
→ Origin Server
→ Create Certificate
因为「The private key data will not be stored at Cloudflare and will no longer be accessible once the creation is complete」,所以要保存好。
把证书和私钥都保存在 /etc/ssl/cloudflare
内。
Authenticated Origin Pulls
When you enable Authenticated Origin Pulls for a zone, all proxied traffic to your zone is authenticated at the origin web server. —— Zone-level authenticated origin pulls · Cloudflare SSL/TLS docs
也就是说,如果在 Nginx 服务器上设置了 Authenticated Origin Pulls
,就可以确保它只接受来自 Cloudflare 服务器的请求,防止任何其他人直接连接到 Nginx 服务器。
复制 authenticated_origin_pull_ca.pem
证书的内容,同样放在 /etc/ssl/cloudflare
内。
authenticated_origin_pull_ca.pem
-----BEGIN CERTIFICATE-----
MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNV
BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmln
aW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
cm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkx
MDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNV
BAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYD
VQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQD
ExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI
42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20e
ihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBw
hLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoY
QSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3
Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRn
aL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5
lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGR
PpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5Hh
CvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa
+4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMB
AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud
DgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REz
alfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1
QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3IS
zVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoX
VcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz
6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z
0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc
5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/
fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2j
bA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGm
iYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07F
AnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tM
fVQ6VpyjEXdiIXWUq/o=
-----END CERTIFICATE-----
Nginx 证书和密钥、反向代理的配置
参考 Nginx 证书和密钥、反向代理的配置 。
对于本文需要注意的是,我在上文把 CloudFlare 的证书都放在了 /etc/ssl/cloudflare
下,因此 ssl_certificate
、ssl_certificate_key
、ssl_client_certificate
需要对应修改。
后续步骤
后续步骤:
- 自启并启动相关服务
- TCP BBR
- v2rayN 客户端配置
- 优选 CloudFlare CDN 节点 IP
参考 V2Ray (WebSocket + TLS + Web + Cloudflare) 手动配置详细说明 - Eric